2017-01-25 2 views
0

работает нормально в Python 2.7 Попытка использовать wx.PyControl в Python 3.5 и получить предупреждение:wxPyDeprecationWarning в Python 3.5

test_direct_svg.py:20: wxPyDeprecationWarning: Использование устаревшего класса. Вместо этого используйте Control. wx.PyControl. INIT (я, родитель, идентификатор, позы, размера, стиль, валидатор, имя)

Как использовать управление в INIT?

код Python Я выполнения:

import wx 

class ComponentFrame(wx.Frame): 
    def __init__(self, parent, id, title, pos, size): 
     wx.Frame.__init__(self, parent, id, title, pos, size) 

     self.panel = wx.Panel(self) 
     vbox = wx.BoxSizer(wx.HORIZONTAL) 
     component = SvgComponent(self.panel) 
     vbox.Add(component, 1, wx.EXPAND | wx.ALL, 10) 
     self.panel.SetSizer(vbox) 

class SvgComponent(wx.PyControl): 
    def __init__(self, parent, label="", 
       id=wx.ID_ANY, 
       pos=wx.DefaultPosition, 
       size=wx.DefaultSize, style=wx.NO_BORDER, validator=wx.DefaultValidator, 
       name="LoggerUI"): 

     wx.PyControl.__init__(self, parent, id, pos, size, style, validator, name) 


if __name__ == '__main__': 
     app = wx.App() 
     frame = ComponentFrame(None, wx.ID_ANY, 'test rsvg', (200, 200), (400, 400)) 
     app.MainLoop()  
+0

сообщение об ошибке чтения еще раз - это означает, что вы должны использовать 'wx.Control' вместо' wx.PyControl' – furas

ответ

3

Ошибка означает, что вы должны использовать wx.Control вместо wx.PyControl во всех местах.

КСТАТИ: не забудьте frame.Show()

import wx 

class ComponentFrame(wx.Frame): 

    def __init__(self, parent, id, title, pos, size): 
     wx.Frame.__init__(self, parent, id, title, pos, size) 

     self.panel = wx.Panel(self) 
     vbox = wx.BoxSizer(wx.HORIZONTAL) 
     component = SvgComponent(self.panel) 
     vbox.Add(component, 1, wx.EXPAND | wx.ALL, 10) 
     self.panel.SetSizer(vbox) 

class SvgComponent(wx.Control): 

    def __init__(self, parent, label="", 
       id=wx.ID_ANY, 
       pos=wx.DefaultPosition, 
       size=wx.DefaultSize, style=wx.NO_BORDER, validator=wx.DefaultValidator, 
       name="LoggerUI"): 

     wx.Control.__init__(self, parent, id, pos, size, style, validator, name) 


if __name__ == '__main__': 
    app = wx.App() 
    frame = ComponentFrame(None, wx.ID_ANY, 'test rsvg', (200, 200), (400, 400)) 
    frame.Show() 
    app.MainLoop() 
+0

Это в настоящее время только предупреждение, так что «есть «может быть немного сильным. Но он предупреждает вас о том, что в конечном итоге он будет удален, поэтому «должно» будет уместным. – RobinDunn