簡體   English   中英

將sqlite3與Tkinter鏈接

[英]Linking sqlite3 with Tkinter

作為我正在制作的庫存系統的一部分,我希望Tkinter通過用戶輸入輸入框並單擊“添加庫存”按鈕來收集希望插入數據庫的數據值。

我的問題是,我不確定如何將sqlite3與Tkinter代碼結合使用。

以下是我的“添加庫存”窗口的Tkinter代碼

def addStock():
    root = Tk()
    root.title('Add Stock')
    label1 = Label(root, text='Gender')
    label2 = Label(root, text='Price')
    label3 = Label(root, text='Enter Product Name')
    label4 = Label(root, text='Colour')
    label5 = Label(root, text='Size')
    label6 = Label(root, text='Enter Amount')
    label7 = Label(root, text='Source')
    label8 = Label(root, text='Enter ProductID')
    entry1 = Entry(root)
    entry2 = Entry(root)
    entry3 = Entry(root)
    entry4 = Entry(root)
    entry5 = Entry(root)
    entry6 = Entry(root)
    entry7 = Entry(root)
    entry8 = Entry(root)

    label1.grid(row=0, sticky=E)
    label2.grid(row=1, sticky=E)
    label3.grid(row=2, sticky=E)
    label4.grid(row=3, sticky=E)
    label5.grid(row=4, sticky=E)
    label6.grid(row=5, sticky=E)
    label7.grid(row=6, sticky=E)
    label8.grid(row=7, sticky=E)

    entry1.grid(row=0, column=1)
    entry2.grid(row=1, column=1)
    entry3.grid(row=2, column=1)
    entry4.grid(row=3, column=1)
    entry5.grid(row=4, column=1)
    entry6.grid(row=5, column=1)
    entry7.grid(row=6, column=1)
    entry8.grid(row=7, column=1)

    frame3 = Frame(root)
    frame3.grid(columnspan = 2)

    button1 = Button(frame3, padx=10, pady=10, bd=2, text="Add Stock", command=insert_data)
    button1.grid()

以下是我希望與Tkinter代碼鏈接的sqlite3的insert語句。

def insert_data(values): 
    with sqlite3.connect("jam_stock.db") as db:
        cursor = db.cursor()
        sql = "insert or ignore into Product (Name, ProductID) values (?,?)"
        query(sql,values)
        db.commit()

def insert_product_type_data(records): #normalised
    sql = "insert into ProductType(AmountInStock, Size, Colour, Source) values (?,?,?,?)"
    for record in records:
        cursor.execute(sql,record)

def insert_product_gender_data(records): #normalised
    sql = "insert into ProductGender(Gender, Price) values (?,?)"
    for record in records:
        cursor.execute(sql, records)

我已經定義了子例程中引用的表,但是我正在努力尋找一種通過Tkinter將數據插入到這些表中的方法。

我正在為那些想知道的人運行Python 3.4。 幫助將不勝感激。

解決此問題的通常方法是讓您的按鈕調用專門用於該按鈕的功能。 該功能的職責是從GUI收集數據,調用使用該數據的某些功能,然后將所有結果發布回GUI。

例如:

...
button1 = Button(... text="Add Stock", command=_on_add_stock)
...

def _on_add_stock():
    gender = entry1.get()
    price = entry2.get()
    ...
    insert_data(gender, price, ...)

上面的代碼不適用於您發布的代碼,但是它提供了大致的思路。 它與您發布的代碼不兼容的原因之一是因為entry1等都是局部變量。 您應該使用一種更加面向對象的方法,因此這些變量都是類的屬性。 您可以看到有關構建tkinter應用程序的最佳方法的答案的示例。

一種技巧是在按鈕中使用“ command ”。 如以上注釋中所列,請嘗試使用方法:

def _add_to_db:get_data = entry.get()#這應該是Entry insert的文本= *一些用於將數據插入數據庫的代碼,以\\ n的順序將get_data出現在數據庫中*

btn = Button(root, text="Place in DB", command=_add_to_db).pack()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM