弹出关闭后,wxPython中的UI设计会冻结

时间:2014-06-19 17:13:08

标签: python wxpython

我正在使用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菜单,因为创建的所有菜单都会变灰。

0 个答案:

没有答案