我的例程将按钮添加到tkinter中的窗口。在某些时候,窗口变得比实际屏幕更大(高度),我无法再访问底部的按钮。
演示代码:
from Tkinter import *
n_buttons = 20 # <- change this as you wish for testing the code
def generate_buttons(n):
for i in range(n):
button = Button(myframe, text="Button Clone", height=4)
button.grid(row=i)
root = Tk()
myframe = Frame(root)
myframe.pack()
generate_buttons(n=n_buttons)
root.mainloop()
作为第一次尝试,我将以下代码放入循环中:
if root.winfo_height() > root.winfo_screenheight():
print("I'm full!")
break
但是1)它不起作用2)我更喜欢一个解决方案,检查窗口是否可以在创建之前使用另一个按钮,这样我就不必销毁它然后。
在我的真实代码中,按钮放置为2D网格,我对窗口重载的第一反应是增加框架中的列数,然后减小所有按钮的高度。同样,如果必须重新生成所有按钮,直到满足所有要求,那将是很糟糕的。如果您能够在创建第一个按钮之前帮助我检查几何是否可行,那将会很棒。谢谢!
答案 0 :(得分:1)
由于变量太多,很难知道小部件是否合适。例如,填充,边距,屏幕上的其他小部件等
话虽如此,因为你知道自己的应用程序,你可以解释它。唯一缺少的就是知道按钮的高度。您可以使用winfo_reqheight
和winfo_reqwidth
方法从tkinter获取该方法,这些方法返回按钮请求的高度和宽度。然后,这只是一个数学问题。