使用Grid Tkinter GUI,还有其他正确的做法来实现这一目标

时间:2018-06-07 13:56:04

标签: python python-3.x tkinter tk

我在GUI Tk中正在做UI。我是那个被标记的那个 "的" :我正在使用columnspan但它也没有延伸到UI框架结束。 "的红色" :在这里,我不知道为什么这里的UI是中间对齐的。

我可能会做一些简单的错误,我试图找到解决方案。 和 除了提供行代码和列号之外,还有其他方法,如下面的代码所示,如​​果还有其他方法可以实现它

Code =tk.Label(self.page2,text="Code ").grid(row=1,rowspan=2,pady=(10,10),sticky="NW")
CodeTextbox= Entry(self.page2).grid(row=1,column= 2,rowspan=2,columnspan=100,pady=(10,10),sticky="NW" )
SerialNumber=tk.Label(self.page2,text=" Serial Number").grid(row=3,rowspan=2,pady=(10,10),sticky="NW" )
SerialNumberTextBox=Entry(self.page2).grid(row=3,column=2,rowspan=2,columnspan=100,pady=(10,10),sticky="NW" )
Model=tk.Label(self.page2,text="Model ").grid(row=5,rowspan=2,pady=(10,10),sticky="NW" )
ModelTextbox=Entry(self.page2).grid(row=5,column=2,rowspan=2,columnspan=100,pady=(10,10),sticky="NW" )
KCheckBox=Checkbutton(self.page2,text="").grid(row=7,column=1,rowspan=2,columnspan=2,pady=(10,10),sticky="W")
FCheckBox = Checkbutton(self.page2, text="F").grid(row=7, column=3,rowspan=2,columnspan=2, pady=(10, 10), sticky="W")
OW=tk.Label(self.page2,text="OW").grid(row=9,column=1,rowspan=2,columnspan=2,pady=(10,10),sticky="NW" )
OWSupported=Checkbutton(self.page2,text="Supported").grid(row=9,column=3,rowspan=2,columnspan=2,pady=(10,10),sticky="W")
OWNOTSupported=Checkbutton(self.page2,text="NOT Supported").grid(row=9,column=5,rowspan=2,columnspan=2,pady=(10,10),sticky="W")

Image

1 个答案:

答案 0 :(得分:1)

您的所有列都没有任何与之相关的权重,因此它们都会尽可能小。即使您执行columnspan=100,第6-100列的宽度也都为零。根据经验,您应始终为至少一行和一列提供非零宽度,以便使用GUI中的全部空间。

此外,您不是要求条目小部件“粘贴”到右侧。因此,即使它们所在的列扩展了GUI的整个宽度,条目小部件也不会扩展,因为您还没有告诉它们。

最后,我强烈建议您将窗口小部件创建与窗口小部件布局分开,并将所有布局代码组合在一起,以便可以将所有布局选项视为一个组。你现在这样做的方式,变量是无用的,因为它们都被设置为None,因为那是.grid(...)返回的。