我必须在“只读”状态下使用Entry窗口小部件,然后我想通过insert方法更改文本:为此,我知道需要将窗口小部件置于“正常”状态,但我收到一个错误:那是“正常”吗?
例如
double sobel_emboss_kernel[3*3] = {
-1., -2., -1.,
0., 0., 0.,
1., 2., 1.,
};
const double filter_params[2*4] = {
1.0, 0.0,
1.0, 0.0,
1.0, 0.5,
9.0, 0.0
};
ImageRGB *imagergb;
ImageRGB *rgb_filtered;
imagergb = readRGB("lena.ppm");
rgb_filtered=filter_rgb(imagergb, sobel_emboss_kernel, 1, filter_params[2], filter_params[3]);
writeRGB("resultado_rgb.ppm",imagergb);
作为结果给我:
文件“ /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/ttk.py”,状态595 返回self.tk.splitlist(str(self.tk.call(self._w,“ state”,statespec))) _tkinter.TclError:无效的状态名称正常
答案 0 :(得分:1)
令人困惑的是,ttk小部件具有两个不同的“状态”概念。一个是名为state
的配置选项,一个是名为state
的方法。配置选项是更改窗口小部件可编辑性的简写。该方法用于获取和设置用于样式设置的多个内部状态。
这两种指定状态的方式接受不同的值。 “只读”状态是对两种状态均有效的一种状态,但“正常”状态仅对配置选项有效。
要使用state
方法,请传入 stateSpec ,它是一个或多个状态或取反状态的列表。例如,要在只读和非只读之间切换,您可以这样操作:
entry.state(["readonly"])
entry.state(["!readonly"])
这种指定窗口小部件状态的方式更加灵活和细粒度,旨在允许复杂的样式。例如,小部件可以一次处于只读,禁用,无效和悬停状态。
配置小部件是否可编辑的更简单方法是使用state
配置选项。它必须始终是字符串值“ normal”,“ disabled”或“ readonly”之一。
entry.configure(state="readonly")
entry.configure(state="normal")
配置选项的允许值是不言自明的。通过state
方法建立 stateSpec 的值如下: