2017-10-05 165 views
-1

self.Frame = Frame(image)TypeError:Frame():参数不匹配任何重载调用:重载1:太多的参数重载2:参数1有意外的类型'图像“当我运行我的代码,我得到这个错误

import wx 
class Frame(wx.Frame): 
    def __init__(self,image,parent = None, id=-1,pos=wx.DefaultPosition, title='Hello, wxPytho!'): 
     temp = image.ConvertToBitmap() 
     size = temp.GetWidth(), temp.GetHeight() 
     wx.Frame.__init__(self, parent, id, title, pos, size) 
     self.bmp = wx.StaticBitmap(parent=self, bitmap=temp) 

class App(wx.App): 
    def OnInit(self): 
     image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG) 
     self.Frame = Frame(image) 
     self.Frame.Show() 
     self.SetTopWindow(self.Frame) 
     return True 


def main(): 
    app = App() 
    app.MainLoop() 

if __name__ == '__main__': 
    main() 
+0

你能修好你的缩进吗? –

+0

如果我修正了缩进,这只是一个错误,当我复制代码 –

+0

使代码更具可读性(缩进)有助于获得更好的答案时,什么都不会改变。 -1因为没有按照给出的建议。 – nepix32

回答

0

__init__方法有2个下划线之前和之后没有1(_init_)这是你是如何定义两次,但你得到了它正确的__main__
self.SetTopWindow(self.frame)应该self.SetTopWindow(self.Frame)

当启动出去,尽量使用不模仿关键字名称,或至少坚持一些在名称,如myFrame所以说,很明显,这是你的名字,而不是一个关键字。

为了您的信息,缩进在我已经使用的python和大多数其他编程语言中非常重要,请参阅。

的代码应阅读:

import wx 
class Frame(wx.Frame): 
    def __init__(self,image,parent = None, id=-1,pos=wx.DefaultPosition,title='Hello, wxPytho!'): 
     temp = image.ConvertToBitmap() 
     size = temp.GetWidth(), temp.GetHeight() 
     wx.Frame.__init__(self, parent, id, title, pos, size) 
     self.bmp = wx.StaticBitmap(parent=self, bitmap=temp) 

class App(wx.App): 
    def OnInit(self): 
     image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG) 
     self.Frame = Frame(image) 
     self.Frame.Show() 
     self.SetTopWindow(self.Frame) 
     return True 

def main(): 
    app = App() 
    app.MainLoop() 

if __name__ == '__main__': 
      main() 

实现类似的不太复杂的方式会是这样

import wx 

class TestFrame(wx.Frame): 
    def __init__(self, *args): 
     wx.Frame.__init__(self, *args) 
     Img = wx.Image("wxPython.jpg", wx.BITMAP_TYPE_ANY) 
     Imgsize = Img.GetWidth()+15, Img.GetHeight()+35 
     self.SetSize(Imgsize) 
     self.SetBackgroundColour(wx.BLACK) 
     self.Image = wx.StaticBitmap(self, bitmap=wx.BitmapFromImage(Img)) 
     self.Show() 

if __name__ == "__main__": 
    app = wx.App() 
    myframe = TestFrame(None, -1, "Image Test") 
    app.MainLoop() 

enter image description here

+0

不幸的是我得到了另一个错误:“C:\ Users \ new \ AppData \ Local \ Programs \ Python \ Python35 \ Wxpython.py “,第13行,在OnInit self.Frame = Frame(image) 文件”C:\ Users \ new \ AppData \ Local \ Programs \ Python \ Python35 \ Wxpython.py“,第7行,在__init__中 self.bmp = wx.StaticBitmap(parent = self,bitmap = temp) TypeError:StaticBitmap():参数不匹配任何重载调用: 重载1:'parent'不是有效的关键字参数 重载2:'bitmap'不是有效的关键字参数 –

+0

我无法复制您的错误。你是否复制并粘贴上面的代码?如果不是,请尝试用上面的代码替换您的代码。 'StaticBitmap(parent,id = ID_ANY,bitmap = NullBitmap,pos = DefaultPosition, size = DefaultSize,style = 0,name = StaticBitmapNameStr)' –

+0

我在使用您的代码时遇到了同样的错误 –

0

由萨克森@Rolf试过上修订版。使用Python 3.6(Winpython发行版)。

尝试与Python 3.5一样,它仍然有wxPython-Phoenix 3.0.3的东西。显示与匹配超载相同的异常。解决方案:

pip uninstall wxPython-Phoenix 

pip install wxPython 

现在在Python 3.5上工作也很好。

收回downvote。

相关问题