Typerror与wxPython的凤凰

问题描述:

创建媒体播放器时,一直试图以播放电影预告片创建使用wx.media模块wx.Python凤凰(Python的3.5.2)中的媒体播放器。 当运行下面的代码它提出了一个TypeError:我似乎 TypeError: __init__() takes 1 positional argument but 2 were givenTyperror与wxPython的凤凰

不能从那里引发此错误找到。 我是面向对象编程的新手,所以代码中也有可能存在其他逻辑错误。 下面是到目前为止的代码:

import wx,wx.media 


class window(wx.Frame): 
    def __init__(self,parent,id): 
     wx.Frame.__init__(self,parent,id,title='Media Player') 
     panel1=wx.Panel(self) 
     button1=wx.Button(panel1,-1,'play') 
     button1.Bind(wx.EVT_BUTTON,media) 


class media(wx.media.MediaCtrl): 
    def __init__(self): 
     super(media,media).__init__(self) 
     wx.media.MediaCtrl.Create(self,frame,id=-1,fileName='Trailer.wmv') 
     wx.media.MediaCtrl.Load(self,'Trailer.wmv') 
     wx.media.MediaCtrl.ShowPlayerControls(self) 
     wx.media.MediaCtrl.Play(self) 


if __name__=='__main__': 
    app=wx.App() 
    frame=window(parent=None, id=-1) 
    frame.Show() 
    app.MainLoop()` 

的代码应该打开它与“播放”按钮(按钮1)命名为“Trailer.wmv”的电影预告片的新闻应该播放的窗口。 任何帮助typerror或拖车播放将不胜感激。

您有:

button1.Bind(wx.EVT_BUTTON,media) 

其中media是一个类。这是可以做的,虽然有点不合常规。问题是事件处理程序总是通过一个参数来调用,该参数表示发送的事件的详细信息。所以wxPython试图调用media(event)这是因为它是一个类,Python变成了media.__init__(self, event)并且你的代码只接受一个参数,所以它引发了一个异常。

这就是说,一个更好的设计是建立在框架的__init__作为面板的子媒体控制,然后做只是在按键事件处理LoadPlay

更改super()呼叫您media.__init__()功能:

super().__init__()

+0

只是做,不幸的是同一类型错误出现 –

+0

请张贴完整回溯 – MrLeeh

+0

这是由当时的完整回溯你按下按钮: http://imgur.com/a/AhRwW –