2015-03-15 2 views
1

Как часть системы инвентаризации, которую я создаю, я хочу, чтобы Tkinter собирал значения данных, которые я хотел бы вставить в базу данных, через пользователя, вводящего окна ввода, и нажав кнопку «Добавить запас» ,Ссылка на sqlite3 с 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() 

Ниже мои insert заявления для sqlite3, которые я хочу связать с кодом Tkinter.

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 для тех, кто интересуется. Помощь будет высоко оценена.

+0

Как вы определяете "борьбу"? Вы получаете ошибки? Если да, то какие ошибки? Если вы не получаете ошибок, подтвердили ли вы, что ваш код вызывается? Является ли приведенный выше код буквально вашим кодом? Для функции 'insert_data' требуется параметр, но кнопка не будет передавать ему никаких параметров. –

+0

Нет, я действительно в темноте о том, с чего начать. Код Tkinter работает отлично, но он пытается связать три функции 'insert' с полями ввода и кнопками. На данный момент у меня просто бессмысленный графический интерфейс. – Ted

ответ

1

Нормальный способ приблизиться к этому - это чтобы ваша кнопка вызывала функцию специально для этой кнопки. Обязанности этой функции состоят в том, чтобы собрать данные из графического интерфейса, вызвать некоторую функцию, которая использует данные, а затем отправить любые результаты обратно в графический интерфейс.

Например:

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

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

выше не будет работать с кодом вас в курсе, но он дает общее представление. Одна из причин, по которой он не будет работать с кодом, который вы опубликовали, заключается в том, что entry1 и т. Д. Являются локальными переменными. Вам следовало бы использовать более объектно-ориентированный подход, поэтому эти переменные являются всеми атрибутами класса. Вы можете увидеть ответы на вопросы Best way to structure a tkinter application.

Смежные вопросы