TKinter Python GUI对齐
我的GUI有以下代码:TKinter Python GUI对齐,python,user-interface,tkinter,Python,User Interface,Tkinter,我的GUI有以下代码: root = Tk() draft = Frame(root) draft.grid() root.title("test") var = StringVar() emailLabel = Label(draft, text="E-Mail:") emailLabel.grid(row = 0, column = 0) email = Entry(draft, justify=LEFT) email.grid(row = 0, column = 1) email.ins
root = Tk()
draft = Frame(root)
draft.grid()
root.title("test")
var = StringVar()
emailLabel = Label(draft, text="E-Mail:")
emailLabel.grid(row = 0, column = 0)
email = Entry(draft, justify=LEFT)
email.grid(row = 0, column = 1)
email.insert(0, "E-Mail")
passLabel = Label(draft, text="Pass:")
passLabel.grid(row = 1, column = 0)
password = Entry(draft, justify=LEFT, show="*")
password.grid(row = 1, column = 1)
password.insert(0, "Password")
start = Button(draft, text = "Start")
start.grid(row = 2, column = 0)
stop = Button(draft, text = "Stop")
stop.grid(row = 2, column = 1)
status = Text(draft)
status.grid(row = 3)
status.insert(INSERT, "TESTING")
然而,它并没有按照我想要的方式排列。我希望标签和文本框向左对齐,而不是向右对齐,状态文本框占据底部的整个大小(或多或少是一个日志)
以下是一个屏幕截图:
要使
文本
小部件跨越多列,请使用columnspan
参数:
status.grid(row=3, columnspan=2)
此外,您可以使用网格
方法中的sticky
参数使小部件占据尽可能多的空间。在每次网格调用中使用此选项:
widget.grid(..., sticky=N+W+E+S)
如果你想让标签更小,你必须重新考虑一下你的布局
(请注意:不建议从tkinter导入*
。导入tkinter作为tk
是首选。)我同意不喜欢导入*
。。。但有趣的是,几乎所有的pytk教程都是这样做的……是的,我不知道他们这样做是否是为了避免所有那些tk.Bla
的事情,使事情更可读,但是在模块名称空间中有大约190个名称并没有多大帮助:SThanks!有没有办法使网格中的每一行不必与上面的行对齐?嗯,这不是网格的工作方式。。。正如我所说,您可以使用更多的列和列跨度,或者完全切换几何体管理器,即pack
。不过我不知道怎么用这个。