首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中禁用checkboxtreeview小部件中的复选框

如何在Python中禁用checkboxtreeview小部件中的复选框
EN

Stack Overflow用户
提问于 2019-05-06 19:49:00
回答 1查看 535关注 0票数 0

我在Python脚本中使用ttkwidgets模块中的checkboxtreeview小部件。通过将状态设置为“选中”、“未选中”或“三态”,我可以使项目的复选框按预期显示。

有没有办法禁用复选框,即用户不能再通过单击它来更改状态?

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2020-01-09 00:47:24

您可以添加一个" disabled“标记,并在用户单击树时调用的_box_click()函数中签入该项目在更改其状态之前未被禁用。在下面的代码中,我复制了_box_click()方法的源代码并添加了

代码语言:javascript
复制
if self.tag_has("disabled", item):
    return  # do nothing when disabled

以禁用状态更改。我还配置了" disabled“标记,以便字体更亮,以便能够看到禁用的项目:self.tag_configure("disabled", foreground='grey')

下面是完整的代码和示例:

代码语言:javascript
复制
import ttkwidgets as tw
import tkinter as tk

class CheckboxTreeview(tw.CheckboxTreeview):

    def __init__(self, master=None, **kw):
        tw.CheckboxTreeview.__init__(self, master, **kw)
        # disabled tag to mar disabled items
        self.tag_configure("disabled", foreground='grey')

    def _box_click(self, event):
        """Check or uncheck box when clicked."""
        x, y, widget = event.x, event.y, event.widget
        elem = widget.identify("element", x, y)
        if "image" in elem:
            # a box was clicked
            item = self.identify_row(y)
            if self.tag_has("disabled", item):
                return  # do nothing when disabled
            if self.tag_has("unchecked", item) or self.tag_has("tristate", item):
                self._check_ancestor(item)
                self._check_descendant(item)
            elif self.tag_has("checked"):
                self._uncheck_descendant(item)
                self._uncheck_ancestor(item) 

root = tk.Tk()

tree = CheckboxTreeview(root)
tree.pack()

tree.insert("", "end", "1", text="1")
tree.insert("1", "end", "11", text="11", tags=['disabled'])
tree.insert("1", "end", "12",  text="12")
tree.insert("11", "end", "111", text="111")
tree.insert("", "end", "2", text="2")
root.mainloop()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56004616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档