Цель wx.App, когда достаточно просто показать кадр, достаточно - PullRequest
1 голос
/ 12 января 2012

Какая польза от класса wx.App (кроме того, что написано в документации), когда вы можете просто создать рамку и .Show(True) ее?

Когда следует использовать класс wx.Appили почему бы вам не создать рамку и просто показать ее?

Ответы [ 3 ]

3 голосов
/ 12 января 2012

У вас есть для создания 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 - создает поток окна и т. Д.

2 голосов
/ 12 января 2012

wx.App делает кучу закулисных вещей, чтобы ваше приложение работало.Он выполняет основной цикл, который ждет, когда пользователь что-то сделает, а затем отвечает.Вы должны иметь это.Как упомянул FogleBird.Кстати, вы не должны иметь более одного.Это может вызвать странные проблемы, если это вообще сработает.

0 голосов
/ 20 января 2012

Подклассы 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
...