簡體   English   中英

Python使用Tkinter移動標簽和輸入框

[英]Python using Tkinter moving Labels and Entry boxes

我寫了一個使用Tkinter的代碼,但我不能安排標簽和輸入框的位置,有人可以幫助我。 我的代碼在下面,其打印輸出如圖1所示。 我希望它看起來像圖2。

import Tkinter

main_window = Tkinter.Tk()
main_window.geometry("320x400")
main_window.title("Address")

label = Tkinter.Label(main_window,text ="Name:")
label.pack()


nameentry = Tkinter.Entry(main_window) 
nameentry.pack()


label2 = Tkinter.Label(main_window, text= "Address:")
label2.pack()

addressentry = Tkinter.Entry(main_window)
addressentry.pack()

label3 = Tkinter.Label(main_window, text = "Phone Number:")
label3.pack()

numberentry = Tkinter.Entry(main_window)
numberentry.pack()

main_window.mainloop()

圖1

圖2

您顯然希望將東西布置在網格中,因此, gridpack更好。

您的布局有三行兩列。 標簽位於第0列(零)中,並且您希望它們固定在右上角(東北,表示為“ ne”)。 輸入字段進入第二列的列1(一)。

看起來像這樣(為清楚起見添加了額外的空格,不是必需的):

label.grid( row=0, column=0, sticky="ne")
label2.grid(row=1, column=0, sticky="ne")
label3.grid(row=2, column=0, sticky="ne")

nameentry.grid(   row=0, column=1, sticky="nsew")
addressentry.grid(row=1, column=1, sticky="nsew")
numberentry.grid( row=2, column=1, sticky="nsew")

最后一步是告訴tkinter如何處理它擁有的任何額外空間。 在您的情況下,您可能希望label列盡可能小,而輸入字段則盡可能大。 另外,該地址似乎是多行的(盡管您使用的是僅接受單行的Entry小部件)。

為此,我們要給中間行和右列一個正的權重,tkinter使用它來知道如何分配額外的空間:

main_window.grid_rowconfigure(1, weight=1)
main_window.grid_columnconfigure(1, weight=1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM