【发布时间】:2018-11-30 01:05:42
【问题描述】:
我想为 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)
【问题讨论】:
-
框架会自动展开。您可以发布一些代码以便我们解决您的具体问题吗?
-
如果你使用
pack和/或grid,Tkinter 会自动执行此操作,并让 tkinter 决定窗口的大小。你能告诉我们一个minimal reproducible example来说明你遇到的问题吗? -
该代码还不够。我们需要知道
runScript做了什么,我们需要看到足够的代码来运行你的代码。您的代码中可能有一些东西阻止了窗口调整大小,但是如果没有看到 small 工作程序,就无法知道。 -
你去。如果你想要别的东西,请告诉我。我尝试将
pack()用于框架内的按钮,但这并没有增加窗口大小,所以我采取了这条路线,获取框架的高度并再次设置窗口大小。然而,这是一个 hack,我不想这样做。 -
设置窗口大小时,会阻止它自动调整大小。