【问题标题】:Python change listbox colors in real timePython实时更改列表框颜色
【发布时间】:2016-12-13 01:47:54
【问题描述】:

Win7、Python 2.7、Tkinter

我在屏幕上同时有几个列表框,我正在设置一种让用户更改颜色(背景、文本颜色、边框宽度、边框颜色等)的方法。列表框、标签框、进度条、窗口框等等。

列表框(和其他小部件)标签在全局文件中声明,thuis:

globs.lb1 = tk.Listbox(root, ...

我可以很容易地更改属性,但是更新所有小部件的最佳方法是什么?

目前,在我的 Settings.py 文件中,我手动设置每个列表框(和其他小部件),但是,当然,如果我稍后添加小部件,我必须记住更改 Settings.py 文件。

我想用ttk,我觉得ttk可以让我改变样式,那么ttk会记住哪些小部件使用那个样式,但是ttk中没有Listbox。

如果有事件或类似性质的东西,我可以为每个列表框设置...

谢谢,马克。

【问题讨论】:

    标签: python tkinter listbox


    【解决方案1】:

    选项 1:定义 Listbox 的子类,注册您创建的每个列表框,以便当用户更改设置时,您可以遍历列表框的集合/列表。

    选项 2:使用 ttk.Combobox 或 ttk.Treeview(仅包含顶级项目,不扩展子项目)。我认为可以将树视图视为一个增压列表框,具有多列和可能的层次关系。

    【讨论】:

    • 该死的特里,太快了。我想我明白了,我可以使用列表框(其他小部件)标签作为列表中的条目制作一个全局列表,然后只需执行 for i in range(len(global_list)): ... 我喜欢它。谢谢。
    • 更好:for widget in registered_widgets: repaint(widget)。我最终可能会在 IDLE 中遇到同样的问题。用户可以自定义编辑器文本小部件(包括外壳),但不能自定义其他任何东西。我可以考虑选项 1,但有其他优先事项。我会等到选项 2 可行。我们开始使用 ttk 小部件。转换完成后,我学会了使用自定义样式,我可能会考虑通过样式自定义对话框
    猜你喜欢
    • 1970-01-01
    • 2012-11-15
    • 2012-10-23
    • 2011-02-03
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多