tkinter小部件的cnf参数

时间:2016-01-19 00:43:33

标签: python python-3.x tkinter

所以,我正在挖掘代码here,并且在每个类中(差不多)我都会看到构造函数cnf={},但除非我错过了它,否则它没有明确说明cnf /预期包含什么。任何人都可以清除这个吗?起初我认为这是传递给tkinter小部件的关键字,但kw适合于此。所以,我对cnf={}扮演的角色以及extra=()参数感到困惑。

1 个答案:

答案 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。