gpt4 book ai didi

python - 为什么我的 Frame 子类在 init 中抛出错误?

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:48 25 4
gpt4 key购买 nike

我的程序如下:

from Tkinter import *
class TFrame(Frame):
def __init__(self, master=None, cnf={}, **kw):
Frame.__init__(self, master, cnf, kw)

if __name__ == '__main__':
root = Tk()
tf = TFrame(root)
tf.pack()
root.mainloop()

我得到这个错误:

Traceback (most recent call last):
File "testFrame.py", line 11, in <module>
tf = TFrame(root)
File "testFrame.py", line 7, in __init__
Frame.__init__(self, master, cnf, kw)
TypeError: __init__() takes at most 3 arguments (4 given)

我怎么会在这里得到一个TypeError?我做了类似的事情,比如 Tkinter.Label 类。

Frame类的代码在这里:

`class Frame(Widget):
"""Frame widget which may contain other widgets and can have a 3D border."""
def __init__(self, master=None, cnf={}, **kw):
"""Construct a frame widget with the parent MASTER.

Valid resource names: background, bd, bg, borderwidth, class,
colormap, container, cursor, height, highlightbackground,
highlightcolor, highlightthickness, relief, takefocus, visual, width."""
cnf = _cnfmerge((cnf, kw))
extra = ()
if 'class_' in cnf:
extra = ('-class', cnf['class_'])
del cnf['class_']
elif 'class' in cnf:
extra = ('-class', cnf['class'])
del cnf['class']
Widget.__init__(self, master, 'frame', cnf, {}, extra)`

最佳答案

您需要在对 Frame.__init__ 的调用中解压 kw

这应该适合你。

from Tkinter import *
class TFrame(Frame):
def __init__(self, master=None, cnf={}, **kw):
Frame.__init__(self, master, cnf, **kw)

if __name__ == '__main__':
root = Tk()
tf = TFrame(root)
tf.pack()
root.mainloop()

问题是 Frame 在其调用签名中使用了 **kw,它需要可变数量的关键字参数,但您正试图传递一个字典作为位置参数。

关于python - 为什么我的 Frame 子类在 init 中抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com