为什么访问tkinter中的实例属性需要括号,而访问pygame中的实例属性需要点?

时间:2016-11-06 02:38:08

标签: python tkinter pygame

pygame中,我使用games.screen.width来访问width属性。

won_message = games.Message(value = "You won!",
                            size = 100,
                            color = color.red,
                            x = games.screen.width/2,
                            y = games.screen.height/2,
                            lifetime = 250,
                            after_death = games.screen.quit)

tkinter中,我使用self.result['text']来访问text属性

self.result = Label(self, text='Result:?')                            
self.result.grid(row=0, column=3, sticky=W) 
self.result['text'] = 'Finish'

有人可以向我解释为什么有不同的方法来访问属性吗?

1 个答案:

答案 0 :(得分:0)

对于tkinter,这些属性不是对象的属性,它们是底层tk小部件的属性,Tkinter类只是一个包装器。

访问这些属性的规范方法是使用configurecget方法。 Tkinter提供了一个类似于dict的界面,只是一种语法简写。

例如,以下两个陈述是相同的:

self.result.configure(text="Finish")
self.result["text"] = "Finish"

这些是:

print(self.result.cget("text"))
print(self.result["text"])