[英]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()
您顯然希望將東西布置在網格中,因此, grid
比pack
更好。
您的布局有三行兩列。 標簽位於第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.