Python使用Tkinter移动标签和输入框

时间:2016-01-30 00:45:14

标签: python tkinter

我写了一个使用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()

Figure1

Figure2

1 个答案:

答案 0 :(得分:0)

您显然希望在网格中布置内容,因此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如何处理它拥有的任何额外空间。在您的情况下,您可能希望标签列尽可能小,输入字段尽可能大。此外,地址似乎是多行的(尽管您使用的Entry小部件只接受一行)。

为了实现这一目标,我们希望给中间行和右列赋予正权重,tkinter用它来知道如何分配额外空间:

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