Tkinter - 使用 set_text 更新文本绘图

Tkinter - Updating text plotting using set_text

我在二维数组中有值,我使用以下几行来使用它们:

t1 = [[self.ax.text(i+.2,n-.6-j,myArray[0][j][i])
        for i in range(myArray.shape[2])]
        for j in range(myArray.shape[1])]

我正在尝试使用此更新它们:

t1.set_text(myArray[self.ref][0][0])

错误是:

AttributeError: 'list' object has no attribute 'set_text'

但是,我尝试只更新一个值,例如:

    t1 = self.ax.text(10,10, myArray[0][0][0])

它工作得很好。
我的问题是:如何一次更新整个数组值的绘图?通过更新,我的意思是删除以前的值并绘制一次新值,这样它们就不会堆积起来。

加法

我尝试应用此处提到的解决方案:

并将其扩展到我的问题,仍然没有用。

t1 是包含许多 text 元素的二维列表,您可以对

之类的内容执行相同的操作
t1 = []

for j in range(myArray.shape[1]):
    sublist = []        
    for i in range(myArray.shape[2]):
       txt = self.ax.text(i+.2,n-.6-j,myArray[0][j][i])
       sublist.append(txt)
    t1.append(sublist)

所以你可以用set_text()做类似的事情来改变文本

for j in range(myArray.shape[1]):
    for i in range(myArray.shape[2]):
       t1[i][j].set_text(myArray[0][j][i])

或使用enumerate()

for j, row in enumerate(t1):
    for i, cell in enumerate(row):
       cell.set_text(myArray[0][j][i])

或使用zip()

for row, arr_row in zi(t1, myArray[0]):
    for cell, arr_cell in zip(row, arr_row):
       cell.set_text(arr_cell)

顺便说一句:所有示例都未经过测试,因此可能需要进行一些更改。


使用 t1 = self.ax.text(10,10, myArray[0][0][0]) 将列表替换为单个元素,这样就失去了对所有元素的访问权。