迁移tkinter GUI以进行远程访问?

时间:2013-03-06 21:31:11

标签: python tkinter remote-access

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

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

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

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

对我的Tkinter GUI进行“远程监控”的最直接方法是什么?

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

1 个答案:

答案 0 :(得分:1)

我建议查看CherryPy。它非常容易包围并快速启动并运行 - 它没有许多其他框架所带来的开销/复杂性(Django !!)。不幸的是,你必须用html重写UI,但最终它很可能值得付出努力。查看Twitter的Bootstrap,以便在一个快速而有吸引力的用户界面上滚动,只是“有效”。

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()

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