Skip to main content

针对浏览器的 GUI 工具包

项目描述

这是什么?
-------------
这是一个优先考虑可移植性、简单性和 Python 风格的 GUI 框架。

如果你想为一个简单的任务构建一个简单的 GUI,我全心全意地推荐这个包。我不认为这只是对我自己的工作感到自豪——我很确定这个包*实际上*非常容易学习,并且非常适合简单的事情。

如果你想构建一个视频游戏,或者一个漂亮的、流畅的 3D 可视化,这很容易成为我见过的最糟糕的 GUI 框架。

- [为什么好?](#why-is-it-good)
- [为什么不好?](#why-is-it-bad)
- [有哪些替代方法?](#what-are- the-alternatives)
- [如何安装它?](#how-do-i-install-it)
- [我如何学习使用它?](#how-do-i-learn-to-use-它)


为什么好?
---------------

此软件包优先考虑易用性、可移植性和良好的文档。只要我的身体还剩下呼吸,以下陈述将保持正确:

- **感觉就像 Python。** 它在引擎盖下使用 HTML/CSS/JS,但这一事实被小心地隐藏在面向对象的抽象之下. 与 [Tkinter][tkinter] 对比,感觉就像 Tk,因为它是。
- **它的学习曲线很浅。**“Hello World”是`GUI(Text("Hello world!")).run()`。扫雷,包括游戏逻辑,是[少于100行代码][扫雷-代码]和[看起来像这样][扫雷-截图]。
- **它超级便携。** `pip install browsergui && python -m browsergui.examples` 在我尝试过的每个系统(OS X、Debian 和 Ubuntu,Python 2.7 和一些 Python 3.Xs)。说真的,你现在可以运行它并且它会工作,没有关于你的 Qt/wx/PyObjC 安装的一个深奥的错误消息。冒着自吹自擂的风险,我从未见过另一个如此易于安装的 GUI 库。
- **它有据可查。**有一个 [wiki][wiki] 可以教你如何使用它。有[示例](#how-do-I-learn-to-use-it)。有一个[参考手册][文档]。[每种预定义类型的元素都有一个 [可运行的演示] [tour-screenshot]。我花在文档上的时间比我花在编写实际代码上的时间还要多。

为什么不好?
--------------

- **它很慢。**它甚至没有尝试高性能。每次用户与 GUI 交互以及每次更新视图时都会有一个 HTTP 请求。性能不在桌面上。(它并不*令人沮丧*慢 - 您可以拖动滑块并查看值更新而没有明显的延迟 - 但它不适合花哨的东西。)
- **制作超级漂亮的东西并不容易。* * 我只是没有优先考虑样式:任何你想做的样式,你都必须通过 CSS 来完成。我不确定 `element.css['color'] = 'red'` 是否比 `widget.config(foreground="#f00")` 差很多,但它*确实*感觉像是对 CSS 的薄包装(因为它是),这很恶心。

我该如何安装它?
--------------------

如果你使用 pip,

如果你使用easy_install,`easy_install browsergui`。

如果您不喜欢包管理器,只需解压缩 [this][download-zip] 并将 `browsergui` 文件夹放在 Python 路径的任何位置。

安装后,我建议运行“python -m browsergui.examples”来查看所有可用构建块的目录,或者查看 [the wiki][wiki] 以获取教程类型的内容。


我如何学习使用它?
-------------------------

[The wiki][wiki] 有几个教程类型的页面。或者您可以从这些示例中推断:

- Hello world:

from browsergui import GUI, Text
GUI(Text("Hello world!")).run()

- 每次按下按钮时递增的数字:

from browsergui import GUI, Text, Button

button = Button('0')
@button.def_callback
def increment():
button.text = str(int(button.text)+1)

GUI(button).run()

- A时钟:从浏览器

导入时间
导入线程
gui导入文本,GUI

now = Text("")

def update_now_forever():
while True:
now.text = time.strftime("%Y-%m-%d %H:%M: %S")
time.sleep(1)

t = threading.Thread(target=update_now_forever)
t.daemon = True
t.start()

GUI(Text("时间是:"), now).run()

(您可以随时关闭/重新打开浏览器窗口;Ctrl-C 将停止服务器。)

每种元素(`Text`、`Button`、`ColorField`、`Grid`...)也有一个简单的向您展示如何使用它的示例:`python -m browsergui.examples` 将向您显示所有这些示例。

有哪些替代方案?
--------------------------

我知道一些用于 Python 的 GUI 工具包,它们填补了类似的领域。您应该考虑改用这些:

- [tkinter][tkinter](标准库)

优点:它在标准库中。它对我来说总是开箱即用。如果您想要最大的便携性,这可能是您最好的选择。

缺点:感觉就像是 Tk 的包装,因为它是。这提供了良好的性能和详细的控制,但编写它感觉不直观(对我来说)。

- [pyJS][pyjs],另一个用于制作面向浏览器的 GUI 的 Python 包。它通过将您的 Python 代码编译成在浏览器中运行的一段 JavaScript 代码来工作。

优点:pyJS 应用程序更快更容易部署(因为它不需要用户运行 Python)。

缺点:我在安装时遇到了麻烦。和 `tkinter` 一样,它是一个包装器,具有相同的缺点/优点。

当然,还有许多其他 GUI 工具包。[Here][official-alternatives] 列出了足以引起 Python 官方人士关注的热门列表。[这里][非官方替代品] 是一个麻木的长列表,列出了不那么引人注目的列表。

[扫雷代码]:https://github.com/speezepearson/browsergui/blob/master/browsergui/examples/minesweeper.py
[扫雷截图]:http://i.imgur.com/8Ax04sZ.png
[游览-screenshot]:http://i.imgur.com/AvVVVFd.png
[下载-zip]:https://github.com/speezepearson/browsergui/archive/master.zip
[wiki]:https://github。 com/speezepearson/browsergui/wiki
[文档]:http: //pythonhosted.org/browsergui
[下载-zip]:https://github.com/speezepearson/browsergui/archive/master.zip
[tkinter]:https:
//docs.python.org/3/library/tkinter.html#module-tkinter [pyjs]
:http://pyjs.org [official-alternatives]:http://docs.python。 org/2/library/othergui.html
[非官方替代方案]:http: //wiki.python.org/moin/GuiProgramming

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

browsergui-0.4.tar.gz (55.3 kB 查看哈希)

已上传 source

内置分布

browsergui-0.4-py2.py3-none-any.whl (59.5 kB 查看哈希

已上传 py2 py3