Skip to main content
 首页 » 编程设计

python之迁移 tkinter GUI 以进行远程访问

2025年05月04日25oomusou

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

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

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

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

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

如果我确实需要完全放弃我的 Tkinter 架构/代码并从头开始,什么方法最能满足我的需求?

请您参考如下方法:

我建议您查看 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() 

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