Я работаю над созданием простого графического интерфейса и столкнулся с проблемой при попытке передать переменную события в другую функцию, которая уже имеет переменную события.
Я пытаюсь использовать переменную "sqlItemx", которая является переменной события для "self.item1", в функцию "addNumbs".
Как я могу передать эту переменную для дальнейшего использования?
Я попытался просто передать переменную в обычном соглашении, но у меня это не сработало.
Ниже приведен фрагмент моего кода:
def listitems(self, event):
for widget in self.itemFrame.winfo_children():
widget.destroy()
searchLettersx = event.widget['text']
mycursor.execute("SELECT Name FROM inventory WHERE Name LIKE '" + searchLettersx + "%' ")
myresult = mycursor.fetchall()
rcount = 0
ccount = 0
for y in myresult:
self.item1 = tk.Button(self.itemFrame, text=y, bg='white', fg='deep sky blue', font=("Helvetica", 18), height='4', width='22')
self.item1.grid(column=ccount, row=rcount)
self.item1.bind('<Button-1>', self.addtoCart)
if rcount >= 5:
ccount += 1
rcount = 0
rcount += 1
def addtoCart(self, event):
win = tk.Toplevel(bg="white")
win.wm_title("Add to Cart")
sqlItemx = event.widget['text']
frame = tk.Frame(win)
frame.grid()
self.numpadFrame = tk.Frame(win, pady='20', bg="white")
self.numpadFrame.grid(column='0', row='2')
itemLabel = tk.Label(win, text=sqlItemx, bg="white", font=("Helvetica", 18), pady="30")
itemLabel.grid(row=0, column=0)
numLabel = tk.Label(win, text="How many? ", bg="white", font=("Helvetica", 18), pady="30", anchor='e', justify='left')
numLabel.grid(row=1, column=0)
numbers = ["1", "2", "3", "4" , "5" , "6" , "7" , "8" , "9" , " " , "0" , " "]
count = 0
for r in range(4):
for c in range(3):
numpad = tk.Button(self.numpadFrame, text=numbers[count], height='4', width='8', bg='white', fg='deep sky blue', font=("Helvetica", 18))
numpad.grid(row=r+1,column=c)
numpad.bind('<Button-1>', self.addNumbs)
count += 1
finalize = tk.Button(win, text="Submit", height='2', width='14', bg='white', fg='deep sky blue', font=("Helvetica", 18))
finalize.grid(column='0', row='7', columnspan='4')
finalize["command"] = win.destroy
def addNumbs(self, event):
numPadx = event.widget['text']
sql = "INSERT INTO tempcart (item, count) VALUES (%s, %s)"
val = ("item", numPadx)
addtempCart.execute(sql, val)
mydb.commit()
gettempCartID.execute("SELECT ID FROM tempcart ORDER BY ID DESC LIMIT 1")
gettempCartID_result = gettempCartID.fetchall()
gettempCart.execute("SELECT item, count FROM tempcart")
gettempCart_result = gettempCart.fetchall()
for y in gettempCart_result:
for z in gettempCartID_result:
self.cartItem = tk.Label(self.cartFrame, text=y, bg="white", font=("Helvetica", 20))
self.cartItem.grid(column="0", row=z)
mydb.commit()
Моя конечная цель - иметь возможность передать значение этой переменной в addNumbs и использовать его как одно из значений в переменной val для моего оператора MySQL.