我正在做一个程序,使用一个列表,有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'>
这里到底有什么问题,我该怎么解决?你知道吗
所以,看看这个,我认为你的困惑是listCounter的“类型”。它不是行的列表,每个行都是项(列)的列表。它是每个
Entry
的列表,每个Entry
独立地控制它所在的行和列。就像你把棋盘上的一排棋子拆开,把它们放在一起。你仍然可以独立地浏览每一行,只需要做一点工作。你知道吗看起来有2行5列,所以总共有10个条目。如果你想打印出
len(puntuation)
,我猜是10
。它看起来还存储在row-major order中。所以,第一行的总和是:如果有用的话就告诉我!你知道吗
如果要创建正确的二维列表(列表列表),则需要显式创建嵌套元素:
现在您将能够索引
listCounter[0]
,并获得第一行的元素。以前,您将listCounter
作为10个元素的单个列表,listCounter[0]
只是一个Entry
对象,这是可以理解的。你知道吗相关问题 更多 >
编程相关推荐