【问题标题】:Using web-server to substitute for GUI in python在 python 中使用 web-server 代替 GUI
【发布时间】:2016-01-20 17:11:01
【问题描述】:

我有一个即将开始的 GUI 项目。 GUI 要求很简单(虽然不像 tkinter 那样简单就足够了)。所以我需要为 python 使用一个 GUI 工具包(如果我必须使用 GUI,它将是 wxpython)。现在我在想,为什么我不能使用简单的 web 框架,例如cherrypy 或 bottlepy(对不起,如果我的想法不对。我是服务器端编程的新手)并创建 html 页面作为我的图形界面并使用 DOM(再次,我想,我说得对)而不是使用 wxpython 来创建整体 GUI。然后,我可以编写我所有的业务逻辑,并将其余部分留给简单的 html 渲染,在那里我必须花费更少的时间来格式化表格、创建按钮和表单以及担心大小调整器。

我的问题是:有人可以使用诸如cherrypy 或类似的网络服务器python 包并摆脱使用图形工具包吗?它真的有益还是我认为这件事颠倒了?

我期待的好处:

我可以使用 jquery 来拥有许多使用 wxpython 或其他 GUI 工具包创建可能需要大量时间的功能。例如,如果我想拥有类似于 jquery 的自动完成功能,那么在 wxpython 等 GUI 工具包中会有很多不同的故事。而且,很多拖放功能在 html 中都很简单。

【问题讨论】:

    标签: python user-interface


    【解决方案1】:

    是的 - 这只是一个 Web 应用程序,而不是本机应用程序。

    优点包括可移植性(假设您可以在任何设置上运行 python 代码——不确定您的应用程序的目的是什么)并且不处理讨厌的布局问题和 TK 事件等。

    但是,您也在极大地改变您的编程范式。根据您的目标,这可能无关紧要。

    至于使用网络框架:

    在最简单的情况下,您可以在 CGI 下运行一组 python 脚本。或者你可以得到一个带有数据库抽象层(DAL/ORM)的 MVC 框架,比如 django 或 web2py。

    如果您想快速启动并运行,我建议您使用 web2py -- 安装简单,并带有内置服务器,因此您无需设置 apache 实例并弄乱 Proxying 或 mod_wsgi 或所有这些天哪。

    如果您有一段时间没有标记网页,您绝对应该去 w3c (http://www.w3schools.com/) 并复习 CSS/HTML。

    但是是的——web2py 将允许你运行任何 python 模块/包,尽管你必须学习处理客户端-服务器模型并意识到客户端事件必须在 javascript 中处理,而 python 代码只能在服务器上执行,然后仅从请求 URI 执行。

    简而言之,会有一些“胶水”代码,但这正是 web2py (IMHO) 擅长的。

    http://web2py.com https://www.djangoproject.com/ http://wiki.python.org/moin/CgiScripts

    享受吧!

    【讨论】:

      【解决方案2】:

      你是对的,但是don't roll your own

      【讨论】:

      • 对不起,我什至没有考虑安装 apache。我不知道我是否错了,但我需要为 web2py 或 django 安装 apache 吗?我什至没有考虑安装 apache。只是一个简单的网络服务器,嵌入!
      • 有几个独立的 WSGI 容器。
      • @Jack_of_All_Trades 与 web2py 你不需要 apache。对于基于 HTML 的 GUI 应用程序,您确实需要某种网络服务器。 Web2py 带有一个名为“rocket”的独立轻型网络服务器。您根本不需要弄乱 apache,但您需要确保服务器已启动以解释请求并将它们发送到框架。不确定django。此外,您可以使用 lighttpd (lighttpd.net),但您可能需要一个网络服务器...除非您只是使用“文件:”协议链接文件...那么它可能实际上可以工作,但您可能会遇到问题,具体取决于您的应用目的
      • @Jack_of_All_Trades Django 有自己的内置服务器,但完全兼容 wsgi。
      • 不要使用 Django 的内置 Web 服务器。不,不要争论,你错了。
      【解决方案3】:

      你的想法完全正确。有很多基于 python 的框架,只要选择一个合适的:pyramid、pylons、django 是最流行和广泛使用的。

      我建议您将 HTML/CSS 切片外包给一些专业人士,而不是自己做。您可以面对很多特定于浏览器的事情,这会浪费您的时间,但对于有经验的人来说是显而易见的。

      【讨论】:

      • @Jack_of_All_Trades +1 关于外包 HTML/CSS 的说明——如果您没有开发 html 页面的经验,那么 wxpython 可能是一种更简单的布局应用程序的方法。如果您正在开发这个应用程序并且它没有对更大的互联网开放,您可以指定需要使用哪个浏览器,但通常网络开发人员不能这样做。同样,这取决于应用程序的性质(受众/用户群,您是从服务器还是本地主机提供服务,这意味着多次安装,这通常不是 Web 开发的完成方式)
      【解决方案4】:

      不,你的想法是正确的。 HTML/CSS 非常简单,可用于快速开发。此外,python 微框架将使创建业务逻辑变得轻而易举。这是一条非常简单的路线。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 2013-02-11
        • 2019-08-10
        相关资源
        最近更新 更多