python - 自动调整 tkinter 窗口大小以适应所有小部件
问题描述
我想为主 tkinter 窗口设置动态大小,这样当您添加新小部件时,您不必更改窗口的大小。相反,主窗口将考虑该小部件的大小并自动增加其高度/宽度以适应该窗口中的小部件。
masterWindow = Tk()
#Main Window min width
self.window_width = screen_width * .01
self.window_height = screen_height * .04
#Window startst in center of screen
self.window_start_x = (screen_width/2)
self.window_start_y = (screen_height/2)
masterWindow.geometry("%dx%d+%d+%d" % (self.window_width, self.window_height, self.window_start_x, self.window_start_y))
self.buttonsFrame.pack(side = TOP)
button_width = 13
button_height = 2
#A simple dict that stores script name strings
for script in SCRIPTS.keys():
#Remove script extension
script_name = script.split(".")[0]
button_width = 13
button_height = 2
BUTTONS[script] = Button(self.buttonsFrame, text = script, width = button_width, height = button_height, justify = LEFT, wraplength = 100, command = lambda s = script: self.runScript(s))
BUTTONS[script].grid(row = self.row, column = self.col)
self.update()
#Increment row and col and set new window size
if self.col == 2:
self.col = 0
self.row += 1
reached_max_width = True
else:
self.col += 1
if not reached_max_width:
self.window_width += button_width * 13
self.window_height = self.buttonsFrame.winfo_height() * (self.row*3)
masterWindow.geometry("%dx%d" % (self.window_width, self.window_height))
def runScript(self, script):
print(script)
解决方案
您正在使用这行代码将窗口显式设置为特定大小:
masterWindow.geometry("%dx%d" % (self.window_width, self.window_height))
因为您正在这样做,所以即使您添加小部件,tkinter 也会将窗口保持在该大小。如果您希望它自动调整大小,则需要删除该行代码。
此外,如果用户调整窗口大小,tkinter 将尝试采用该大小。如果您希望它在添加新小部件时自动调整大小,您需要删除窗口大小以便 tkinter 可以计算它。你可以通过调用来做到这一点masterWindow.geometry("")
。
推荐阅读
- c - 指针如何在以下代码块中工作?
- node.js - 从节点服务器到mysql数据库的多个连接,如何修复
- r - 在 rmarkdown 中插入内联数学是否有任何快捷方式?
- google-sheets - 在谷歌表中的一系列数字中查找
- sql - 如何在 SQL 数据透视表中使用通配符
- asp.net-core - Asp.Net Core 应用程序只监听 Ubuntu 上的 5000 端口
- javascript - redux 状态更改时组件不更新
- netsuite - NetSuite Advanced Approval 电子邮件附属问题
- aframe - 如何在 A-Frame 上放置 HTML 元素
- jquery - 如何更改克隆事件的参数