尝试定义一个delete函数,其中用户在python中输入一个名称并单击delete按钮和包含数据delete的行,这是在tkinter和sqlite的帮助下完成的
def deleteMovie(name):
conn = sqlite3.connect('moviedata.db')
sql = "Delete from movies WHERE name=?"
conn.execute(sql,(name,))
messagebox.showinfo("information","MOVIE DELETED")
conn.commit()
conn.close()
#this is my entry
代码:
window = tk.Tk()
window.title("SP Movie Admin Form")
window.geometry("400x250")
window.resizable(0, 0)
lName = ttk.Label(window,text="Name",padding=2)
lName.grid(row=1,column=1,columnspan=1)
nameent = StringVar()
nameent = ttk.Entry(window,textvariable=nameent)
nameent.grid(row=1,column=2,columnspan=3)
buttondelete = ttk.Button(window,text="Delete",command=deleteMovie)
buttondelete.grid(row=7,column=2)
window.mainloop()
这就是错误
Traceback (most recent call last):
File "C:\Users\gayat\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
TypeError: deleteMovie() missing 1 required positional argument: 'name'
当然,你想删除的电影名是什么
我想应该是
nameent
,但是您还将您的条目命名为nameent
。不起作用必须将
StringVar()
变量设置为不同于Entry
变量,然后使用.get()
获取StringVar()
中的值您的按钮回调需要获取它需要的数据,而不是让它传入。如果要保留接受参数的函数,可以专门为按钮创建一个函数,用于获取值,然后调用
deleteMovie
例如:
然后,让您的按钮调用回调:
当然,您可以使用一个函数,通过删除参数并调用
get()
方法来完成这两个任务:相关问题 更多 >
编程相关推荐