当我运行我的代码,我得到这个错误
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()
的__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()
不幸的是我得到了另一个错误:“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'不是有效的关键字参数 –
我无法复制您的错误。你是否复制并粘贴上面的代码?如果不是,请尝试用上面的代码替换您的代码。 'StaticBitmap(parent,id = ID_ANY,bitmap = NullBitmap,pos = DefaultPosition, size = DefaultSize,style = 0,name = StaticBitmapNameStr)' –
我在使用您的代码时遇到了同样的错误 –
由萨克森@Rolf试过上修订版。使用Python 3.6(Winpython发行版)。
尝试与Python 3.5一样,它仍然有wxPython-Phoenix 3.0.3的东西。显示与匹配超载相同的异常。解决方案:
pip uninstall wxPython-Phoenix
pip install wxPython
现在在Python 3.5上工作也很好。
收回downvote。
你能修好你的缩进吗? –
如果我修正了缩进,这只是一个错误,当我复制代码 –
使代码更具可读性(缩进)有助于获得更好的答案时,什么都不会改变。 -1因为没有按照给出的建议。 – nepix32