我希望主要的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决定窗口的大小。您可以展示一个 [mcve] 来说明问题所在吗? - Bryan OakleyrunScript
做了什么,并且需要看到足够的代码来运行你的代码。你的代码中可能有一些东西阻止了窗口的调整大小,但是如果没有看到一个小的可工作程序,就无法知道原因。 - Bryan Oakleypack()
来调整按钮大小,但是这并没有增加窗口的大小,所以我采用了另一种方法,即获取框架的高度并再次设置窗口大小。然而,这是一个hack,我不想这样做。 - E. Oregelscreen_width
和screen_height
。此外,您使用了self
但是您还没有定义一个类。还有许多其他问题。 - Bryan Oakley