何时使用 wx.App 和 PySimpleApp

chi*_*dan 5 python wxpython

我不知道何时何地使用 wx.App 和 PySimpleApp

就像两个代码:

#!/usr/bin/env python

import wx
import wx.py.images as images

class ToolbarFrame(wx.Frame):

    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Toolbars',
                size=(300, 200))
        panel = wx.Panel(self)
        panel.SetBackgroundColour('White')
class App(wx.App):
    def OnInit(self):
        frame = ToolbarFrame(parent=None, id=-1)
        frame.Show()
        return True
if __name__ == '__main__':
    app = App()

    app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

和这段代码:

#!/usr/bin/env python

import wx

class ToolbarFrame(wx.Frame):

    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, 'Toolbars',
                size=(300, 200))
        panel = wx.Panel(self)
        panel.SetBackgroundColour('White')

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = ToolbarFrame(parent=None, id=-1)
    frame.Show()
    app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?其他小部件的另一个问题是在 wx.Frame() 或 wx.App() 之类的按钮。

Ros*_*nko 4

如今,这两个类别之间几乎没有区别。

当 wxPython 项目启动时,wx.PySimpleAppwx.App不同的行为(后者更底层并且没有定义默认OnInit方法,而PySimpleApp类可以只是实例化并用来完成工作)。此外,某些 wxPython 版本具有wx.App默认OnInit定义的类,但默认情况下不会调用wx.InitAllImageHandlers

现在wx.PySimpleApp保留在 API 中主要是出于兼容性的原因,并且两个类之间没有区别。