0

我正在寻找一种将 Tkinter GUI 嵌入 wiki 页面的方法。我已经在谷歌周围看了几个小时,但没有任何方法取得成功。有没有办法做到这一点?

4

3 回答 3

4

您不能直接在 Web 浏览器中运行 Python 代码。* 您可以使用创建图像的服务器端代码和客户端 JavaScript 来操作这些图像并将信息发送回服务器。


* 好的,没有简单、直接、will-work-for-any-user-on-the-web 的方式直接在浏览器中运行 Python 代码(参见评论和 abarnert 的回答)。

于 2013-07-11T21:30:03.383 回答
0

想法

  1. 这听起来可能需要做很多工作,但需要完成,希望它能解决您的问题:

    • 制作您自己的使用最新 Python 版本而不是 JavaScript 的 Web 浏览器。事实上,用 Python 和 Tkinter 编写它。然后,您将能够更自然地使用小部件。
    • 告诉我。(我什至可以帮忙。)
    • 让它可以随心所欲地嵌入 Python Tkinter 小部件。
    • 弄清楚如何制作浏览器,这样它就不会吸引那些喜欢编写恶意 Python 代码的人,或者有一个很大的免责声明。
  2. 编写一个包含或依赖于 Python 解释器和 Tkinter 的插件和/或扩展,并发出人们安装它的页面请求。确保您的 wiki 支持插件,或者您的插件/扩展支持不支持插件的 wiki。

正如其他人所说,Python 并没有一种自然的方式来在您的 Web 浏览器中制作 Tkinter 小部件。你必须找到一种方式,或者使用别人的方式。如果您可以将小程序放入您的 wiki,我可能会推荐其他人提到的 Jython 方法。

于 2014-05-02T05:17:53.873 回答
0

正如 MattDMo 的回答所解释的,你想要做的实际上是不可能直接做的。*

但是有一些方法可以间接地做到这一点。


首先,有 Python 解释器的浏览器内实现,例如SkulptBrython。我不知道他们是否支持 Tkinter,但他们确实支持某种 GUI。因此,您可能必须学习新的 GUI 框架,而不是新的语言。

接下来是 Python 到 JavaScript 的编译器,比如pyjs。这不允许您直接在浏览器中运行 Python 代码,但除非您想要交互式解释器,或者需要动态代码生成,否则这通常不是问题。同样,我不知道任何支持 Tkinter 的东西,所以你可能不得不再次学习一个新的 GUI 框架,而不是一门新的语言。

如果您愿意学习一门新语言,但又不希望它像 JavaScript 那样笨拙,您可能需要考虑CoffeeScript,它是一种“像 JavaScript 一样工作,但看起来像 Python”的语言。与 pyjs 之类的东西相比,从 CoffeeScript 代码生成的 JavaScript 代码将是可读的、可调试的,并且更容易映射回原始代码。

或者,当然,您可以硬着头皮学习 HTML/CSS/DOM/JS 方式。


同时,在 Tkinter 中将您的程序拆分为执行实际工作的“引擎”和一个 GUI 前端本身通常是一个好主意,这意味着您要移植的代码要少得多——您可以将引擎直接转移到 WSGI Web 服务,只需要重写前端。


朝着完全不同的方向前进,如果您只是想支持少数用户,尤其是在 LAN 上,那么有一个选项:您可以在浏览器中嵌入 VNC(或 X11)(有很多解决方案;这个一个在快速谷歌中首先出现),并将每个用户指向一个小型 linux 会话,该会话除了运行您的 Tkinter 应用程序之外什么都不做。


* 有实验性的 Python 浏览器插件。您可以在 Java 小程序中运行 Jython 解释器,或在 Silverlight 小程序中运行 IronPython 代码。但这些都是坏主意,反正他们不会给你 Tkinter,只有 Python。

于 2013-07-11T23:00:44.967 回答