仅展示一个框架时wx.App的作用是什么
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,也就是会创建窗口线程等等。