首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将元组列表从一个追加到另一个

将元组列表从一个追加到另一个
EN

Stack Overflow用户
提问于 2019-09-29 23:23:57
回答 1查看 54关注 0票数 0

我正在创建一个UI,其中我从SQL数据库文件中获取一组数据并将其插入到列表框中。我使用的是Tkinter框架。我遇到了一个问题,我想把元组追加到另一个空数组上,这样我就可以在设定的延迟内追加有限数量的数据。我已经展示的代码,是我到目前为止创建的代码,但我收到了下面的错误,我不知道如何修复它。我也不太熟悉使用元组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    from tkinter import *
    import sqlite3 as sq
    import time

    def Record():
        conn = sq.connect('brian_UI_test.db')
        c = conn.cursor()
        c.execute("SELECT*FROM TEST")

       rows = c.fetchall() # Gets the data from the table

    counter = 0
    list1 = []
    for row in rows:
        counter = counter + 1
        Lb.insert(END,row)# Inserts record row by row in list box
        list1.append(row)
        print(row)
        time.sleep(1)
        if counter%4==0:
           for counter in list1:
            print(counter)
            Lb.insert(counter)



    c.close()
    conn.close()

    window = Tk()
    frame = Frame(window)

    Lb = Listbox(frame, height = 8, width = 25,font=("arial", 12)) 

    scroll = Scrollbar(frame, orient = VERTICAL) # set scrollbar to listbox for when entries exceed size of list box
    scroll.config(command = Lb.yview)

    scroll1 = Scrollbar(frame, orient = HORIZONTAL)
    scroll1.config(command = Lb.xview)

    Lb.config(yscrollcommand = scroll.set)
    Lb.config(xscrollcommand = scroll1.set) 

    scroll1.pack(side = BOTTOM, fill = X)
    Lb.pack(side = LEFT, fill = Y)
    scroll.pack(side = RIGHT, fill = Y)

    Lb.insert(0, 'Time,   Message') #first row in listbox

    b13 = Button(window, text = "OPEN DB File", width= 14, command=lambda:Record())
    b13.grid(row = 0, column = 7, padx = 10)

错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Traceback (most recent call last):
File "C:\Program Files (x86)\Microsoft Visual 
Studio\Shared\Python37_64\lib\tkinter\__init__.py",line 1705, in __call__return self.func(*args)
File "Interface.py", line 122, in <lambda>
b13 = Button(window, text = "OPEN DB File", width= 14, command=lambda:Record())
File "Interface.py", line 25, in Record
counter = counter + 1
TypeError: can only concatenate tuple (not "int") to tuple
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-30 02:04:24

您的问题可以简化为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
counter = 0
list1 = []
rows = [(1,2),(3,4,),(5,6,),(7,8),(9,10)]

for row in rows:
    counter = counter + 1 #after the first loop, counter is a tuple and cannot concatenate with an int
    list1.append(row)
    if counter % 4 == 0:
        for counter in list1: #you redefined counter here which is a tuple
            print(counter)

简单的解决方案是不在list1的for循环中使用名称counter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for item in list1:
    print(item)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58159967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文