对不起,如果这是一个愚蠢的问题,但是我是一个初学者,并且无法在google上找到答案,因此我想在这里学习。当我写
Class Buttons:
def play_b(self):
self.play_button = Button(main_window, text="Play")
self.play_button.grid(row=0, column=0)
它返回TypeError: play_b() missing 1 required positional argument: 'self'
但是,当我编写以下代码时,它会完美工作:
class Buttons:
def play_b():
play_button = Button(main_window, text="Play")
play_button.grid(row=0, column=0)
我的问题是:为什么会这样?函数不应该总是带有self关键字吗?
编辑:这是到目前为止的所有代码:这是到目前为止的所有代码:
from tkinter import *
main_window = Tk()
main_window.geometry("720x480")
class Buttons:
def play_b():
play_button = Button(main_window, text="Play")
play_button.grid(row=0, column=0)
Buttons.play_b()
答案 0 :(得分:1)
我相信您已经弄乱了注释中提到的方法调用。像这样调用方法
obj = Buttons() # assuming no parameterized __init__ (constructor) method
obj.play_b()
在第二种情况下,这是一个静态方法,即它对对象(自己)的数据不做任何事情,因此可以正常工作。但是更改不会反映在对象中。有关静态方法here的更多信息。
编辑
更新问题后,我看到您直接调用了类方法,而没有实例化它。因此出现了问题。解决方案仍然与我之前提到的相同。首先创建一个对象(实例化),然后使用该对象调用该方法。