为tkinter`Entry`创建`class`

Guy*_*. D 0 python tkinter

我正在尝试创建一个class通用Entry实例.

我使用self.statuslist来改变它的值(自动更新的一部分).

但是,一些非常奇怪的事情发生了,我找不到它的起源:

创建一个名为的函数status,以便更改每个Entry值.当该函数的名称更改为任何其他 - 我收到此错误消息:

Traceback (most recent call last):    ####updated for entire traceback ####
File "schedualer.py", line 271, in <module>
sched_entries.get_stat[r-1][c].set(sch_file[r][c])
TypeError: 'method' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

任何想法为什么?

这是类代码.

class sched_entry (object):
  def __init__(self,master,r1,c1,offr,offc,bg1=["yellow"]):
    self.status=[]
    for r in range(r1):
        newrow=[]
        for c in range(c1):
            v=StringVar()
            z=Entry(master,relief=SUNKEN,width=cell_width,bg=bg1,textvariable=v,justify='center')
            z.grid(row=r+offr, column=c+offc)
            newrow.append(v)
        self.status.append(newrow)
  def status():           ###### when change to stat():   ---> I get the error
    return self.status
Run Code Online (Sandbox Code Playgroud)

我在调用时得到错误:

for r in range(1,tasks_total+1):   #update table with schdule.csv data
for c in range (len(sched_headers)-1):
    sched_entries.stat[r-1][c].set(sch_file[r][c]) ### error when method changed to "stat"
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 5

您有两个称为status:方法和包含列表的实例变量.一个会超越另一个; 你需要不同的名字.

虽然我不确定你为什么要首先使用该方法,因为它只返回变量.您应该完全删除该方法.