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
    中,这将导致重复的参数错误