Tkinter文本框保存数据报错:TypeError参数数量不符问题求助
问题解决:Tkinter记事本SQLite保存错误
错误原因
TypeError: function takes at most 2 arguments (3 given) 是因为cursor.execute()方法要求第二个参数是单个序列(元组/列表),而你直接传入了两个独立的参数,导致方法接收到了3个参数(SQL语句、标题内容、笔记内容)。
修复方案
修改save方法中的execute调用,将两个参数打包成元组,同时新增表存在性检查避免首次运行报错:
def save(self): db = sql.connect('notas.db') curs = db.cursor() # 首次运行自动创建表 curs.execute("CREATE TABLE IF NOT EXISTS tb_notes (name TEXT, text TEXT)") # 将参数打包成元组传递给execute curs.execute("INSERT INTO tb_notes(name, text) VALUES(?, ?)", (self.title.get(), self.note.get("1.0",'end-1c'))) db.commit() db.close() # 可选:保存后关闭新建笔记窗口 self.wind.destroy()
额外优化建议
- 新建窗口改用
tk.Toplevel()替代tk.Tk(),避免创建多个Tk主实例:new_bt= tk.Button(text= 'New', width= 8, height= 2, bg= '#B0B0B0', command= lambda: new_note(tk.Toplevel(obj_m_window.wind))) - 给按钮添加白色文本提升深色背景下的可读性:
fg='white' - 保存成功后添加提示弹窗:
from tkinter import messagebox # 在db.close()后添加 messagebox.showinfo("提示", "笔记已保存")
内容的提问来源于stack exchange,提问作者Kumar López
相关产品推荐
相关产品推荐

