我的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个)
我尝试了所有的东西,我想这是关于我失踪的一些愚蠢,但我似乎无法弄明白。任何帮助将不胜感激。
答案 0 :(得分:4)
在wx中处理事件的方法会自动将事件作为参数传递。
您应该将checkpipe重写为:
def checkpipe(self, event, names=None)