これは簡単だと思いますが、そこには何も見つかりません。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] ボタンが有効になり、そうでない場合は無効にする必要があります。これを行う方法はありますか?
ありがとう!