私のルーチンは、tkinterのウィンドウにボタンを追加します。ある時点で、ウィンドウは実際の画面よりも大きくなり(高さが)、私はもはや底面のボタンにアクセスできません。python 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グリッドとして配置され、ウィンドウのオーバーロードに対する最初の反応は、フレームの列数を増やしてすべてのボタンの高さを減らすことです。すべての要件が満たされるまで、すべてのボタンを再生成しなければならない場合は、再び悪いことになります。最初のボタンが作成される前に、ジオメトリが可能かどうかをチェックするソリューションを手伝ってくれれば幸いです。ありがとう!
ボタンがなくなるとすぐにループを終了しますか? –
@BryanOakley:それは「最小目標」です。より良い:ループに入る前に、予想されるボタンの数がウィンドウのサイズを超えているかどうかをチェックし、それに応じて反応する(たとえば、ボタンのサイズを小さくするか、エラーを印刷する)ようにする。あなたの場合、 – offeltoffel
スクロールバーはオプションではありませんか? – PRMoureu