有没有办法将 Python/Tkinter 连接到已经运行的 Tcl/Tk 应用程序?

发布于 2024-10-31 04:05:57 字数 219 浏览 4 评论 0 原文

我在 Pure Data 上做了很多工作,这是一个用 Tcl/Tk 和 C 编写的应用程序。我希望能够为修改 Tcl/Tk GUI 的插件制作一个 python API。为此,我似乎需要能够将正在运行的 Tk 实例传递给 python,然后让 Tkinter 使用该 Tcl/Tk 实例来执行其命令。所以像这样:

root = Tk(pid_of_running_app)

I work a lot on Pure Data, an app written in Tcl/Tk and C. I'd like to be able to make a python API for plugins for modifying the Tcl/Tk GUI. To do this, it seems that I would need to be able to pass the running Tk instance to python, then have Tkinter use that Tcl/Tk instance for its commands. So something like:

root = Tk(pid_of_running_app)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

黯淡〆 2024-11-07 04:05:57

看一下 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

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

send $other_app tk_dialog . "Sample Dialog" "See, it's this easy." "" 0 Ok
执笔绘流年 2024-11-07 04:05:57

选项是使用 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.

飘然心甜 2024-11-07 04:05:57

您可以使用套接字在两个应用程序之间进行通信。

You could use sockets to communicate between the 2 apps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文