我觉得这应该很简单,但我找不到任何东西。我有一个非常简单的对话框,有两个文本控件。然后,我使用CreateSeparatedButtonSizer方法创建一个OK / CANCEL按钮大小调整器。
问题是,我想尝试根据文本控件中条目的某些条件启用/禁用“确定”按钮。换句话说,在将有效条目输入文本控件之前,我希望禁用“确定”按钮。我似乎无法找到关于如何引用按钮的任何内容,我宁愿不手动创建按钮,以便对话框保持平台“不可知”。
小样本代码:
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()
所以,我想将一个方法绑定到文本控件,它检查输入是否有效。如果是,则启用“确定”按钮,如果不启用,则应禁用该按钮。有没有办法做到这一点?
谢谢!
答案 0 :(得分:4)
“确定”按钮的标识为wx.ID_OK
。如果您要在wx.FindWindowById(wx.ID_OK, self)
课程中找到它,可以尝试MyDialog
。
如果您尝试从MyDialog
类外部引用该按钮,则需要使用MyDialog
实例作为第二个参数。
恩。
dialog_instance = MyDialog()
ok_button = wx.FindWindowById(wx.ID_OK, dialog_instance)
以下是FindWindowById的一些文档 http://xoomer.virgilio.it/infinity77/wxPython/wxFunctions.html#FindWindowById