Мне нужен следующий скрипт для запуска скрипта в виде дерева, чтобы отобразить информацию, содержащуюся в моей базе данных:
from tkinter import *
from tkinter import ttk
import sqlite3
from tkinter.ttk import *
import os
root = Tk()
root.state('zoomed')
root.title("Inventory Balance")
conn = sqlite3.connect('MyStock.sql3')
def db():
global conn, mycursor
mycursor = conn.cursor()
def data():
tree.delete(*tree.get_children())
mycursor.execute("SELECT * FROM MyStock") # Set mycursor as row to execute in. Read database
for row in mycursor:
tree.insert('', 'end', values=row[0:6])
conn.close()
frame = Frame(root)
frame.pack()
style = ttk.Style()
style.configure("Treeview.Heading", font=("Arial", 14), foreground="yellow", background="black")
tree = ttk.Treeview(frame, columns=(0, 1, 2, 3, 4), height=30, show="headings")
tree.pack(side='left')
tree.heading(0, text="Item Code")
tree.heading(1, text="Description")
tree.heading(2, text="Category")
tree.heading(3, text="Unit")
tree.heading(4, text="Quantity")
tree.column(0, width=300)
tree.column(1, width=300)
tree.column(2, width=300)
tree.column(3, width=150)
tree.column(4, width=150)
# Inserting Scrollbar
scroll = ttk.Scrollbar(frame, orient="vertical", command=tree.yview)
scroll.pack(side='right', fill='y')
tree.configure(yscrollcommand=scroll.set)
# Configuring style
style = Style()
style.configure('W.TButton', font=('calibri', 10, 'bold', 'underline'), foreground='red')
# Program to open with Button1
def userform1():
os.system('python UserForm_Test_altered_.py')
# Inserting Buttons
''' Button 1'''
btn1 = Button(root, text='Exit', style='W.TButton', command=root.destroy)
btn1.pack(side='right')
''' Button 2'''
btn2 = Button(root, text='Issue / Receive', command=userform1)
btn2.pack(side='left')
db()
data()
root.mainloop()
С помощью кнопки отправки я открываю GUI, например: Userform_Test_altered_. py
С кодом:
from tkinter import *
import sqlite3
from tkinter.ttk import *
import os
root = Tk()
root.geometry('380x400')
# root.state('zoomed')
root.title("Received")
style = Style()
ItemCode = StringVar()
Description = StringVar()
Quantity = IntVar()
Unit = StringVar()
var = IntVar()
c = StringVar()
var1 = IntVar()
var2 = IntVar()
def database():
code = ItemCode.get()
# desc = Description.get()
quantity = Quantity.get()
# unit = Unit.get()
# dep = c.get()
conn = sqlite3.connect('MyStock.sql3')
with conn:
cursor = conn.cursor()
# sql = 'UPDATE MyStock SET Quantity=?, Category=?, Unit=?, Description=? WHERE ItemCode=?'
# cursor.execute(sql, (quantity, dep, unit, desc, code))
cursor.execute('UPDATE MyStock SET Quantity=? WHERE ItemCode=?', (quantity, code,))
cursor.close()
conn.commit()
def data2():
os.system('python main_screen.py')
# Inserting labels and field of input
label_0 = Label(root, text="Stock Movement", width=20, font=("bold", 20)).place(x=90, y=23)
label_1 = Label(root, text="Item Code", width=20, font=("bold", 11)).place(x=20, y=90)
entry_1 = Entry(root, textvar=ItemCode, font=("bold", 11)).place(x=180, y=90)
label_2 = Label(root, text="Description", width=20, font=("bold", 11)).place(x=20, y=140)
entry_2 = Entry(root, textvar=Description, font=("bold", 11)).place(x=180, y=140)
label_3 = Label(root, text="Category", width=20, font=("bold", 11)).place(x=20,y=190)
list1 = ['', 'BINDING', 'BOWS', 'CARTONS', 'CHEMICAL']
list = OptionMenu(root, c, *list1)
list.config(width=20)
c.set('CATEGORY')
list.place(x=178, y=190)
label_4 = Label(root, text="Quantity", width=20, font=("bold", 11)).place(x=20, y=290)
entry_4 = Entry(root, textvar=Quantity, font=("bold", 11)).place(x=180, y=290)
label_5 = Label(root, text="Unit", width=20, font=("bold", 11)).place(x=20, y=240)
entry_5 = Entry(root, textvar=Unit, font=("bold", 11)).place(x=180, y=240)
# Style of buttons
style.configure('W.TButton', font=('arial', 10, 'bold'), foreground='red')
style.configure('S.TButton', font=('arial', 10, 'bold'), foreground='blue')
# Inserting buttons
submit1 = Button(root, text='Submit', style='S.TButton', width=11, command=database).place(x=20, y=340)
exit1 = Button(root, text='Exit', style='W.TButton',width=11, command=root.destroy).place(x=260, y=340)
data2()
root.mainloop()
Мне нужно, чтобы количество было добавлено к количеству, отображаемому в базе данных при закрытии скрипта пользовательской формы. (Это количество может увеличиваться или уменьшаться, очевидно, основываясь на математических принципах, если вы добавите отрицательное число, оно будет вычитаться.)
В идеале соединение базы данных должно быть непрерывным, пока работает скрипт treeview .
Буду признателен за любую помощь в этом отношении. Мои знания о конкретных c формулировках и / или расчетах и о том, где разместить код, весьма ограничены.
Заранее спасибо