Python Tkinter, представляющий элементы очередей в виде меток - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть приложение Tkinter, которое не предназначено для создания меток на основе значений моей очереди. Каждая этикетка содержит информацию о продукте. Каждый элемент очереди выбирается из моей таблицы базы данных заказа клиента. Однако мне нужно нажать кнопку «Завершить», которая выскакивает элемент очереди и удаляет метку из окна. Я почти заставил его работать, кнопка работает с первым ярлыком и больше не удаляет ярлыки после этого.

Я не включил код очереди для минимализма.

conn=sqlite3.connect("system.db")
cur=conn.cursor()
query = cur.execute("""SELECT orderid, product, size, quantity, milkOptions FROM 
activeCustomerOrders""").fetchall()
conn.commit()
conn.close()

customerQueue = Queue()
for row in query:
    customerQueue.enqueue(row)



class MyFirstGUI:
    def __init__(self, master):
        self.master = master
        master.title("A simple GUI")

        self.label = Label(master, text="This is our first GUI!")
        self.label.pack()

        self.completedButton = Button(master,text="Complete",width=30,height=5,bg="green")
        self.completedButton.pack(side=BOTTOM)
        self.completedButton.bind('<Button-1>', 
        self.orderFulfilled)



        for item in customerQueue.queue:
        self.button = Label(master,text=item,width=30,height=5,bg="red")
        self.button.pack(side=LEFT)


    def orderFulfilled(self, event):
        #print("hi")
        customerQueue.dequeue()

        for item in customerQueue.queue:
            self.button.pack_forget()
            #self.button = 
         Label(self.master,text=item,width=30,height=5,bg="red")

root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
+---------+-----------+--------+-------------+------------+----------+-------+------------+
| orderid |  product  |  size  | milkOptions | orderDate  | quantity | price | customerid |
+---------+-----------+--------+-------------+------------+----------+-------+------------+
|       1 | Espresso  | Small  | Soya        | 2019-10-29 |        1 | 1.0   |        1   |
|       2 | Cappucino | Small  | SemiSkimmed | 2019-10-29 |        1 | 1.0   |        1   |
|       3 | Cappucino | Small  | SemiSkimmed | 2019-10-29 |        1 | 1.0   |        1   |
|       4 | Cappucino | Medium | SemiSkimmed | 2019-10-29 |        1 | 1.0   |        1   |
+---------+-----------+--------+-------------+------------+----------+-------+------------+

1 Ответ

0 голосов
/ 04 ноября 2019

Посмотрите на https://stackoverflow.com/help/minimal-reproducible-example и это - он отслеживает метки, используя list:

#! python3
import sys
from tkinter import *

queue = "one two three".split()


class MyFirstGUI:
    def __init__(self, master):
        self.master = master
        master.title("A simple GUI")

        self.label = Label(master, text="This is our first GUI!")
        self.label.pack()

        self.completedButton = Button(master,text="Complete",width=30,height=5,bg="green")
        self.completedButton.pack(side=BOTTOM)
        self.completedButton.bind('<Button-1>', self.orderFulfilled)

        self.items = [] 
        for item in queue:
            button = Label(master,text=item,width=30,height=5,bg="red")
            button.pack(side=LEFT)
            self.items.append(button)

    def orderFulfilled(self, event):
        # for item in queue:
            button = self.items.pop(-1)
            button.pack_forget()
            # Label(self.master,text=item,width=30,height=5,bg="red")

root = Tk()
my_gui = MyFirstGUI(root)
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...