2

我不是 UI 或网页设计师,尽管我已经制作了一堆简单的基于 Tkinter 的 GUI,它们是用于测试低级代码和硬件的简单包装器,例如用于通过串行端口或网络连接的设备的协议和数据采集测试器. 使用 Python 和 Tkinter 允许我的应用程序在每个支持 Python 的平台上运行。

现在我需要迁移我的 GUI 以支持单用户远程访问,同时仍支持本地用户的访问。而且我仍然希望该程序可以跨平台移植,甚至可以制成二进制可执行文件(通过 py2exe、pyinstaller、py2app 等)

是否有任何工具包支持类似 Tkinter 的简单性?理想情况下,我想逐行重写以将 Tkinter 换成其他东西,而不是重新实现或广泛重构我的应用程序。

我找到了 Web2Pypyjs/Pyjamas,但对于我的简单需求来说,它们似乎有点矫枉过正。我还搜索了基于单实例(或单窗口)VNC 或 NX 或 RDP 主机的解决方案,但没有发现任何适用的。

“远程化”我的 Tkinter GUI 最直接的方法是什么?

如果我确实需要完全转储我的 Tkinter 架构/代码并从头开始,那么哪种方法最能满足我的需求?

4

1 回答 1

1

我建议检查一下 CherryPy。将您的头脑转起来并快速启动并运行服务器真的很容易 - 它没有许多其他框架强加的开销/复杂性(Django !!)。不幸的是,您将不得不用 html 重写 UI,但最终这很可能是值得的。查看 Twitter 的 Bootstrap,以快速且有吸引力的 UI 开始“工作”。

一个 CherryPy 应用程序如何简洁的示例:

import cherrypy

class SessionExample:
    @cherrypy.expose
    def index ( self ):
        if cherrypy.session.has_key ( 'color' ):
            out =  "<font color='{0}'>{0}</font>".format(cherrypy.session['color'])
        else:
            out = ""
        return out + ("<form method='POST' action='setColor'>\n"
                      "Please choose a color:<br />\n"
                      "<select name='color'>\n"
                      "<option>Black</option>\n"
                      "<option>Red</option>\n"
                      "<option>Green</option>\n"
                      "<option>Blue</option>\n"
                      "</select><br />\n"
                      "<input type='submit' value='Select' />\n"
                      "</form>"

    @cherrypy.expose
    def setColor (self, color):
        cherrypy.session ['color'] = color
        return "Color set to {}".format(color)

cherrypy.config.update({
    "server.socketPort" = 8080,
    "server.environment" = "development",
    "server.threadPool" = 10,
    "sessionFilter.on" = True
})
cherrypy.root = SessionExample()
cherrypy.server.start()

在 Web 浏览器中导航到 localhost:8080,您应该会看到一个颜色选择器。简单的!

于 2013-03-06T22:32:20.853 回答