当前位置: 首页 > 知识库问答 >
问题:

我不知道为什么会出现这样的错误:“缺少1个必需的位置参数:'self'”[duplicate]

成和悌
2023-03-14

这是我的代码:


from tkinter import Tk, Button
import GUI

root = Tk()
b = GUI.time


button1 = Button(
    root, text="Local time", command=b.local_time  # text on top of button
)  # button click event handler
button1.pack()

button2 = Button(
    root, text="Greenwich time", command=b.greenwich_time  # text on top of button
)  # button click event handler
button2.pack()

root.mainloop()

从我的课堂上获得b.local_time和b.greenwich_time:

from time import strftime, localtime, gmtime
class time:
    def __init__(self):
        self.gm_time = strftime("Day: %d %b %Y\nTime: %H:%M:%S %p\n", gmtime())
        self.l_time = strftime("Day: %d %b %Y\nTime: %H:%M:%S %p\n", localtime())

    def greenwich_time(self):
        print("Greenwich time:\n" + self.gm_time)

    def local_time(self):
        print("Local time:\n" + self.l_time)

但是,当我点击按钮时,我会得到错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\carol\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
TypeError: local_time() missing 1 required positional argument: 'self'

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\carol\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
TypeError: greenwich_time() missing 1 required positional argument: 'self'

有人可以向我解释为什么缺少必要的论点??谢谢!!!

共有1个答案

钱选
2023-03-14

b=GUI. time不会创建time类的实例;它只是使b成为类的另一个名称。因此,b.local_time不是绑定方法;而是函数。由于按钮回调在被调用时没有提供任何参数,因此函数缺少Self参数的参数。

你想要的

b = GUI.time()
 类似资料:
  • 我无法通过错误: 我检查了几个教程,但似乎没有什么不同于我的代码。我唯一能想到的是Python3.3需要不同的语法。 如果我理解正确,会自动传递给构造函数和方法。我做错了什么?

  • 我是Python的新手,我正在尝试学习如何使用类。有人知道这怎么不起作用吗?任何关于关键字“self”的额外提示都将不胜感激。 代码: 错误:

  • 问题内容: 我是python新手,碰壁了。我遵循了一些教程,但无法克服错误: 我检查了一些教程,但似乎与我的代码没有什么不同。我唯一能想到的是python 3.3需要不同的语法。 主要技巧: 泵类: 如果我正确理解,“自我”将自动传递给构造函数和方法。我在这里做错了什么? 我正在将Windows 8与python 3.3.2一起使用 问题答案: 你需要在此处实例化一个类实例。 采用 小例子

  • 我正在学习python。我创建了一个包含2个方法的类可视化工具。现在我想在第二个方法中调用第一个方法。我读到我必须使用self: 这很有效。现在我添加了其他参数: 我从我的调用它: 现在我得到一个错误: 我检查了,参数3在那里,参数序列是相同的。我认为它与自我冲突。 我怎样才能解决这个问题?我的类中是否需要init方法? 编辑:在我的主页上:

  • 我尝试在谷歌中找到解决方案,但谷歌中的所有解决方案都不适合我,也许在这里我得到了正确的答案。 我有以下代码: 我得到了这个错误: 回溯(最后一次调用):文件“位置文件”,第42行,在g=gui_main()文件“位置文件”的第26行,在init btn_next=按钮(self.win_about,text=“next”,fg=“red”,command=gui_main.screen_menu(

  • 我试图创建一个代码,它需要一个用户ID,然后检查它是否与一个匹配,如果它这样做了,它会发送一条消息...我一直得到错误TypeError:on_message()缺少1所需的位置参数:'消息'...