1

tkSimpleDialog.Dialog から派生したクラスを作成しています。

body(self, master) メソッドを実装しました。ここで、いくつかのウィジェット (ボタン、ラベル) を作成し、それらを grid() を使用してレイアウトします。

グリッド レイアウトを拡大するように設定しましたが、ウィンドウ全体に表示されることはありません。さらに、ウィンドウのサイズを変更すると、ウィジェットは所定の位置に留まり、移動しません。

初期レイアウトは次のとおりです。

初期レイアウト

ウィンドウのサイズを変更すると、次のようになります。

リサイズ後

これが私のコードです:

import Tkinter
import tkSimpleDialog

class Test(tkSimpleDialog.Dialog):

    # ########################################
    def __init__(self, parent):

    tkSimpleDialog.Dialog.__init__(self, parent, "?")

    # ########################################
    def body(self, master):

        Tkinter.Label(master, text="Hello").grid(row=0, column=0, columnspan=2, sticky="nsew")
        Tkinter.Button(master, text="ONE").grid(row=1, column=0, sticky="nsew")
        Tkinter.Button(master, text="TWO").grid(row=1, column=1, sticky="nsew")

        master.columnconfigure(0, weight=1)
        master.columnconfigure(1, weight=1)
        master.rowconfigure(0, weight=1)
        master.rowconfigure(1, weight=1)

        self.resizable(height=True, width=True)

if __name__ == "__main__":

    Test(Tkinter.Tk("test"))

望ましい動作は次のとおりです。ボタン ONE と TWO はウィンドウいっぱいに引き伸ばされます。なにか提案を?

ありがとう!

4

1 に答える 1

1

これは Dialog クラスのバグのようです。ダイアログの主要部分をパックするコードでは、次のようにします。

body.pack(padx=5, pady=5)

expandor属性が含まれていないことに注意してくださいfill。そのため、親の余分なスペースを埋めるために本体が成長することはありません。

于 2013-08-23T01:08:07.960 に答える