【发布时间】:2020-07-05 11:04:35
【问题描述】:
对不起,如果这是一个愚蠢的问题,但我是初学者,在谷歌上找不到答案,所以我想在这里问学习。当我写作时
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()
【问题讨论】:
-
您能否确保您提供minimal reproducible example - 最短的代码,其他人可以在不进行任何更改的情况下复制和粘贴以查看完全相同的错误?现在的代码从不尝试invoke
play_b,因此在调用时发生的错误永远不会有机会发生。 -
不清楚
play_button()是什么。这是在哪里定义的?错误来自play_b(),但你没有显示你在哪里调用它。 -
您显然是在尝试调用类本身(类似于
Buttons.play_b())上的方法,而不是类的实例(这将是Buttons().play_b())。后者是类的正常使用方式。 -
...也就是说正常的用法是
buttons = Buttons(); buttons.play_b(). -
我已经编辑了帖子并编写了我写的所有代码
标签: python