[英]How to explicitly resize frames in tkinter?
所以我目前正在编写一段代码,该代码稍后将集成到其他东西中以充当设置配置器。 目前,我想要一个 window,如下所示:
其中每个彩色框都是一个框架。 此 window不可调整大小,始终为 480x720 像素。 因此,我希望我使用的 3 个帧,侧边栏(黄色)、容器(蓝色)和静态(红色)始终保持相同的大小,并以大致相同的比率填充 window,如上图所示(不需要精确的)。
此 window 的代码如下
self.window = tk.Tk()
self.windowHeight = 480
self.windowLength = 720
self.windowDimensions = str(self.windowLength)+"x"+str(self.windowHeight) #make diemnsions string; dimensions are set as a single string
self.window.geometry(self.windowDimensions)
self.window.resizable(width=False, height=False)
self.container = tk.Frame(self.window, relief="sunken", borderwidth=2) #instantiate new window
self.sideBar = tk.Frame(self.window, relief="sunken", borderwidth=2)
self.static = tk.Frame(self.window, relief="sunken", borderwidth=2)
self.sideBar.grid_propagate(False)
self.sideBar.grid(row=0, column=0)
self.container.grid(row=0,column=1)
self.static.grid(row=5, column=1)
self.configuratorObject = configuratorObject
audioButton = tk.Button(self.sideBar, text="Audio Page", command=lambda: self.raisePage("audioPage"))
colourButton = tk.Button(self.sideBar, text="Colours", command=lambda: self.raisePage("coloursPage"))
saveButton = tk.Button(self.static, text = "Save", state="disabled")
applyButton = tk.Button(self.static, text = "Apply", state="disabled")
audioButton.pack()
colourButton.pack()
saveButton.pack()
applyButton.pack()
我试图改变网格的height
和width
参数,但它们似乎真的没有做任何事情。 那么我怎么能明确定义框架的布局和大小呢?
任何帮助表示赞赏
在你写的评论中
如果有办法让 tkinter 做到这一点,那就太好了
这绝对是首选方式,而不是强制小部件成为特定大小。
我们将从使用pack
而不是grid
开始这三个帧。 对于这样的基本布局,它需要的代码行数比grid
少。
self.sideBar.pack(side="left", fill="y")
self.static.pack(side="bottom", fill="x")
self.container.pack(side="top", fill="both", expand=True)
接下来,添加左侧的按钮。 这将导致左框架的宽度缩小以适合按钮。 因为我们使用了fill="y"
,所以高度将被强制保持为 window 的全高。
audioButton.pack(side="top", fill="x")
colourButton.pack(side="top", fill="x")
最后,在底部添加按钮。 您的原始代码显示它们从上到下堆叠,但您的插图将它们显示在一个水平行中。 此示例符合插图。
applyButton.pack(side="right", padx=10)
saveButton.pack(side="right", padx=10)
这样,我们最终得到一个 window,如下所示,当您调整 window 的大小时,比例和方向保持完全相同:
注意:您也可以使用grid
来执行此操作,但需要多几行代码才能将权重应用于行和列。 当布局不自然地适合网格时,我个人更喜欢pack
,因为它需要更少的代码行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.