簡體   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