如何从条目小部件中获取输入并将其输入到sqlite3数据库?

时间:2017-09-11 04:27:37

标签: python python-3.x tkinter sqlite

我一直在读,使用get()是最好的方法,但我不知道如何使用它,其他答案对我没有帮助。 以下是代码的主要部分。我正在使用python 3.6,tkinter和sqlite3。

import sqlite3
import tkinter as tk
from tkinter import Frame, Tk, Button, Label, Entry, N, S, E, W
from tkinter import TOP, BOTTOM, LEFT, RIGHT, END, ALL

top=Tk()
top.geometry("320x225")
top.title('dvd rentals')
medium_font=('Veranda', 10)
textFrame=Frame(top)

loaneeID=Label()
loaneeID=Label(top,font=medium_font,text='Loanee ID ')
loaneeID.grid(row=2, column=1)
entry1=Entry(textFrame)
entry1=Entry(top, bd = 5, font=medium_font, width=25)
entry1.grid(row=2, column=2)

submit_button = tk.Button(top, text='Add Item', width=8,
                            command=lambda: add_item(top))
submit_button.grid(row=8, column=1, sticky=E, pady=20, padx=20)

top.mainloop()

def main():
    conn = sqlite3.connect('dvd.db')
    c=conn.cursor()

def tableCreate(c):
    c.execute('CREATE TABLE IF NOT EXISTS loanee (loaneeID int, name text, email text)')
    c.execute('CREATE TABLE IF NOT EXISTS dvd (dvdID int, name text)')
    c.execute('CREATE TABLE IF NOT EXISTS loan (loaneeID int, dvdID int, start date text, end date text)')

def insertValues(c, loanee, dvd, loan):
    c.execute('INSERT INTO loanee VALUES (?,?,?)',loanee)
    c.execute('INSERT INTO dvd VALUES (?,?)',dvd)
    c.execute('INSERT INTO loan VALUES (?,?,?,?)',loan)

    tableCreate(c)

    insertValues(c, loanee, dvd, loan)

    conn.commit()
    conn.close()
main()

我的目标是用户输入他们的ID(和其他条目),他们可以使用指定的提交按钮添加到数据库。

1 个答案:

答案 0 :(得分:1)

是的,使用get()窗口小部件的Entry方法获取窗口小部件的当前内容。

您需要将add_item()函数添加到代码中,然后使用与此类似的代码获取用户的条目:

def add_item():
    loanee_id = entry1.get()
    print(loanee_id)

然后你需要调用你的SQL函数来插入数据。

请注意,您的代码存在一些问题,首先是在关闭Tk窗口之前不会执行第top.mainloop()行之后的代码。此外,SQL函数的逻辑也是错误的。

您应该了解如何组织Tk应用程序以使用类,因为这将使您的代码更易于管理和使用。