__init__() 中的类型错误,意外的参数 python

问题描述 投票:0回答:2

我有以下代码:

from tkinter import *

class Button:   
    def __init__(self, master):
        frame = Frame( master )
        frame.pack()

        self.printButton = Button(frame, text = "Print Message", command=self.printMessage)
        self.printButton.pack(side = LEFT)

        self.quitButton = Button(frame, text = "Quit", command = frame.quit)
        self.quitButton.pack(side = LEFT)

    def printMessage(self):
        print(" WORKING!! " )       



root = Tk()
b = Button(root)
root.mainloop()

无论如何这似乎都没有错......但是当我运行它时,终端说:

Traceback (most recent call last):
File "class.py", line 23, in <module>
b = Button(root)
File "class.py", line 10, in __init__
self.printButton = Button(frame, text = "Print Message", command=self.printMessage)
TypeError: __init__() got an unexpected keyword argument 'command'

我根据 tkinter 教程编写了所有这些代码。在本教程中,代码运行良好。任何帮助,将不胜感激。预先感谢!

python class tkinter init
2个回答
4
投票

Tkinter 已经有一个

Button
类,当您创建类时,您现在已经覆盖了名为
Button
的 tkinter 类。因此,当您尝试创建这样的 tkinter 按钮时:

self.printButton = Button(frame, text = "Print Message", command=self.printMessage)

您现在正在引用 your 按钮,因为您之前覆盖了 tkinter 按钮。由于你的按钮只接受一个参数,而你给了它三个参数,所以它会抛出一个错误。解决此问题的方法是将导入行更改为:

import tkinter as tk

然后使用

tk.*
引用任何 tkinter 函数。例如:

root = Tk()

将变成:

root = tk.Tk()

然后您的按钮将由

Button
引用,而 tkinter 按钮将由
tk.Button
引用。这样您就可以轻松地区分两者。不过,您也可以将按钮命名为
myButton
之类的名称,这也可以解决问题。


0
投票

类人员: def int(self, nom: str, 年龄: int, 类型: bool): self.nom = nom 自我年龄 = 年龄 self.流派 = 流派 print("构造者人员" + self.nom)

def SePresenter(self):
    # bonjour je m'appelle jean, j'ai 30ans
    # je suis majeur
    if self.genre:
        print("bonjour, je m'appelle" + self.nom + "j'ai" + str(self.age) + "ans")
        print("Genre : Masculin")
        if self.EstMajeur():
            print('je suis majeur')
        else:
            print("je suis mineur")
        print()
    else:
        print("Bonjour, je m'appelle" + self.nom + "j'ai" + str(self.age) + "ans")
        print("Genre : Feminin")
        if self.EstMajeur():
            print("je suis majeure")
        else:
            print("je suis mineure")
        print()

def EstMajeur(self):
    return self.age >= 18

personne1 = Personne('jean', 20, True)

© www.soinside.com 2019 - 2024. All rights reserved.