【发布时间】:2019-01-31 08:04:33
【问题描述】:
我用 tkinker 编写了一个 Python GUI 程序,可以将文本文件中的行读入数据库。用户可以通过在 GUI 输入框中输入详细信息并按下按钮来在数据库中添加或删除条目。但是,当我运行代码时,我无法在第一次尝试的输入框中键入任何内容,即该框是实心的,无法键入任何内容。
import tkinter as tk
import tkinter.ttk as ttk
from tkinter import StringVar
from tkinter import messagebox
import sqlite3
import os
window = tk.Tk()
#Food Name label
labelName=ttk.Label(window,text="Name")
txtName=StringVar()
textName=ttk.Entry(window,textvariable=txtName)
#Food Category label
labelCategory=ttk.Label(window,text="Category")
txtCategory=StringVar()
textCategory=ttk.Entry(window,textvariable=txtCategory)
#Initialize Database
def initDatabase():
file=open("foodList.txt")
lines=file.readlines()
conn=sqlite3.connect('foodDatabase.db')
sql="create table food(name text primary key, category text)"
conn.execute(sql)
conn.commit()
for line in lines:
line=line.replace("\n","")
cols=line.split(",")
name=cols[0]
category=cols[1]
sql="insert into food(name,category) values(?,?)"
conn.execute(sql,(name,category))
conn.commit()
conn.close()
messagebox.showinfo("Success", "Database Initialized!")
if not os.path.exists("foodDatabase.db"):
initDatabase()
#Buttons for Insert & Delete
def insertData():
conn=sqlite3.connect('foodDatabase.db')
sql="insert into food(name,category) values(?,?)"
conn.execute(sql,(txtName.get(),txtCategory.get()))
conn.commit()
conn.close()
messagebox.showinfo("Success", "Insert Successful!")
def deleteData(name):
conn=sqlite3.connect('foodDatabase.db')
sql="delete from food where name=?"
conn.execute(sql,(txtName.get(),))
conn.commit()
conn.close()
messagebox.showinfo("Success","Delete Successful!")
#Insert BUtton
buttonInsert=ttk.Button(window,text='Insert',command=insertData)
#Delete Button
buttonDelete=ttk.Button(window,text='Delete',command=deleteData)
window.mainloop()
【问题讨论】:
-
评论是为其他人提问以获取更多详细信息等,如果您犯了错误或希望添加更多内容等,请按问题下方的编辑按钮。
-
另外,你有什么错误吗?如果是,请将它们也包含在您的问题中。
-
@Lafexlos 您好,我在我的问题中编辑了我的代码。不,我没有收到任何错误,只是在初始化数据库时无法在输入框中输入任何内容。如果数据库文件已经在文件夹中,我不会遇到任何问题。
-
最重要的是,您没有使用任何几何管理器(包、网格或位置)。你现在怎么看你的小部件?您使用的是哪个 IDE?
-
@Lafexlos 我认为我放置“messagebox.showinfo”代码的位置有问题..但我无法让它工作。 .txt 很简单,如“123、xyz(下一行)234、abc(下一行)”等
标签: python sql python-3.x sqlite tkinter