python错误:方法只需1个参数(给定2个)

时间:2012-04-25 10:48:55

标签: python methods arguments

我的python程序中有一点问题,我在wxpython中工作,我试图通过一个通过事件绑定到函数“checkpipe”的按钮在读取模式下打开一个管道。问题是,当我单击按钮时,python错误解释器会告诉我:

class fenetre(wx.Frame): #on va creer une nouvelle classe pour l'interface
    def __init__(self, parent, id): #constructeur
        filecontent = ""
        wx.Frame.__init__(self, parent, id, 'Solution 1 ---> Destinataire', size = (640,480))
        panel = wx.Panel(self)
        verifybutton = wx.Button(panel,label = "Verifier", pos = (320,10), size = (80,30))
        self.currentDirectory = os.getcwd() #trouver le chemin du dossier dans lequel on se trouve
        self.Centre() #faire apparaitre la fenetre au centre
        textprocessid = wx.StaticText(panel, -1, monid, pos = (400, 213))
        self.Bind(wx.EVT_BUTTON, self.checkpipe, verifybutton)


    def alertMessagePipeEmpty(self):
        dialog = wx.MessageDialog(self, "Rien recu. Veuillez essayer plus tard","Erreur", wx.OK|wx.ICON_ERROR)
        result = dialog.ShowModal()
        dialog.Destroy()

    def closewindow(self, event):
        self.Destroy()

    def checkpipe(self,names = None):
        if not os.path.exists(fifoname):
            os.mkfifo(fifoname)
        pipein = open(fifoname, 'r') 
        contenu = pipein.read()
        if contenu == "":
            self.alertMessagePipeEmpty()
        else:
            dialog = wx.MessageDialog(self, "Vous avez un fichier a recevoir. Voulez-vous le sauvegarder","Fichier recu", wx.YES_DEFAULT|wx.ICON_ERROR)
            result = dialog.ShowModal()
            dialog.Destroy()
            if result == wx.ID_YES:
                dlg = wx.FileDialog(
                self, message="Sauvegardez le fichier",
                defaultDir=self.currentDirectory,
                defaultFile="",
                wildcard=wildcard,
                style=wx.SAVE | wx.CHANGE_DIR
                )
                if dlg.ShowModal() == wx.ID_OK:
                    paths = dlg.GetPaths()
                    pathcomplet = ""
                    for path in paths:
                        pathcomplet = pathcomplet + path
                dlg.Destroy()
                fd2 = open(pathcomplet,'w')
                fd2.write(contenu)
                os.unlink(fifoname)

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = fenetre(parent = None, id = -1)
    frame.Show()
    app.MainLoop()

TypeError:checkpipe()只取1个参数(给定2个)

我尝试了所有的东西,我想这是关于我失踪的一些愚蠢,但我似乎无法弄明白。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

在wx中处理事件的方法会自动将事件作为参数传递。

您应该将checkpipe重写为: def checkpipe(self, event, names=None)