Python:从 ttk.Frame 继承时不能使用关键字参数
Python: Cannot Use Keyword Arguments when Inheriting from ttk.Frame
我正在尝试创建 ttk.Frame 对象的子class,但我注意到我无法将关键字参数传递到其父级的 init 方法中。这是我的 class:
的精简版
from tkinter import ttk
class MyFrame(ttk.Frame):
def __init__(self, parent, **kwargs):
super(MyFrame, self).__init__(parent, kwargs)
这是一个尝试创建我的 class 实例的示例(root 已分配给 tkinter.Tk()
):
my_frame = MyFrame(root, borderwidth=5)
这是我尝试创建 class:
实例时的错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\csmith\Documents\tmp\frame_test.py", line 5, in __init__
ttk.Frame.__init__(self, parent, kwargs)
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given
我知道可以在使用关键字参数的同时创建 Frame 对象,但我似乎无法弄清楚为什么我不能创建一个 class 来将它的关键字参数传递给 Frame 的 init 方法。任何建议表示赞赏!
将 kwargs
传递给函数时,请改用 **kwargs
。这意味着 'unpack as kwargs
',因为您必须将所有 kwargs
一个一个地放入。 'Unpack' 意味着 Python 会为你做那件事。
改变
super(MyFrame, self).__init__(parent, kwargs)
至
super(MyFrame, self).__init__(parent, **kwargs)
我正在尝试创建 ttk.Frame 对象的子class,但我注意到我无法将关键字参数传递到其父级的 init 方法中。这是我的 class:
的精简版from tkinter import ttk
class MyFrame(ttk.Frame):
def __init__(self, parent, **kwargs):
super(MyFrame, self).__init__(parent, kwargs)
这是一个尝试创建我的 class 实例的示例(root 已分配给 tkinter.Tk()
):
my_frame = MyFrame(root, borderwidth=5)
这是我尝试创建 class:
实例时的错误Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\csmith\Documents\tmp\frame_test.py", line 5, in __init__
ttk.Frame.__init__(self, parent, kwargs)
TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given
我知道可以在使用关键字参数的同时创建 Frame 对象,但我似乎无法弄清楚为什么我不能创建一个 class 来将它的关键字参数传递给 Frame 的 init 方法。任何建议表示赞赏!
将 kwargs
传递给函数时,请改用 **kwargs
。这意味着 'unpack as kwargs
',因为您必须将所有 kwargs
一个一个地放入。 'Unpack' 意味着 Python 会为你做那件事。
改变
super(MyFrame, self).__init__(parent, kwargs)
至
super(MyFrame, self).__init__(parent, **kwargs)