我正在使用SW
设计wxPython
。我创建了一个以Menu
为基线的完整界面。现在我开始将动作与每个菜单相关联。
我已将界面定义为:
class MySettingsDialog(x.Dialog):
def __init__(self, Choices):
super(MySettingsDialog, self).__init__(None)
self.Choices = Choices
self.SettingDlg(self.Choices)
self.SetTitle("Settings")
def SettingDlg(self, Choices):
self.Choices = Choices
panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
Adb_box = wx.BoxSizer(wx.HORIZONTAL)
Adb_text = wx.StaticText(panel, label = str(self.Choices[0]))
....
vbox.Add(panel,wx.ALIGN_CENTER|wx.TOP, border = 4) #<----add pan to main sizer
opt_box = wx.BoxSizer(wx.HORIZONTAL)
opt_close = wx.Button(self, wx.ID_CANCEL)
opt_close.Bind(wx.EVT_BUTTON, self.OnCloseSettingsDlg)
....
opt_box.Add(opt_close, flag = wx.LEFT, border = 5)
vbox.Add(opt_box, flag = wx.ALIGN_CENTER|wx.BOTTOM, border = 4)
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([Adb_text, Adb_info, monkey_text, monkey_info,
logcat_text, logcat_info, res_text, res_info,
scripts_text, scripts_info])
panel.SetSizer(sizer)
self.SetSizer(vbox)
def OnCloseSettingsDlg(self, e):
self.Destroy()
def OnOkSettingsDlg(self, e):
pass
class UserInterface(wx.Frame):
def __init__(self, parent, id, title):
....
self.initialize()
def initialize(self):
menubar = wx.Menubar()
...
SettingsMenu = wx.MenuItem(fileMenu, wx.ID_ANY,'&Settings\tCTRL+X')
fileMenu.Append(SettingsMenu)
self.Bind(x.EVT_MENU, self.OnSetting, SettingMenu)
....
self.SetMenuBar(menubar)
self.Show(True)
....
def OnSetting(self, e):
myd = MySettingsDialog(['Adb Path', 'Monkeyrunner path', 'logcat path', 'results path', 'scripts path'])
myd.ShowModal()
myd.Destroy()
if __name__ == '__main__':
app = wx.App()
frame.UserInterface(None, -1, 'OneTouchAutomation')
app.MainLoop()
当我想要保留MySettingsDialog
课程创建的对话框时,会出现我的问题。我使用self.Destroy()
on OnCloseSettingsDlg
来执行此操作,它似乎会影响Application
菜单,因为创建的所有菜单都会变灰。