我正在制作一个使用列表并且有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'>
这里到底是什么问题,我该如何解决?
答案 0 :(得分:2)
如果要创建适当的2D列表(列表列表),则需要显式创建嵌套元素:
section_id
现在,您将能够索引enrollments
并获取第一行的元素。以前,您将student_id
作为10个元素的单个列表,而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]
对象。
答案 1 :(得分:1)
因此,从这个角度来看,我认为您的困惑属于listCounter的“类型”。它不是行列表,每个行都是项目(列)列表。这是每个Entry
的列表,每个len(puntuation)
都独立地控制其所在的行和列。这就像您拆开棋盘的行并将它们彼此相邻放置一样。您仍然可以独立浏览每一行,只需要一点工作。
看起来好像有2行5列,所以总共有10个条目。如果您尝试打印出10
,我猜它是def btnClick():
sum = 0
for puntuation in listCounter[0:5]:
sum += puntuation.get()
print(sum)
。看起来它也存储在row-major order中。因此,第一行的总和为:
class Float2(types.TypeDecorator):
''' Float Type that replaces commas with dots on input '''
impl = types.Float
def process_bind_param(self, value, dialect): # insert
return value.replace(',','.')
def process_result_value(self, value, dialect): # select
return value
让我知道是否有帮助!