条目小部件和状态“正常”

时间:2019-10-27 17:26:44

标签: python tkinter widget

我必须在“只读”状态下使用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:无效的状态名称正常

1 个答案:

答案 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 的值如下:

  • 活动-鼠标光标在小部件上,按下鼠标按钮将导致某些动作。 (又名“ prelight”(侏儒),“ hot”(Windows),“ hover”)。
  • 已禁用-窗口小部件在程序控制下被禁用(又称“不可用”,“无效”)。
  • 焦点-小部件具有键盘焦点。
  • 已按下-按下了窗口小部件(在Motif中又称“武装”)。
  • 已选择-选中按钮和单选按钮为“开”,“真”或“当前”。
  • 背景-Windows和Mac具有“活动”或前景窗口的概念。在后台窗口中为窗口小部件设置了背景状态,并在前景窗口中为那些窗口小部件清除了状态。
  • 只读-小部件不应允许用户修改。
  • 替代-特定于小部件的替代显示格式。例如,用于处于“三态”或“混合”状态的复选按钮和单选按钮,以及-default有效的按钮。
  • 无效-窗口小部件的值无效。 (可能的用途:扩展窗口小部件值超出范围,输入窗口小部件值验证失败。)
  • 悬停-鼠标光标在小部件内。这类似于激活状态。它在某些主题中用于小部件,这些部件除了小部件中的活动元素外,还为活动小部件提供不同的视觉反馈。