假设我有一个名为NewEntry
的类,其中包含2个tkinter小部件,ttk.Entry
和ttk.Button
,我希望每个小部件都传递**kw_ent
和{{1}分别用于Entry和Button小部件,以便在使用此类时启用代码灵活性。
但是,如下面的代码所示,定义2个kwargs会产生语法错误(以这种方式编码时非常明显)。
有没有办法通过2个kwargs?
**kw_but
答案 0 :(得分:4)
有没有办法通过2个kwargs?
很简单:不要使用**kwargs
符号。
class NewEntry(ttk.Frame):
def __init__(self, master=None, kw_ent=None, kw_but=None):
if kw_ent is None:
kw_ent = {}
if kw_but is None:
kw_but = {}
# your existsing code here
在实施NewEntry
时,您当然必须更加明确 - 假设在a = NewEntry(root, width=13)
中,width
应该是kw_ent
的一部分,您应该{39} ;需要:
a = NewEntry(root, kw_ent={"width":13})
作为旁注,您可能需要考虑一种比#34; ent"更易读的命名方案。或者"但是" - "条目"和"按钮"想到......简短并不意味着含糊不清,3个字母标识符不会让你的代码更快(但它们肯定会降低你的可读性)。