当我运行我的代码时,我得到了这个错误

时间:2017-10-05 12:15:17

标签: widget wxpython python-3.5

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()

2 个答案:

答案 0 :(得分:0)

{1}}方法在非1(__init__)之前和之后有2个下划线,这就是你如何定义它的两次但你对_init_的说法是正确的。
__main__也应为self.SetTopWindow(self.frame)

开始使用时,请尝试使用不会模仿关键字的名称,或者至少在self.SetTopWindow(self.Frame)这样的名称中粘贴一些内容,以便明确它是您的名字而不是关键字。< / p>

对于您的信息,缩进在python和我使用过的大多数其他编程语言中都非常重要。

代码应为:

myFrame

实现类似事情的一种不太复杂的方式就像这样

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()

enter image description here

答案 1 :(得分: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。