如何获取单个行的值?

2024-10-01 22:29:23 发布

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

我正在做一个程序,使用一个列表,有2行5列。每个元素都是一个条目。我希望能够访问列表中整行的所有列。你知道吗

当我一次访问所有行中的所有元素时,它就工作了。但是当我试图得到一行的值时,它不起作用

这是有效的代码:

#Build the grid and append to the listCounter list.
for i in range(2):
    for x in range(5):
        entry = Entry(frame, text="", width=5)
        entry.grid(row=i, column=x)
        listCounter.append(entry)

#Get the value of every row
def btnClick():
    sum = 0
    for puntuation in listCounter:           
        sum += int(puntuation.get())
    print(sum)

但是当我尝试使用listCounter[0]获取一行的所有条目时,它不起作用:

def btnClick():
    sum = 0
    for puntuation in listCounter[0]:           
        sum += int(puntuation.get())
    print(sum)

我得到以下错误:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Rober\AppData\Local\Programs\Python\Python37- 
32\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "D:/PyProjects/TestCanvas/Connect4.py", line 25, in btnClick
for puntuation in listCounter[0]:
File "C:\Users\Rober\AppData\Local\Programs\Python\Python37- 
32\lib\tkinter\__init__.py", line 1489, in cget
return self.tk.call(self._w, 'cget', '-' + key)
TypeError: can only concatenate str (not "int") to str

所以我试着获取关于listCounter的信息:

print(type(listCounter))   --> <class 'list'>
print(type(listCounter[0]) --> <class 'tkinter.Entry'>

这里到底有什么问题,我该怎么解决?你知道吗


Tags: theinpyfortkinterlinecallfile
2条回答

所以,看看这个,我认为你的困惑是listCounter的“类型”。它不是行的列表,每个行都是项(列)的列表。它是每个Entry的列表,每个Entry独立地控制它所在的行和列。就像你把棋盘上的一排棋子拆开,把它们放在一起。你仍然可以独立地浏览每一行,只需要做一点工作。你知道吗

看起来有2行5列,所以总共有10个条目。如果你想打印出len(puntuation),我猜是10。它看起来还存储在row-major order中。所以,第一行的总和是:

def btnClick():
    sum = 0
    for puntuation in listCounter[0:5]:
        sum += puntuation.get()
    print(sum)

如果有用的话就告诉我!你知道吗

如果要创建正确的二维列表(列表列表),则需要显式创建嵌套元素:

for i in range(2):
    row = []
    for x in range(5):
        entry = Entry(frame, text="", width=5)
        entry.grid(row=i, column=x)
        row.append(entry)
    listCounter.append(row)

现在您将能够索引listCounter[0],并获得第一行的元素。以前,您将listCounter作为10个元素的单个列表,listCounter[0]只是一个Entry对象,这是可以理解的。你知道吗

相关问题 更多 >

    热门问题