wxPython弹出窗口关闭后冻结界面设计

2024-09-29 20:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用wxPython设计一个SW。我已经创建了一个以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菜单,因为创建的所有菜单都会变成灰色。你知道吗


Tags: pathtextselfinfoboxdef菜单choices

热门问题