有没有办法将Python/Tkinter连接到一个已在运行的Tcl/Tk应用?
我经常使用Pure Data,这是一款用Tcl/Tk和C语言编写的应用程序。我想为这个应用程序创建一个Python的接口,这样就可以通过插件来修改Tcl/Tk的图形界面。为了实现这个目标,我需要把正在运行的Tk实例传递给Python,然后让Tkinter使用这个Tcl/Tk实例来执行命令。所以大概是这样的:
root = Tk(pid_of_running_app)
3 个回答
0
你可以使用套接字来让这两个应用程序之间进行交流。
1
可以选择使用Tk内置的send
功能(就像Trey提到的那样),或者使用来自Tcllib的comm
包。理论上,从Python直接使用comm协议是可行的,但我从来没有深入研究过具体细节,所以你可以先探索一下。
5
看看这个send命令,你可以做到这一点(适用于Tk应用程序,而不是普通的Tcl应用程序)。我经常在我的Emacs中使用这个命令来连接正在运行的Tk应用程序。
Tcl/Tk不允许你控制另一个进程,但通过使用send
命令,你可以轻松地发送任何你想要的命令。只需通过[winfo interps]
找到另一个解释器的“名称”(注意:你的Tk应用程序的名称可以通过[tk appname]
获取或设置)。这样,你想在另一个解释器中执行的任何命令都可以通过评估来发送。
send $other_app tk_dialog . "Sample Dialog" "See, it's this easy." "" 0 Ok