我正在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放入我不希望出于封装目的的程序的一部分,但是我想没有其他方法。

10-05 20:14