Нет элемента в очереди, но должен быть поток Python - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю над проектом, который представляет собой графический интерфейс с отдельным потоком.Когда пользователь нажимает кнопку, запускается функция, которая отправляет данные в очередь и запускает другой поток.Затем другой поток получает данные из очереди и добавляет в них новые данные.Где графический интерфейс затем получит эти данные и что-то сделает.Но он застрял, говоря, что очередь пуста?Почему это так и как я могу это исправить?

def click():
            if self.uN.get() and self.pW.get():
                self.q.put("LOGIN")
                self.q.put(self.uN.get() + "," + self.pW.get())
            else:
                self.q.put("eFi")

            con = Connect(self.q)
            con.setDaemon(True)
            con.start()

            time.sleep(1)

            while True:
                root.update()
                try:
                    data = self.q.get(False)
                except queue.Empty:
                    pass
                else:
                    print(data + "+")
                    if data == "Fcon":
                        tkMessageBox.showerror("ERROR!", "Failed to connect to the server!")
                    elif data == "nCre":
                        tkMessageBox.showerror("ERROR!", "A text field is empty!")
                    elif data == "Gcon":
                        for item in root.winfo_children():
                            item.destroy()

                        self.mScreen()
                    else:
                        print("?")

                    print('!')
                    break

Вот другой код темы:

class Connect(Thread):
    def __init__(self, q):
        Thread.__init__(self)
        self.s = socket.socket()
        self.q = q

    def run(self):
        while True:
            try:
                data = self.q.get()
            except Exception as e:
                pass
            else:
                if data == "LOGIN":
                    self.login()
                elif data == "eFi":
                    self.q.put("nCre")
                    print("??????")

    def login(self):
        info = self.q.get().split(",")

        self.q.put("Gcon")
        print("GOD")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...