python - 将 Tix 小部件添加到 Tkinter 容器

标签 python python-2.7 user-interface tkinter tix

我正在 Windows 7 上的 Python 2.7 中使用 Tkinter,发现需要创建一个带有树形复选框列表的弹出框。我在 Tkinter 或 ttk 中找不到这个。不过,我确实在 Tix 的 CheckList 小部件中找到了它。我得到了一个使用 Tix 的独立工作示例,但我不知道如何将 Tix.CheckList 添加到控制主程序的 ttk.Frame 中。

我肯定没有被迫从头开始使用 Tix 框架吗?

import Tix
import pandas as pd
import Tkinter as tk

class TreeCheckList(object):
    def __init__(self, root):
        self.root = root

        self.cl = Tix.CheckList(self.root)
        self.cl.pack(fill=Tix.BOTH, expand=Tix.YES)
        self.cl.hlist.config(bg='white', bd=0, selectmode='none', selectbackground='white', selectforeground='black', drawbranch=True, pady=5)

        self.cl.hlist.add('ALL', text='All Messages')

        self.cl.hlist.add('ALL.First', text='First')
        self.cl.setstatus('ALL.First', "off")

        self.cl.hlist.add('ALL.Second', text='Second')
        self.cl.setstatus('ALL.Second', "off")

        self.cl.autosetmode() 

def main():
    root = Tix.Tk()
    top = Tix.Toplevel(root)

    checklist = TreeCheckList(top)
    root.update()
    top.tkraise()
    root.mainloop()

if __name__ == '__main__':
    main()

上面的代码在使用所有 Tix 小部件的独立程序中运行。但是,当我尝试将其实现到较大的程序中时,我收到 TclError: invalid command name "tixCheckList"
为了在独立环境中模拟这一点,我更改了以下行:

root = Tix.Tk()
top = Tix.Toplevel(root)

root = tk.Tk()
top = tk.Toplevel(root)

我希望我可以实现一个 Tix.Toplevel,将其放在 tk.Tk() 根上,但同样的问题。

我是否只允许在使用 Tix 小部件时使用 Tix 框架,或者我是否误解了什么?如果有人有好的 Tix 文档,我会喜欢我能得到的任何东西。看来关于它的好文档很少而且相距甚远。或者 ttk 中是否包含相同的功能而我只是忽略了它?这似乎是唯一被遗漏的事情之一。

最佳答案

我刚刚了解到,显然只有 root 需要是 Tix 类。由于 Tk 以及 ttk,类似乎都很好地添加到 Tix 根(因为它们中的大多数无论如何都扩展了 Tkinter 类),这似乎是一个“修复”。所以我的问题可能通过改变就解决了

root = tk.Tk()

root = Tix.Tk()

这确实需要我将 Tix 拉入我的程序中我不希望用于封装目的的一部分,但我想没有其他方法。

关于python - 将 Tix 小部件添加到 Tkinter 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47676832/

相关文章:

python - 如果出现空格而不是空格的情况,如何使用正则表达式

python - 如何使用 beautifulsoup 提取段落标签中的完整文本

python - 如何在 factory-boy 中使用 create_batch 时为属性设置序列?

python-2.7 - 测试 Scipy;得到 "No module named msvccompiler in numpy.distutils; trying from distutils"

python - 将对象转储到 JSON 文件的两种方法有什么区别吗?

javascript - 良好的 UI 允许用户将字段恢复为默认值

javascript - 用于指令的 Angular API

python - 无法启动设计的pyQt应用程序

python - 如何在Keras中为 'Tensor'对象赋值?

python-2.7 - 使用 Python boto3 设置或修改 AWS Lambda 环境变量