0

私は自分の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 つ指定)

私はすべてを試しました。私が見逃しているのは愚かなことだと思いますが、それを理解できないようです。どんな助けでも大歓迎です。

4

1 に答える 1

4

wx でイベントを処理するメソッドには、イベントが引数として自動的に渡されます。

チェックパイプを次のように書き換える必要があります。 def checkpipe(self, event, names=None)

于 2012-04-25T11:14:14.557 に答える