Python Tkinter:如何将kwargs添加到继承自的类中?
如何将关键字参数()添加到从Python Tkinter:如何将kwargs添加到继承自的类中?,python,class,tkinter,Python,Class,Tkinter,如何将关键字参数()添加到从tk.Frame继承的Tkinter类中?例如,我要做的就是设置帧的宽度和高度(或任何其他选项) 更广泛的问题是:如何将**kwargs添加到类本身从中继承的对象 class profiles(tk.Frame): def __init__(self, parent, *args, **kwargs): self.parent = parent kwargs['width'] = 900 kwargs['height'] = 600
tk.Frame
继承的Tkinter类中?例如,我要做的就是设置帧的宽度
和高度
(或任何其他选项)
更广泛的问题是:如何将**kwargs添加到类本身从中继承的对象
class profiles(tk.Frame):
def __init__(self, parent, *args, **kwargs):
self.parent = parent
kwargs['width'] = 900
kwargs['height'] = 600
super(profiles, self).__init__(parent, *args, **kwargs)
编辑:
下面是一个完整的代码示例,说明了我试图理解的内容。这是全部代码:
import tkinter as tk
class profiles(tk.Frame):
def __init__(self, parent, *args, **kwargs):
self.parent = parent
kwargs['width'] = 900
kwargs['height'] = 600
kwargs['background'] = 'red'
#tk.Frame.__init__(self, parent, *args, **kwargs)
super(profiles, self).__init__(parent, *args, **kwargs)
#self.parent.geometry('900x600')
self.profile_name_label = tk.Label(self.parent, text='Profile name:')
self.profile_name_label.grid(row=0, column=0, padx=(20), pady=20)
self.ProfileNameVar = tk.StringVar()
self.profile_name_entry = tk.Entry(self.parent, textvariable=self.ProfileNameVar)
self.profile_name_entry.grid(row=0, column=1, pady=(20))
root = tk.Tk()
profiles(root)
root.mainloop()
有关此代码的问题:
self.parent.geometry('900x600')
按照我的预期调整窗口大小kwargs['width']=900和kwargs['height']=600是否应该做同样的事情,因为tk.Frame
位于其父root
内部?我添加的kwargs
似乎没有一个做任何事情kwargs['background']='red'
,我也看不到任何效果。我见过使用这种语法的人的例子:背景色为什么不变成红色?只需直接添加您想要添加的内容,而无需将其添加到
kwargs
:
class profiles(tk.Frame):
def __init__(self, master, *args, **kwargs):
tk.Frame.__init__(self, master, width=900, height=800, *args, **kwargs)
只需直接添加您想要添加的内容,而无需将其添加到
kwargs
:
class profiles(tk.Frame):
def __init__(self, master, *args, **kwargs):
tk.Frame.__init__(self, master, width=900, height=800, *args, **kwargs)
你可以这样做:
class Profiles(tk.Frame):
def __init__(self, parent, *args, **kwargs):
self.parent = parent
kwargs.update(width=900, height=600)
super(profiles, self).__init__(parent, *args, **kwargs)
如果在调用
Profiles()
时传递关键字,则会覆盖这些关键字。需要额外的逻辑来避免这种情况。您可以这样做:
class Profiles(tk.Frame):
def __init__(self, parent, *args, **kwargs):
self.parent = parent
kwargs.update(width=900, height=600)
super(profiles, self).__init__(parent, *args, **kwargs)
如果在调用
Profiles()
时传递关键字,则会覆盖这些关键字。需要额外的逻辑来避免这种情况。那么实际上您总是强制高度和宽度?代码有什么问题?那么实际上您总是强制高度和宽度?代码有什么问题?如果width
或height
已经出现在kwargs
中,这将导致重复参数错误如果宽度
或高度
已存在于kwargs
中,这将导致重复的参数错误