【发布时间】:2014-03-22 00:04:42
【问题描述】:
我正在创建一个 wx.Dialog 子类,我对对话框的 DefaultItem 属性应该如何工作感到有些困惑。我在 OS X 上运行。我整理了这个简短的示例:
import wx
class DialogTest(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent)
# text_entry = wx.TextCtrl(self, wx.NewId(), '')
button_sizer = wx.StdDialogButtonSizer()
ok_button = wx.Button(self, wx.ID_OK, 'OK')
button_sizer.SetAffirmativeButton(ok_button)
self.SetDefaultItem(ok_button)
cancel_button = wx.Button(self, wx.ID_CANCEL, 'Cancel')
button_sizer.SetCancelButton(cancel_button)
button_sizer.Realize()
outer_sizer = wx.BoxSizer(wx.VERTICAL)
# outer_sizer.Add(text_entry)
outer_sizer.Add((100, 100))
outer_sizer.Add(button_sizer, flag=wx.ALIGN_RIGHT | wx.BOTTOM, border=6)
self.SetSizer(outer_sizer)
outer_sizer.Fit(self)
if __name__ == '__main__':
app = wx.App(False)
DialogTest(None).ShowModal()
app.MainLoop()
这将显示一个带有“确定”和“取消”按钮的简单对话框。如果您取消注释两个已注释掉的行,还会有一个文本框。我有两个问题:
如果我取消对 TextCtrl 行的注释,那么我可以通过按 Return 来激活 OK 按钮。但是,如果这些行被注释掉,按 Return 不会“单击”确定。 (我尝试先在窗口内单击,以确保这不是某种焦点问题,但这并没有改变任何东西。)为什么我不能在没有文本字段的情况下使用 Return 来点击 OK 按钮? (无论文本字段是否存在,点击 Esc 都会激活取消按钮。)
为什么“确定”按钮没有脉动的蓝色“默认按钮”外观?它应该看起来像这样:
【问题讨论】:
-
包含 TextCtrl: 1. Return 点击 OK with self.SetDefaultItem(ok_button)。 2.返回NOT点击ok without self.SetDefaultItem(ok_button)。使用 python 2.7 + wxPython3.0 在 win7 上测试似乎是 OSX 的一个狡猾的实现