请帮帮我。在这个用于创建按钮的简单tkinter程序中,我提供了所有三个参数,但是关于位置参数的错误却出现在屏幕上。对不起,我的英语不好。
from tkinter import *
class Button:
def __init__(self, row, column, frame):
self.row = row
self.column = column
b = Button(frame).grid(row = self.row, column = self.column)
tk = Tk()
b1 = Button(row = 1, column = 1, frame = tk)
tk.mainloop()
错误:
重新启动:C:\ Users \ vnira \ Documents \ python.projects \ Flappy Bird \ whiteboard.py
追溯(最近一次通话):
中的文件“ C:\ Users \ vnira \ Documents \ python.projects \ Flappy Bird \ whiteboard.py”,第11行 b1 =按钮(行= 1,列= 1,框架= tk)
init
中的文件“ C:\ Users \ vnira \ Documents \ python.projects \ Flappy Bird \ whiteboard.py”,第7行 Button(frame).grid(row = self.row,column = self.column)
TypeError: init ()缺少2个必需的位置参数:“ column”和“ frame”
预先感谢
答案 0 :(得分:3)
ValueCollection<TKey, TValue>
当tkinter具有一个Button类时,您创建了一个Button类。使用您自己的变量名可能会有所帮助:)我想它正在尝试递归地创建您创建的Button类的实例,而不是在tkinter模块内部创建Button类的实例。
答案 1 :(得分:2)
在__init__
类的Button
中,您尝试使用Button
类的新实例:
b = Button(frame)
由于button.__init__
接受3个参数,因此row, column, frame
脚本失败。如果您确实也通过了row
和column
,则将遇到递归问题,在这些问题中您将无限创建新的Button
实例。
编辑:正如评论和其他答案所指出的那样,tkinter
有自己的Button
类,您正在覆盖它,这就是为什么您应该避免这样做的原因
from tkinter import *
,而只需import tkinter
并致电tkinter.Button
。