[英]How do I get values of an individual row?
我正在制作一個使用列表的程序,有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'>
究竟是什么問題,如何解決?
如果要創建正確的2D列表(列表列表),則需要顯式創建嵌套元素:
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
對象。
所以,看看這個,我認為你的混淆是listCounter的“類型”。 它不是行列表,每個行都是項目列(列)。 它是每個Entry
的列表,每個Entry
獨立地控制它所在的行和列。就像你拆開棋盤的行並將它們全部放在一起。 您仍然可以獨立完成每一行,只需要一點點工作。
看起來有2行5列,所以總共有10個條目。 如果你試圖打印len(puntuation)
,我猜它是10
。 它看起來也像以行主要順序存儲。 所以,第一行的總和是:
def btnClick():
sum = 0
for puntuation in listCounter[0:5]:
sum += puntuation.get()
print(sum)
如果有幫助,請告訴我!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.