我在Windows7上使用Python2.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中包含了相同的功能,而我只是忽略了它?这似乎是唯一遗漏的事情之一。
发布于 2017-12-06 23:25:23
我刚刚了解到,显然只有root需要成为Tix类。由于Tk,因此ttk,类似乎可以很好地添加到Tix根(因为它们中的大多数都扩展了Tkinter类),这似乎是一个“修复”。所以我的问题可能已经通过改变
root = tk.Tk()
至
root = Tix.Tk()
这确实要求我将Tix放入程序中我不想要的一部分,用于封装目的,但我猜没有其他方法。
https://stackoverflow.com/questions/47676832
复制相似问题