如何使用for循环从元组列表中获取每个索引,而不中断UI并使用tkinter将其添加到列表框中?

2024-03-28 19:51:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用PythonTkinter创建一个UI,并且正在从SQL数据库访问数据。使用这些数据,我想在UI上显示它,我想通过2秒的时间延迟显示每个索引。到目前为止,我已经设置了UI和时间延迟。我遇到的唯一问题是循环遍历来自SQL数据库的数据列表,并从SQL数据库获取每个单独的索引。当我尝试通过它循环时,UI停留在for循环中,当我按下另一个按钮执行其他任务时,UI冻结并且没有响应。我试图找到一种方法,在for循环中不必使用这个时间延迟,我应该在哪里设置时间延迟和for循环?另外,如何运行for循环以显示每个单独的索引,而不是一次运行所有索引

使用python Tkinter,并使用它创建了一个UI。还可以访问SQL数据库中的数据。我尝试了不同的方法将时间延迟实现到for循环中,这样每个数据索引都会在2秒的时间延迟内显示。我一直回到同一个问题上,它一直卡在那个卡在那个for循环中

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


Tags: theto数据方法self数据库uifor