tkinter:是否可以使用本机Tcl / Tk tklib的ctext小部件?

时间:2017-12-05 12:37:09

标签: python tkinter tcl tk

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

1 个答案:

答案 0 :(得分:3)

我碰巧有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以及一个小的演示脚本。