代码之家  ›  专栏  ›  技术社区  ›  adder

tkinter:可以使用原生Tcl/TkLlib的ctext小部件吗?

  •  2
  • adder  · 技术社区  · 8 年前

    我遇到了一个有趣的小部件( source code )它似乎支持语法高亮显示和其他一些功能。我想在我的tkinter应用程序中使用它,但我不确定这是否完全可行。我知道你可以用 tkinter.eval() 评估原始Tcl/Tk代码,但我不确定在评估整个源代码/将其放置在某处之后应该做什么-我如何实例化小部件并实际使用它?

    1 回复  |  直到 8 年前
        1
  •  3
  •   patthoyts    8 年前

    我碰巧有ctext的源代码(它是tklib的一部分),所以我可以使用TCLLIBPATH环境变量让我的Tcl库知道额外的包位置。然后就可以加载了。但是,您需要与python进行一些接口

    pat@uknml7167 ~ $ TCLLIBPATH=/opt/src/tklib/modules python3
    Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import tkinter as tk
    >>> root = tk.Tk()
    >>> root.tk.call('package','require','ctext')
    '3.3'
    

    所以简单的回答是“是的”。

    这里有一个例子 tkribbon 在这个网站上。我确信有更好的例子可以使用本机Tk包。

    基于上述内容的快速演示:

    class Ctext(tk.Widget):
        def __init__(self, master):
            tk.Widget.__init__(self, master, 'ctext')
    
    ctext = Ctext(root)
    ctext.pack(expand=True, fill='both')
    

    tkinter包装类已上载到 github 还有一个小的演示脚本。

    推荐文章