[英]how to use tkinter with sqlite in python
我在将tkinter条目传递到sqlite时遇到问题。我的目标是建立用户界面来收集数据以及删除,显示,更新,我将继续学习。
我认为我的问题
def savedata ():
我改变了里面的括号
我也尝试过改变
c.execute('INSERT INTO data (fname, sname) VALUES (?,?)',
(firstname_entry, secondnamename_entry))
conn.commit()
。
感谢您的帮助
。
import random
import tkinter as tk
from tkinter import *
from tkinter import messagebox
import sqlite3
def conacona():
conn = sqlite3.connect('student.db')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS stud (firstname TEXT, secondname TEXT)")
conn.commit()
conn.close()
#oooooooo
main_menu = tk.Tk()
firstname_label = Label(main_menu, text="First name")
firstname_label.pack()
secondname_label = Label(main_menu, text="Second name")
secondname_label.pack()
# First name get
firstname_entry = tk.StringVar()
firstname_entry_entry = Entry(main_menu, textvariable = fn_ent_ent)
firstname_entry_entry.pack()
# Second name get
secondname_entry = tk.StringVar()
secondname_entry_entry = Entry(main_menu, textvariable = sn_ent_ent)
secondname_entry_entry.pack()
def savedata ():
conn = sqlite3.connect('stud.db')
c = conn.cursor()
c.execute('INSERT INTO data (fname, sname) VALUES (?,?)', (firstname_entry, secondnamename_entry))
conn.commit()
print("OK")
u_ent_btn = Button(text="Enter",command=savedata())
u_ent_btn.pack()
main_menu.mainloop()
更换fn_ent_ent
与firstname_entry
和sn_ent_ent
与secondname_entry
指您创建的字符串变量。
execute()
语句中有一个错字:应该是secondname_entry
,而不是secondnamename_entry
。 另外,您还需要在字符串变量上调用.get()
来检索要在查询中使用的值。
SQL语句必须引用创建表时使用的正确表名和列名,即stud
而不是data
,以及firstname
和secondname
而不是fname
和sname
。
c.execute('INSERT INTO stud (firstname, secondname) VALUES (?,?)', (firstname_entry.get(), secondname_entry.get()))
将其作为按钮command
的函数传递时,请勿调用savedata()
:
u_ent_btn = Button(text="Enter",command=savedata)
最后,您需要在输入mainloop()
之前调用conacona()
创建SQLite数据库。 并且您必须为数据库使用相同的文件名,因此将其stud.db
或student.db
之一,但不能同时使用两者。
将所有这些放在一起会产生以下代码:
import random
import tkinter as tk
from tkinter import *
from tkinter import messagebox
import sqlite3
def conacona():
conn = sqlite3.connect('student.db')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS stud (firstname TEXT, secondname TEXT)")
conn.commit()
conn.close()
#oooooooo
main_menu = tk.Tk()
firstname_label = Label(main_menu, text="First name")
firstname_label.pack()
secondname_label = Label(main_menu, text="Second name")
secondname_label.pack()
# First name get
firstname_entry = tk.StringVar()
firstname_entry_entry = Entry(main_menu, textvariable=firstname_entry)
firstname_entry_entry.pack()
# Second name get
secondname_entry = tk.StringVar()
secondname_entry_entry = Entry(main_menu, textvariable=secondname_entry)
secondname_entry_entry.pack()
def savedata ():
print(dir(firstname_entry))
conn = sqlite3.connect('student.db')
c = conn.cursor()
c.execute('INSERT INTO stud (firstname, secondname) VALUES (?,?)', (firstname_entry.get(), secondname_entry.get()))
conn.commit()
print("OK")
u_ent_btn = Button(text="Enter",command=savedata)
u_ent_btn.pack()
conacona()
main_menu.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.