我在 Windows 7 上的 Python 2.7 中使用 Tkinter,发现需要创建一个带有树型复选框列表的弹出框。我在 Tkinter 或 ttk 中找不到这个。但是,我确实在 CheckList 小部件的 Tix 中找到了它。我有一个使用 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 中是否包含相同的功能而我只是忽略了它?它似乎是唯一被遗漏的东西之一。