【发布时间】:2021-04-03 17:47:26
【问题描述】:
我想知道如何创建与我指定的网格和填充空间对齐的框架。我很难掌握窗口内的框架方向。我可以制作所有的框架,但如果我打包,它们都在左边或在一条线上/在右边。我玩了这个并决定使用grid()。我设置了窗口几何形状,然后使用网格作为框架。但是,我的框架全部折叠到左上角,或者我的初始框架填满了整个空间,而另外两个则挤在边缘。我尝试使用 1024 和 768 的窗口几何形状,然后将我的第一帧的宽度和高度分配为 512 和 384。然后将接下来的两个设置为宽度为 512 和高度为 192。我还在其他文章中看到重量很重要,并且尝试了代码迭代来改变它,但没有成功。 Rowspan 和 columnspan 帮助我显示了背景颜色,以便我可以看到它们各自占用的空间。
不管怎样,代码如下:
class twinsplay:
def __init__(self):
#Window
self.window = Tk()
self.window.geometry('1024x768')
self.window.grid_rowconfigure(1, weight=1)
self.window.grid_columnconfigure(1, weight=1)
#window title
self.window.title('Live Feed')
#frames and labels
self.frame_left = Frame(self.window, background='magenta')
self.frame_left.grid(row=0, column=0, padx=5, pady=5, rowspan=3, columnspan=3, sticky=NSEW)
self.label_left = Label(self.frame_left, text = 'Weather Data', justify=LEFT)
self.label_left.grid(row=0,column=0, sticky=NSEW)
self.frame_tr = Frame(self.window, background='green')
self.frame_tr.grid(row=0, column=3, padx=5, pady=5, rowspan=3, columnspan=2, sticky=NSEW)
self.label_tr = Label(self.frame_tr, text = 'Solar Data', justify = RIGHT)
self.label_tr.grid(row=0, column=512, sticky=NSEW)
self.frame_br = Frame(self.window, background='yellow')
self.frame_br.grid(padx=5, pady=5, rowspan=2, columnspan=2, sticky=NSEW)
self.label_br = Label(self.frame_br, text = 'News', justify = RIGHT)
self.label_br.grid(row=0, column=512, sticky=NSEW)
#main
self.window.mainloop()
```
【问题讨论】:
-
空行/列的大小为
0- 所以使用column=512毫无意义。如果您必须移动对象,那么您可能必须在框架内使用grid_rowconfigure/grid_columnconfigure-self.frame_left.grid_columnconfigure(0, weight=1) -
我不明白你期望什么结果。也许画它(在任何图像绘制器中)并添加到问题中。
-
这能回答你的问题吗? How do I organize my tkinter appllication?
标签: python tkinter frame frames