У меня есть метод, который использует поток для подключения к моей базе данных, чтобы проверить, существует ли пользователь в базе данных.У меня есть другой поток, который отвечает за обновление графического интерфейса.Мне нужен поток базы данных, чтобы блокировать код, который идет после него, пока он не завершится, но не блокировать поток 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 - это метод, который проверяет базу данных, если у нее есть пользователь, и возвращает список с информацией о пользователе, или пустой список, если у него нет пользователя в базе данных.