Python 为tkinter条目创建“类”`

Python 为tkinter条目创建“类”`,python,tkinter,Python,Tkinter,我正在尝试为泛型条目实例创建一个类 我使用self.statuslist来更改它的值(自动更新的一部分) 但是,一些非常奇怪的事情发生了,我找不到它的起源: 创建名为status的函数,以更改每个条目值。当该函数的名称更改为任何其他名称时-我收到以下错误消息: Traceback (most recent call last): ####updated for entire traceback #### File "schedualer.py", line 271, in <modu

我正在尝试为泛型
条目
实例创建一个

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

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

创建名为
status
的函数,以更改每个
条目
值。当该函数的名称更改为任何其他名称时-我收到以下错误消息:

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
调用时,我得到错误信息:

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"

您有两个名为
status
:一个方法和一个包含列表的实例变量。一个将凌驾于另一个之上;你需要不同的名字

虽然我不确定为什么您首先需要这个方法,因为它只返回变量。您应该完全删除该方法

编辑2

重要提示:您忘记将
self
参数添加到类
sched\u条目中定义的函数中

python中实现方法
\uuuu getitem\uuuu()
的对象,如字典和列表,当您说:

self.status=[]
status是一个列表,因此它有
\uuu getitem\uuuuuuuuuuu()
,但您也会说:

def status(self): 
    return self.status
当出现问题时,如果一个方法(在本例中为status)没有
\uuu getitem\uu()
,则必须重命名其中一个,您可以执行以下操作:

def get_status(self): #here goes the self parameter
    return self.status
编辑

最重要的是,在看到编辑后,忘记添加
()
,这就是python实际执行方法的方式,如果不添加它,则只获取方法的引用,而不获取方法的执行和结果(在您的情况下,列表状态)


虽然名字是一样的,但效果很好。当我确实将
def status()
更改为
def stat()
时,我得到了描述的错误显示不起作用的代码,而不是起作用的代码。但是就像我说的,你根本不需要这个方法。这是什么意思?如果您需要有关不起作用的代码的帮助,请显示不起作用的代码。不要显示工作正常的不同代码。另外,始终显示完整的回溯。这是因为您以前从未调用过该方法,而是引用了重写该方法的实例变量。现在,您正在引用该方法,但仍然没有调用它,因为调用方法需要括号:
get\u stat()
。但是,第三次,你不需要这个方法,你应该删除它;直接参考
self.status
实例变量。确定。。。。所以当我打电话给status时,我实际上是从self.status获得状态的?hmmmas回答了前面的回答-当我更改名称时(正如您所建议的),给出了那个错误。@Guy.D,您能添加完整的代码并进行修改吗?还有一个例子,当您初始化objet sched_条目时?@Guy.D我现在理解了您的错误,您忘记了添加(),这实际上是python调用方法并执行的方式it@Guy.D,如果写入
sched_条目。get_status()
sched_条目。get_status
,则第一个条目将返回self.status,第二个将返回方法get_status(不执行它,将返回对象方法)@Guy.D是的,忘记在def中添加self参数,是def get_stat(self):。。。请阅读完整的最新答案,希望对您有所帮助
def get_status(self): #here goes the self parameter
    return self.status
sched_entries.get_status()[r-1][c].set(sch_file[r][c])