在Tk和Python中,如何使Frame或Canvas随窗口调整大小?
我对Tk和打包(Packing)这个概念完全是新手,所以请多多包涵。这里是我的代码:
from Tkinter import *
class frm_main:
def __init__(self, parent):
self.frame = Frame(parent, bg="green") #green for testing
self.frame.pack(fill="both")
self.canvas = Canvas(self.frame, bg="black", width=1000, height=700)
self.canvas.pack(fill="both")
root = Tk()
main_frm = frm_main(root)
root.mainloop()
我尝试了几种不同的选项和测试,发现框架(frame)和画布(canvas)在水平方向上是固定的并且可以扩展,但在垂直方向上调整大小时却留下了很多空白空间。
我该如何让框架固定在窗口的四个边上,然后让画布固定在框架的四个边上呢?我还应该使用框架吗?
1 个回答
5
在调用 pack()
的时候,把 expand = 1
设置上,这样当容器大小改变时,里面的小部件就会自动调整。
self.frame.pack(fill = "both", expand = 1)
...
self.canvas.pack(fill = "both", expand = 1)
你可以用一个框架来把一组小部件放在一起,或者加个额外的边框,但在这个例子里,其实不需要框架。