2

これは簡単だと思いますが、そこには何も見つかりません。2 つのテキスト コントロールを備えた非常に単純なダイアログがあります。次に、CreateSeparatedButtonSizer メソッドを使用して、OK/CANCEL ボタンのサイザーを作成します。

問題は、テキスト コントロールのエントリのいくつかの基準に基づいて、[OK] ボタンを有効/無効にしたいということです。つまり、有効なエントリがテキスト コントロールに入力されるまで、[OK] ボタンを無効にしたいのです。ボタンを参照する方法については何も見つからないようです。ダイアログがプラットフォームに「依存しない」ままになるように、手動でボタンを作成したくありません。

小さなサンプル コード:

class MyDialog(wx.Dialog):
    def __init__(self, parent, title):
        wx.Dialog.__init__(self, parent=parent, title=title)

        # Grid sizer for text controls and labels:
        grid = wx.GridBagSizer(2,2)

        # Add the input fields:
        grid.Add(wx.StaticText(self, label="Field 1: "),pos=(0,0))
        self.fld1 = wx.TextCtrl(self, value="", size=(70,-1))
        grid.Add(self.fld1, pos=(0,1))
        grid.Add(wx.StaticText(self, label="Field 2: "),pos=(1,0))
        self.fld2 = wx.TextCtrl(self, value="", size=(70,-1))
        grid.Add(self.fld2, pos=(1,1))

        # Buttonsizer:
        btns = self.CreateSeparatedButtonSizer(wx.OK|wx.CANCEL)

        # Lay it all out:
        mainSizer = wx.BoxSizer(wx.VERTICAL)
        mainSizer.Add(grid, 1, wx.ALL|wx.EXPAND)
        mainSizer.Add(btns, 0, wx.ALL|wx.EXPAND)
        self.SetSizer(mainSizer)
        self.Fit()

そこで、入力が有効かどうかをチェックするメソッドをテキスト コントロールにバインドしたいと思います。そうである場合は、[OK] ボタンが有効になり、そうでない場合は無効にする必要があります。これを行う方法はありますか?

ありがとう!

4

1 に答える 1