Я создаю систему организации автозапчастей и в рамках программы добавляю раздел с информацией о клиентах. Этот раздел раньше работал, однако теперь я добавил главное меню и программа ничего не добавляет в базу кроме трех {},{},{} когда должны быть данные
Я пытался изменить имена переменных и использовать глобальные переменные, но все равно получаю те же ошибки.
from tkinter import *
import DATABASE1
def get_selected_row(event):
global selected_tuple
index = listbox.curselection()[0]
selected_tuple=listbox.get(index)
Entry1.delete(0,END)
Entry1.insert(END,selected_tuple[1])
Entry2.delete(0,END)
Entry2.insert(END,selected_tuple[2])
Entry3.delete(0,END)
Entry3.insert(END,selected_tuple[3])
def View_Command():
listbox.delete(0,END)
for row in DATABASE1.View():
listbox.insert(END,row)
def Add_Command():
DATABASE1.Insert(FirstName.get(),LastName.get(),PhoneNum.get())
listbox.delete(0,END)
listbox.insert(END,(FirstName.get(),LastName.get(),PhoneNum.get()))
View_Command()
def Delete_Command():
DATABASE1.Delete((selected_tuple[0]))
View_Command()
def Update_Command():
DATABASE1.Update(selected_tuple[0],FirstName.get(),LastName.get(),PhoneNum.get()) View_Command()
def OpenCustomerInfo():
global listbox
global FirstName
global LastName
global PhoneNum
global index
global Entry1
global Entry2
global Entry3
global scroll
CustomerInfo = Tk()
CustomerInfo.title("Customer Information")
CustomerInfo.iconbitmap(r'favicon.ico')
Label1 = Label(CustomerInfo,text = "Customer Forename")
Label1.grid(row = 0, column = 0)
Label2 = Label(CustomerInfo,text = "Customer Surname")
Label2.grid(row = 1, column = 0)
Label3 = Label(CustomerInfo,text = "Phone Number")
Label3.grid(row = 2, column = 0)
FirstName = StringVar()
Entry1 = Entry(CustomerInfo,textvariable=FirstName)
Entry1.grid(row = 0, column = 1)
LastName = StringVar()
Entry2 = Entry(CustomerInfo,textvariable=LastName)
Entry2.grid(row = 1, column = 1)
PhoneNum = StringVar()
Entry3 = Entry(CustomerInfo,textvariable=PhoneNum)
Entry3.grid(row = 2, column = 1)
listbox = Listbox(CustomerInfo, height=20,width=50)
listbox.grid(row = 0, column = 4, rowspan = 6, columnspan = 2)
scroll=Scrollbar(CustomerInfo)
scroll.grid(row = 0, column = 2, sticky = NS, rowspan=8)
listbox.configure(yscrollcommand=scroll.set)
scroll.configure(command=Listbox.yview)
listbox.bind('<<ListboxSelect>>',get_selected_row)
b1 = Button(CustomerInfo, text = "Add To Database", width = 17, command = Add_Command)
b1.grid(row = 3, column = 0, sticky = S)
b2 = Button(CustomerInfo, text = "Delete From Database", width = 17, command = Delete_Command)
b2.grid(row = 4, column = 0, sticky = N)
b3 = Button(CustomerInfo, text = "Update Database", width = 17, command = Update_Command)
b3.grid(row = 3, column = 1, sticky = S)
b4 = Button(CustomerInfo, text = "View Database", width = 17, command = View_Command)
b4.grid(row = 4, column = 1, sticky = N)
def MainMenu():
MainMenu = Tk()
MainMenu.title("Main Menu")
Label1 = Label(MainMenu, text = "Main Menu")
Label1.grid(row = 0, column = 0)
Button1 = Button(MainMenu, text = "Open Customer Information Page",command = OpenCustomerInfo)
Button1.grid(row = 1, column = 0)
MainMenu()
А это мой файл базы данных.
import sqlite3
def Connect():
connection = sqlite3.connect("Customers.db")
cursor = connection.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS Customers (ID INTEGER PRIMARY KEY, FIRSTNAME VARCHAR(15), LASTNAME VARCHAR(15), PHONENUM INTEGER)")
connection.commit()
connection.close()
def Insert(FIRSTNAME,LASTNAME,PHONENUM):
connection = sqlite3.connect("Customers.db")
cursor = connection.cursor()
cursor.execute("INSERT INTO Customers VALUES(NULL,?,?,?)",(FIRSTNAME,LASTNAME,PHONENUM,))
connection.commit()
connection.close()
View()
def View():
connection = sqlite3.connect("Customers.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM Customers")
row = cursor.fetchall()
connection.close()
return row
def Delete(ID):
connection = sqlite3.connect("Customers.db")
cursor = connection.cursor()
cursor.execute("DELETE FROM Customers WHERE ID=?",(ID,))
connection.commit()
connection.close()
def Update(ID,FIRSTNAME,LASTNAME,PHONENUM):
connection = sqlite3.connect("Customers.db")
cursor = connection.cursor()
cursor.execute("UPDATE Customers SET FIRSTNAME = ? , LASTNAME = ? , PHONENUM = ? WHERE ID = ?",(FIRSTNAME,LASTNAME,PHONENUM,ID))
connection.commit()
connection.close()
Connect()
Когда ввод берется из полей ввода в графическом интерфейсе, он должен добавить данные в базу данных, а затем показать обновленную базу данных, но вместо этого добавляет три пустых элемента, например {}, {}, {}
Вы, вероятно, запутались, используя global. Чтение Это плохая практика программирования в tkinter? по шаблону Альтернатива основному методу класса
После проверки кода, запускающего его самостоятельно, не находясь в главном меню, это означает, что он работает правильно, однако, как только страница информации о клиенте открывается в главном меню, он не работает, вместо этого он добавляет пустые переменные в базу данных.






Это слишком много кода для вопроса. Не могли бы вы попытаться сократить его до минимальный воспроизводимый пример? Кроме того, проверили ли вы, что ваши переменные содержат ожидаемые данные непосредственно перед записью в базу данных?