2017-10-05 18 views
-1

self.Frame =フレーム(画像)TypeError:Frame():引数がオーバーロードされた呼び出しと一致しませんでした:オーバーロード1:多すぎる引数オーバーロード2: 「私のコードを実行すると、このエラーが発生します

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回定義されている。しかし、あなたが__main__のためにそれが正しい得た方法で前と後の2アンダースコアではない1(_init_)を持っています。
また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() 

似た何かを達成するためのより複雑な方法をザクセンの@Rolfによって上位改訂版を試してみました。この

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 オーバーロード1: 'parent'は有効なキーワード引数ではありません オーバーロード2: 'bitmap'はありません(ビットマップは無効です)。有効なキーワード引数 –

+0

エラーを再現できません。上記のコードをコピー&ペーストしましたか?そうでない場合は、コードを上記のコードに置き換えてみてください。 –

+0

あなたのコードを使用すると同じエラーが発生します –

0

ようになります。 Python 3.6(Winpythonディストリビューション)で作業しました。

同じことがwxPython-Phoenix 3.0.3の何かを持っていたPython 3.5でも試してみました。マッチオーバーロードで同じ例外が表示されました。ソリューション:

pip uninstall wxPython-Phoenix 

pip install wxPython 

現在、Python 3.5でもうまく動作します。

downvoteを取り戻す。

関連する問題