tkinter:是否可以使用本机 Tcl/Tk tklib 的 ctext 小部件?
tkinter: Is it possible to use native Tcl/Tk tklib's ctext widget?
我遇到了一个有趣的小部件 (source code),它似乎支持语法高亮显示和许多其他功能。我想在我的 tkinter 应用程序中使用它,但我不确定这是否完全可行。我知道您可以使用 tkinter.eval()
来评估原始 Tcl/Tk 代码,但我不确定在某处评估整个源 code/place 之后我应该做什么 - 我怎么能实例化小部件并实际使用它?
我恰好有 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'
所以简短的回答是 'yes'。
此站点上有一些 的示例。我确信周围有更好的使用本地 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 包装器 class 连同一个小的演示脚本已上传到 github。
我遇到了一个有趣的小部件 (source code),它似乎支持语法高亮显示和许多其他功能。我想在我的 tkinter 应用程序中使用它,但我不确定这是否完全可行。我知道您可以使用 tkinter.eval()
来评估原始 Tcl/Tk 代码,但我不确定在某处评估整个源 code/place 之后我应该做什么 - 我怎么能实例化小部件并实际使用它?
我恰好有 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'
所以简短的回答是 'yes'。
此站点上有一些
基于以上内容的快速演示:
class Ctext(tk.Widget):
def __init__(self, master):
tk.Widget.__init__(self, master, 'ctext')
ctext = Ctext(root)
ctext.pack(expand=True, fill='both')
一个 tkinter 包装器 class 连同一个小的演示脚本已上传到 github。