首页 > 解决方案 > tkinter 库中 python 类中的属性错误

问题描述

from tkinter import *
gui = Tk()
gui.geometry("500x500")
gui.configure(bg='orange')
class main:
    def __init__(self,master):
        self.master=master
        self.frame1= Frame(self.master,bg='orange')
        self.frame1.pack(side=TOP)
        self.metho()
    def metho(event,self):
        self.bnt1 = Button(self.frame1,bg='orange',text='print',height=2,width=7)
        self.bnt1.grid(row=0,column=1)
        self.bnt1.bind("<Enter>",self.ty)

    def ty(self):
        print("hello")

i = main(gui)
gui.mainloop()

这是错误:

TypeError: metho() missing 1 required positional argument: 'self'

嘿!我正在尝试绑定我的按钮,但出现错误。请帮助我如何解决此错误。我会感谢你的。

标签: pythontkinter

解决方案


考虑到该metho方法正在创建按钮,而该ty方法是您将其绑定到的回调:

  1. 从 中删除 'event' 参数metho,因为 tkinterevent不会发送到此方法。
  2. 添加 'event' 参数作为该ty方法的第二个参数,因为您将按钮绑定到此方法。

这将为您留下:

    def metho(self): # this line changed
        self.bnt1 = Button(self.frame1,bg='orange',text='print',height=2,width=7)
        self.bnt1.grid(row=0,column=1)
        self.bnt1.bind("<Enter>",self.ty)

    def ty(self, event): # this line changed
        print("hello")

有关更多信息,请参阅文档: https ://docs.python.org/3/library/tkinter.html#bindings-and-events


推荐阅读