在Python 3中开发类似tkinter记事本的应用程序时出现TypeError

在Python 3中开发类似tkinter记事本的应用程序时出现TypeError,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在尝试制作一个记事本应用程序-以下是我当前的代码: from tkinter import * top=Tk() top.title('Mypad') def save(self,s): self.s=filedialog.asksaveasfilename(defaultextension='.txt') c=open(self.s,'w') w=c.write(str(e.get('1.0','end'))) def close(): top.destro

我正在尝试制作一个记事本应用程序-以下是我当前的代码:

from tkinter import *
top=Tk()
top.title('Mypad')
def save(self,s):
    self.s=filedialog.asksaveasfilename(defaultextension='.txt')
    c=open(self.s,'w')
    w=c.write(str(e.get('1.0','end')))
def close():
    top.destroy()
menubar=Menu(top)
file=Menu(menubar,tearoff=0)
vet=file.add_command(label='Save',command=save)
file.add_separator()
file.add_command(label='Exit',command=close)
menubar.add_cascade(label='File',menu=file)
e=Text()
e.pack(ipady=30)
top.config(menu=menubar)
top.mainloop()
但当我运行它并试图保存它时,它是这样说的

Exception in Tkinter callback
Traceback (most recent call last):
  File "D:\Workspace\python\lib\tkinter\__init__.py", line 1482, in __call__
    return self.func(*args)
TypeError: save() missing 2 required positional arguments: 'self' and 's'

如何解决此问题?

您需要先导入
filedialog
。在这里,您不需要
self
,也不需要
s
作为参数

from tkinter import *
from tkinter import filedialog
top=Tk()
top.title('Mypad')
def save():
    s=filedialog.asksaveasfilename(defaultextension='.txt')
    c=open(s,'w')
    w=c.write(str(e.get('1.0','end')))
def close():
    top.destroy()
menubar=Menu(top)
file=Menu(menubar,tearoff=0)
vet=file.add_command(label='Save',command=save)
file.add_separator()
file.add_command(label='Exit',command=close)
menubar.add_cascade(label='File',menu=file)
e=Text()
e.pack(ipady=30)
top.config(menu=menubar)
top.mainloop()