在简单的GUI中,当用户填写了必要的文本字段时,我在按钮上使用了SetDefault()
,因此很明显,如果用户现在按了回车键,则按钮将被按下。设置后,如何“撤消”默认设置? wxPython中的SetDefault()
不带参数,因此我无法调用SetDefault(False)
,也找不到合适的API调用来反转默认状态。
在wxPython中应该如何撤消或撤消SetDefault()
调用的操作?
答案 0 :(得分:0)
正如我现在所了解的,解决方案是在按钮上使用Enable()
和Disable()
。我试图通过“撤消” SetDefault()
完成的工作实际上是Disable()
所做的。现在是工作代码的精简版:
...
self.login.Bind(wx.EVT_TEXT, self.on_text)
self.password.Bind(wx.EVT_TEXT, self.on_text)
....
self.cancel_button = wx.Button(panel, wx.ID_ANY, "Cancel")
self.cancel_button.Bind(wx.EVT_KEY_DOWN, self.on_escape)
self.ok_button = wx.Button(panel, wx.ID_ANY, "OK")
self.ok_button.Bind(wx.EVT_KEY_DOWN, self.on_ok_enter_key)
self.ok_button.SetDefault()
self.ok_button.Disable()
....
def on_text(self, event):
if self.login.GetValue() and self.password.GetValue():
self.ok_button.Enable()
else:
self.ok_button.Disable()