Как получить каждый индекс, используя цикл for из списка кортежей, не прерывая пользовательский интерфейс и не добавляя его в список с помощью tkinter? - PullRequest
0 голосов
/ 20 октября 2019

Я создаю пользовательский интерфейс с использованием Python Tkinter и получаю доступ к данным из базы данных SQL. Используя эти данные, я хочу отображать их в пользовательском интерфейсе и отображать каждый индекс с 2-секундной задержкой. Пока что у меня настроен пользовательский интерфейс и задержка времени. Единственная проблема, с которой я сталкиваюсь - это циклический просмотр списка данных, поступающих из базы данных SQL, и получение каждого отдельного индекса из базы данных SQL. Когда я пытаюсь выполнить цикл через него, пользовательский интерфейс остается застрявшим в цикле for, а когда я нажимаю другую кнопку, чтобы выполнить какую-то другую задачу, пользовательский интерфейс зависает и не отвечает. Я пытаюсь найти способ, где мне не нужно использовать эту задержку в цикле for, где я должен установить задержку и цикл for? Кроме того, как запустить цикл for, чтобы отобразить каждый отдельный индекс, а не запускать все сразу?

Работа с Python Tkinter и создание пользовательского интерфейса с его использованием. Также можно получить доступ к данным из базы данных SQL. Я пробовал разные способы реализации временной задержки в цикле for, чтобы каждый индекс данных отображался с задержкой в ​​2 секунды. Я продолжаю возвращаться к той же самой проблеме, где она застревает в этом застрявшем цикле

def Record(self, counter=0):     
    conn  = sq.connect('brian_UI_test.db') #connects to SQL database
    c = conn.cursor()
    c.execute("SELECT * FROM TEST")
    rows = c.fetchall() # Gets the data from the SQL datatable
    unpackTuple(rows)  #converts tuples to a list
    num = 0
    list2 = []
    if counter < 5:
        list2.append(rows)
        for row in list2: 
            num = num+1
            self.Lb.insert(num, row) #insertdata from SQL onto listbox UI
            print (counter) 
            self.after(2000, lambda: self.Record(counter+1))#2seconddelay
    c.close()
    conn.close()        

ожидаемые результаты: дисплей 4.2, ожидание 2 секунды, дисплей 5.6, ожидание 2 секунд, дисплей 6.7, ожидание 2 секунд, дисплей7.8, подождите 2 секунды, дисплей 8.9, подождите 2 секунды, дисплей 10.6

фактические результаты: 4.2, 5.6, 6.7, 7.8, 8.9, 10.6

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