wxPython 4中的SetDefault()与之相反吗?

时间:2018-07-27 14:44:17

标签: wxpython wxpython-phoenix

在简单的GUI中,当用户填写了必要的文本字段时,我在按钮上使用了SetDefault(),因此很明显,如果用户现在按了回车键,则按钮将被按下。设置后,如何“撤消”默认设置? wxPython中的SetDefault()不带参数,因此我无法调用SetDefault(False),也找不到合适的API调用来反转默认状态。

在wxPython中应该如何撤消或撤消SetDefault()调用的操作?

1 个答案:

答案 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()