有没有办法将 Python/Tkinter 连接到已经运行的 Tcl/Tk 应用程序?
我在 Pure Data 上做了很多工作,这是一个用 Tcl/Tk 和 C 编写的应用程序。我希望能够为修改 Tcl/Tk GUI 的插件制作一个 python API。为此,我似乎需要能够将正在运行的 Tk 实例传递给 python,然后让 Tkinter 使用该 Tcl/Tk 实例来执行其命令。所以像这样:
root = Tk(pid_of_running_app)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看一下 send 命令,您完全可以做到这一点(对于 Tk 应用程序,而不是普通的 Tcl 应用程序) 。我一直在 Emacs 上执行此操作(连接到正在运行的 Tk 应用程序)。
Tcl/Tk 不会让您奴役另一个进程,但是使用
send
命令,您可以轻松发送您想要的任何命令。只需使用查找其他解释器的“名称” [winfo interps]
(注意:您的 Tk 应用程序的名称可以通过[tk appname]
。此时,您想要在其他解释器中执行的任何命令都将通过评估来发送Take a look at the send command, you can do exactly that (to Tk applications, not plain Tcl applications). I do this all the time from my Emacs (connect to running Tk applications).
Tcl/Tk won't let you enslave another process, however using the
send
command, you can easily send over any commands you want to. Just find the "name" of the other interpreter by using[winfo interps]
(note: the name of your Tk application can be gotten/set by[tk appname]
. At which point, any command you want to have executed in the other interpreter would be sent over by evaluating选项是使用 Tk 的内置
send
基础设施(如 Trey 提到的)或使用 Tcllib 的“nofollow">comm 包。应该可以直接从 Python 中讨论通信协议,但我从未研究过细节,所以你不妨带路。The options are to use Tk's built-in
send
infrastructure (as Trey mentions) or to use the comm package from Tcllib. It should be possible to talk the comm protocol directly from Python, but I've never looked into the details so you might as well lead the way.您可以使用套接字在两个应用程序之间进行通信。
You could use sockets to communicate between the 2 apps.