繁体   English   中英

如何在python中使用tkinter和sqlite

[英]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_entfirstname_entrysn_ent_entsecondname_entry指您创建的字符串变量。

execute()语句中有一个错字:应该是secondname_entry ,而不是secondnamename_entry 另外,您还需要在字符串变量上调用.get()来检索要在查询中使用的值。

SQL语句必须引用创建表时使用的正确表名和列名,即stud而不是data ,以及firstnamesecondname而不是fnamesname

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.dbstudent.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM