仅展示一个框架时wx.App的作用是什么

1 投票
3 回答
740 浏览
提问于 2025-04-17 10:06

wx.App 类有什么用呢?除了文档上说的那些,为什么不直接创建一个窗口,然后用 .Show(True) 显示它呢?

什么时候应该使用 wx.App 类?或者说,为什么不直接创建一个窗口然后显示它呢?

3 个回答

0

当你需要在你的应用程序中添加一些额外功能时,创建一个 wx.App 的子类是一个合理的做法。比如说,你可能需要在启动主程序之前,先连接到数据库、通过网络建立连接,或者加载一些外部数据或文件。

class MyApp(wx.App):
    def OnInit(self):
        # Do some work here
        return True
    def __init__(self):
        main_frame = MyFrame(*args, **kwargs)
        main_frame.Show()
    def OnExit(self):
        # Clean up and close the resources from the OnInit() method
2

wx.App在你的应用程序背后做了很多事情,让它能够正常运行。它负责主循环,这个循环就是等待用户的操作,然后做出相应的反应。你必须要有这个主循环。正如FogleBird提到的那样。另外,你绝对不应该有多个主循环。如果你这样做,会导致一些奇怪的问题,甚至可能根本就无法正常工作。

4

必须先创建一个 wx.App。如果你在创建这个应用之前就尝试使用 wxPython 的类,那就会出错:

>>> import wx
>>> frame = wx.Frame(None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_windows.py", line 505, in __init__
    _windows_.Frame_swiginit(self,_windows_.new_Frame(*args, **kwargs))
wx._core.PyNoAppError: The wx.App object must be created first!

系统中总是会有一个,而且只能有一个 wx.App。创建这个 wx.App 会初始化 wxPython,也就是会创建窗口线程等等。

撰写回答