【发布时间】:2012-01-12 13:17:03
【问题描述】:
wx.App 类有什么用(除了文档说的),当你可以创建一个框架和.Show(True) 它时?
什么时候应该使用wx.App 类,或者为什么不创建一个框架并直接显示它?
【问题讨论】:
wx.App 类有什么用(除了文档说的),当你可以创建一个框架和.Show(True) 它时?
什么时候应该使用wx.App 类,或者为什么不创建一个框架并直接显示它?
【问题讨论】:
您有创建一个 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。实例化它会初始化 wxPython - 创建窗口线程等。
【讨论】:
wx.App 做了很多幕后工作以使您的应用程序正常工作。它执行主循环,即等待用户做某事然后响应。你必须拥有它。正如 FogleBird 所提到的。顺便说一句,你不应该有多个。这样做会导致奇怪的问题,如果它有效的话。
【讨论】:
当您必须在应用程序中执行一些额外功能时,子类化 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
【讨论】: