Нужна тема для блокировки следующей строки кода, но не для других - PullRequest
0 голосов
/ 02 января 2019

У меня есть метод, который использует поток для подключения к моей базе данных, чтобы проверить, существует ли пользователь в базе данных.У меня есть другой поток, который отвечает за обновление графического интерфейса.Мне нужен поток базы данных, чтобы блокировать код, который идет после него, пока он не завершится, но не блокировать поток GUI.Как мне это удается?

Я пробовал использовать команду join, но она блокирует поток GUI.И я попытался использовать цикл, который ничего не делает, пока поток базы данных не жив, но он тоже блокируется.

#GUI Thread
self.guiThread = threading.Thread(group= None, target=self.guiLoop)
self.guiThread.start()

#GUI Method
def guiLoop(self):
    while True:
        self.Update()

#Login Button Method
def onLoginButtonClick(self, event):
    id = self.idBox.GetValue()
    self.idBox.SetValue("")
    password = self.passwordBox.GetValue()
    self.passwordBox.SetValue("")
    self.retList = []
    self.testBool = False
    dbThread = threading.Thread(group= None, target=self.checkUser, args=(id, password, self.retList))
    dbThread.start()
    #TODO Blocking
    print (self.retList)

#Database Thread Method
def checkUser(self, id, password, retList):
    self.retList = DB.checkUser(id,password)

DB.checkUser - это метод, который проверяет базу данных, если у нее есть пользователь, и возвращает список с информацией о пользователе, или пустой список, если у него нет пользователя в базе данных.

1 Ответ

0 голосов
/ 29 января 2019

Получил решение - класс замедленной реакции от Wxpython.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...