首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Tix小部件添加到Tkinter容器

将Tix小部件添加到Tkinter容器
EN

Stack Overflow用户
提问于 2017-12-06 22:36:11
回答 1查看 873关注 0票数 3

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

我当然不会被迫从头开始使用Tix框架吧?

代码语言:javascript
复制
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"

为了在独立环境中模拟这一过程,我更改了代码行:

代码语言:javascript
复制
root = Tix.Tk()
top = Tix.Toplevel(root)

代码语言:javascript
复制
root = tk.Tk()
top = tk.Toplevel(root)

我希望我能实现一个Tix.Toplevel,把它放在tk.Tk()根目录下,但问题是一样的。

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

EN

回答 1

Stack Overflow用户

发布于 2017-12-06 23:25:23

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

root = tk.Tk()

root = Tix.Tk()

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47676832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档