繁体   English   中英

python Tkinter:如何不允许窗口大于屏幕大小

[英]python Tkinter: how to disallow a window growing bigger than screen size

我的例程在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网格放置,我对窗口超载的第一反应是增加框架中的列数,然后减小所有按钮的高度。 同样,如果我必须重新生成所有按钮,直到满足所有要求,那将是不好的。 如果您可以在创建第一个按钮之前为我提供一个检查几何形状是否可行的解决方案的帮助,那将非常好。 谢谢!

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

话虽如此,由于您知道自己的应用程序,因此可以解决这个问题。 唯一缺少的是知道一个按钮有多高。 您可以使用winfo_reqheightwinfo_reqwidth方法从winfo_reqheight获得该方法,这些方法返回按钮请求的高度和宽度。 然后,这只是数学问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM