Python tkinter:是否可以使用原生Tcl/Tk-tklib';什么是ctext小部件?

Python tkinter:是否可以使用原生Tcl/Tk-tklib';什么是ctext小部件?,python,tkinter,tcl,tk,Python,Tkinter,Tcl,Tk,我遇到了一个有趣的小部件(),它似乎支持语法高亮显示和其他一些东西。我想在我的tkinter应用程序中使用它,但我不确定这是否完全可行。我知道您可以使用tkinter.eval()来评估原始Tcl/Tk代码,但我不确定在评估整个源代码/将其放置在某个地方之后应该做什么-如何实例化小部件并实际使用它?我碰巧有ctext的源代码(它是tklib的一部分)因此,我可以使用TCLLIBPATH环境变量让我的Tcl库知道额外的包位置。然后就可以加载了。但是,您需要与python进行一些接口 pat@ukn

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

我碰巧有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'
因此,简短的回答是“是”

在这个网站上有一个例子。我相信有更好的例子可以使用原生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包装器类已上载到,同时还有一个小演示脚本。

您可以打开
tkinter
源代码(代码路径
导入tkinter;打印(tkinter.\uu文件)
)并查看其工作原理。是的,这是可能的。Tkinter只不过是tcl/tk代码的一个薄薄的包装,而ctext只是更多的tcl/tk代码。@BryanOakley:你介意创建一个小例子吗?我们可以这样做吗?@mentalita:是的,我介意。这将是一个很大的工作,我没有时间去做。stackoverflow不是免费的编码服务。我建议您从一个只有几行代码的.tcl文件开始,并了解如何在tkinter中使用它。一旦你明白了这一点,你就可以尝试包含这个小部件。@BryanOakley:如果需要大量工作的话-当然,不用担心。在任何情况下,都不必太认真,不必生气,也不必使用“免费编码服务”的论据。不管怎样,谢谢你。很酷,谢谢。我将看一看这个示例,我相信创建一个小Python包装器应该不会太费力/太难。另外,我可以问一下您是如何“碰巧拥有它”的吗?更具体地说,我是在问我应该把它放在我的电脑上的什么地方,因为它现在找不到它。我的
/opt/
根本没有
src
。我在这里遗漏了什么?我从Tk化石库中克隆了它,就像我有时做Tk维护一样。