1

私はTkinterを学んでいます.3つのフレームをフレームの一部にする小さなコードを書きました。このコードを 1 行ずつ実行すると、期待どおりに動作します。ただし、プログラム全体として実行すると、フレーム 1 とフレーム 2 の間に多くの空白があります。

from Tkinter import *
tk = Tk()
tk.geometry("")
main_frame = Frame(tk)
main_frame.grid(row=0)
frame1 = Frame(main_frame, bg="blue", width=200, height=400, borderwidth =1)
frame1.grid(row=0, column=0)
frame2 = Frame(main_frame, bg="green", width=800, height=400)
frame2.grid(row=0, column=1)
frame3 = Frame(main_frame, bg="orange", width=1000, height=100)
frame3.grid(row =1)
tk.mainloop()

その他の問題は、ウィンドウを最大化して元のサイズに戻すか、このメイン ウィンドウを拡大する場合です。フレームがオーバーラップし、いくつかのゴースト イメージが表示されます。誰かがこの奇妙な振る舞いを説明できますか?

よろしく

4

1 に答える 1

4

問題は、グリッド化の方法にあります。デフォルトでは、すべてのオブジェクトが1つのブロックにグリッド化されます。つまり、グリッドは次のようになります。

 -------------------------------
 |    frame 1     |  frame 2   |
 -------------------------------
 |    frame 3     |  nothing   |
 -------------------------------

この場合、非常に大きいためframe1、座っている領域が拡張されて収容されframe3ます。frame3ここでの回避策は、グリッド上の複数の列にまたがることがcolumnspanできるようにキーワードを指定することです。frame3

frame3.grid(row=1,column=0,columnspan=2)
于 2012-07-11T14:50:51.123 に答える