2016-02-06 2 views
0

Когда я пытаюсь сделать новый кадр с wx.Frame(False), я получаю эту ошибку, передается через стек вызовов:Как создать wx.Frame без родителя?

TypeError: in method 'new_Frame', expected argument 1 of type 'wxWindow *' 

Я понимаю, что аргумент должен быть родительским окно, но, по крайней мере, в C++ вы можете передать нулевой указатель, если вы не хотите, чтобы окно имело родителя.

Как создать wx.Frame без родителя?

+3

Попробуйте использовать 'None' вместо' false'. – ppperry

ответ

4

Вы можете пройти None. Как видно из этого примера.

#!/usr/bin/python 

# simple.py 

import wx 

app = wx.App() 

frame = wx.Frame(None, -1, 'simple.py') 
frame.Show() 

app.MainLoop() 
0

Как уже упоминалось, вы можете пройти None. Это обычный способ и способ, который вы увидите в большинстве примеров. Я предпочитаю, чтобы показать пример класса кадра:

import wx 

class MyFrame(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, parent=None, title='Test') 
     self.Show() 

if __name__ == '__main__': 
    app = wx.App(False) 
    frame = MyFrame() 
    app.MainLoop() 

Вы можете также использовать в Python super при определении вашего подкласса с WxPython:

import wx 

class MyFrame(wx.Frame): 

    def __init__(self, *args, **kwargs): 
     super(MyFrame, self).__init__(*args, **kwargs) 
     self.Show() 

if __name__ == '__main__': 
    app = wx.App(False) 
    frame = MyFrame(parent=None, title='Test') 
    app.MainLoop()