2017-10-05 8 views
-1

self.Frame = Frame (Bild) TypeError: Frame(): Argumente nicht übereinstimmen überladener Aufruf: Überladung 1: zu viele Argumente Überladung 2: Argument 1 hat unerwarteten Typ 'Image 'Wenn ich meinen Code ausführen, erhalte ich diesen Fehler

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

Können Sie bitte Ihre Einrückung korrigieren? –

+0

nichts wird sich ändern, wenn ich den Einzug beheben, es ist nur ein Fehler, der passiert ist, als ich den Code –

+0

Making Code lesbarer (Einzug) hilft, bessere Antworten zu bekommen. -1 für das Nichtbefolgen der gegebenen Ratschläge. – nepix32

Antwort

0

Die __init__ Methode hat zwei Unterstrichen vor und nach nicht 1 (_init_), das ist, wie Sie es zweimal definiert haben, aber Sie haben es richtig für __main__.
self.SetTopWindow(self.frame) sollte auch seine self.SetTopWindow(self.Frame)

Wenn aus starten, versuchen Namen zu verwenden, die nicht nachahmen Schlüsselwörter tun, oder zumindest etwas im Namen wie myFrame so zu halten, dass es klar ist, dass es Ihr Name und nicht ein Schlüsselwort .

Zu Ihrer Information, Einrückung ist von entscheidender Bedeutung in Python und die meisten anderen Programmiersprachen, die ich verwendet habe, dazu kommen.

sollte der Code lesen:

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

eine weniger komplizierte Art und Weise etwas zu erreichen, ähnlich wie diese

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() 
wäre

enter image description here

+0

Leider habe ich einen anderen Fehler: "C: \ Benutzer \ neu \ AppData \ Lokale \ Programme \ Python \ Python35 \ Wxpython.py ", Zeile 13, in OnInit self.Frame = Frame (image) Datei" C: \ Benutzer \ neu \ AppData \ Lokale \ Programme \ Python \ Python35 \ Wxpython.py ", Zeile 7, in __init__ self.bmp = wx.StaticBitmap (übergeordnete = self, bitmap = temp) TypeError: StaticBitmap(): Argumente entsprechen keinem überladenen Aufruf: Überladung 1: 'Eltern' ist kein gültiges Schlüsselwortargument Überladung 2: 'Bitmap' ist nicht ein gültiges Schlüsselwortargument –

+0

Ich kann Ihren Fehler nicht replizieren. Haben Sie den obigen Code kopiert und eingefügt? Wenn nicht, ersetzen Sie Ihren Code durch den obigen Code. 'StaticBitmap (übergeordnete, ID = ID_ANY, Bitmap = NullBitmap, POS = DefaultPosition, Größe = DefaultSize, style = 0, Name = StaticBitmapNameStr)' –

+0

Ich bekomme den gleichen Fehler, wenn ich Ihren Code verwenden –

0

Versuchte die obere überarbeitete Version von @Rolf Sachsen . Arbeitete an Python 3.6 (Winpython-Distribution).

Erprobt das gleiche mit Python 3.5, die noch WxPython-Phoenix 3.0.3 hatte etwas. Zeigte die gleiche Ausnahme mit der Überlastung des Spiels. Lösung:

pip uninstall wxPython-Phoenix 

pip install wxPython 

Arbeitet jetzt in Ordnung auch auf Python 3.5.

Den Downvote zurücknehmen.

Verwandte Themen