2017-10-05 5 views
-1

self.Frame = Frame (image) TypeError: Frame(): les arguments ne correspondent à aucun appel surchargé: surcharge 1: trop d'arguments surcharge 2: l'argument 1 a un type inattendu 'Image 'lorsque j'exécute mon code j'obtiens cette erreur

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

Pouvez-vous s'il vous plaît corriger votre indentation? –

+0

rien ne va changer si je corrige l'indentation c'est juste une erreur qui s'est produite lorsque j'ai copié le code –

+0

Rendre le code plus lisible (indentation) permet d'obtenir de meilleures réponses. -1 pour ne pas suivre les conseils donnés. – nepix32

Répondre

0

La méthode __init__ a 2 underscores avant et après pas 1 (_init_) qui est la façon dont vous l'avez défini deux fois, mais vous l'avez correct pour __main__.
également self.SetTopWindow(self.frame) devrait être self.SetTopWindow(self.Frame)

Lors du démarrage, essayez d'utiliser des noms qui ne sont pas des mots-clés mimiques, ou au moins tenir quelque chose dans le nom comme myFrame de sorte qu'il est clair que c'est votre nom et non un mot-clé . Pour votre information, l'indentation est d'une importance vitale dans python et dans la plupart des autres langages de programmation que j'ai utilisés.

Le code doit lire:

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

Une façon moins compliquée de réaliser quelque chose de similaire serait comme celui-ci

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

malheureusement, j'ai une autre erreur: "C: \ Users \ nouveau \ AppData \ Local \ Programmes \ Python \ Python35 \ Wxpython.py ", ligne 13, dans OnInit self.Frame = Cadre (image) Fichier" C: \ Utilisateurs \ nouveau \ AppData \ Local \ Programmes \ Python \ Python35 \ Wxpython.py ", ligne 7, dans __init__ self.bmp = wx.StaticBitmap (parent = self, bitmap = temp) TypeError: StaticBitmap(): les arguments ne correspondent à aucun appel surchargé: surcharge 1: 'parent' n'est pas un argument mot-clé valide surcharge 2: 'bitmap' n'est pas un argument de mot clé valide –

+0

Je ne parviens pas à répliquer votre erreur. Avez-vous copié et collé le code ci-dessus? Sinon, essayez de remplacer votre code par le code ci-dessus. 'StaticBitmap (parent, id = ID_ANY, bitmap = NulBitmap, pos = DefaultPosition, size = DefaultSize, style = 0, nom = StaticBitmapNameStr)' –

+0

Je reçois la même erreur lorsque j'utilise votre code –

0

Essayé la version supérieure révisée par @Rolf de Saxe . A travaillé sur Python 3.6 (distribution Winpython). Essayé la même chose avec Python 3.5, qui avait encore quelque chose de wxPython-Phoenix 3.0.3. A montré la même exception avec la surcharge de match. Solution:

pip uninstall wxPython-Phoenix 

pip install wxPython 

Fonctionne maintenant bien aussi sur Python 3.5.

Reprendre le downvote.