簡體   English   中英

如何獲取單個行的值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM