所以,我正在挖掘代码here,并且在每个类中(差不多)我都会看到构造函数cnf={}
,但除非我错过了它,否则它没有明确说明cnf /预期包含什么。任何人都可以清除这个吗?起初我认为这是传递给tkinter小部件的关键字,但kw适合于此。所以,我对cnf={}
扮演的角色以及extra=()
参数感到困惑。
答案 0 :(得分:4)
cnf必须是将选项名称映射到值的配置字典。它可以通过位置或名称传递(但不能同时传递!)。当多个小部件具有一组通用选项时,这非常有用。选项也可以传递(通过关键字),个别选项覆盖dict中的任何选项。我从这个实验验证了这些细节,从IDLE运行。 (如果从命令行运行以下命令行,请将'-i'添加到命令行或将root.mainloop()添加到代码中。)
import tkinter as tk
root = tk.Tk()
d = {'bg': 'red'}
tk.Label(root, d).pack()
tk.Label(root, d, text='abc').pack()
tk.Label(root, cnf=d, text='abc').pack()
tk.Label(root, d, text='abc', bg='blue').pack()
tk.Label(root, d, cnf=d, text='abc').pack()
结果(垂直堆叠)是一个空白的红色标签,2个红色的'abc'标签,一个蓝色的'abc'标签,以及IDLE的Shell中的TypeError。