wx.App的目的只是显示一个框架就足够了

时间:2012-01-12 13:17:03

标签: python wxpython wxwidgets

wx.App类有什么用(除了文档说的内容),什么时候可以创建一个框架而.Show(True)呢?

什么时候应该使用wx.App类,或者为什么不创建框架并只显示它?

3 个答案:

答案 0 :(得分:3)

来创建一个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 - 创建窗口线程等

答案 1 :(得分:2)

wx.App做了一堆幕后工作,让你的应用程序正常工作。它执行主循环,这是等待用户做某事然后响应的东西。你必须拥有它。正如FogleBird所说。顺便说一句,你不应该有多个。如果它完全有效,这样做会导致奇怪的问题。

答案 2 :(得分: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