python Tkinter:如何禁止窗口大于屏幕大小

时间:2017-07-08 13:26:06

标签: python tkinter widget

我的例程将按钮添加到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网格,我对窗口重载的第一反应是增加框架中的列数,然后减小所有按钮的高度。同样,如果必须重新生成所有按钮,直到满足所有要求,那将是很糟糕的。如果您能够在创建第一个按钮之前帮助我检查几何是否可行,那将会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

由于变量太多,很难知道小部件是否合适。例如,填充,边距,屏幕上的其他小部件等

话虽如此,因为你知道自己的应用程序,你可以解释它。唯一缺少的就是知道按钮的高度。您可以使用winfo_reqheightwinfo_reqwidth方法从tkinter获取该方法,这些方法返回按钮请求的高度和宽度。然后,这只是一个数学问题。