一个面向浏览器的gui工具包

browsergui的Python项目详细描述


这是什么?
----
这是一个gui框架,它优先考虑可移植性、简单性和python风格。

如果您想为一个简单的任务构建一个简单的gui,我衷心推荐这个包。我不认为这仅仅是我对自己工作的骄傲——我很确定这个包*实际上*非常容易学习,而且非常适合简单的事情。

如果你想构建一个视频游戏,或者一个好的、流畅的三维可视化,这很容易是我见过的最糟糕的gui框架。

-[为什么好?](为什么是好的)
-[为什么是坏的?](为什么不好)
-[有哪些选择?](有哪些替代方案)
-[如何安装?](how-do-i-install-it)
-[如何学习使用它?](how-do-i-learn-to-use-it)




为什么它是好的?
----


此软件包优先考虑易用性、可移植性和良好的文档。只要我的身体还有一口气,下面的陈述就不会改变:

-**感觉像是python.**它在引擎盖下使用html/css/js,但这一事实被精心隐藏在良好的面向对象抽象中。与感觉像TK的[Tkinter][Tkinter]形成对比,因为它是。
-**它的学习曲线很浅。**"Hello World"是"gui(文本("Hello World!")Run()扫雷器,包括游戏逻辑,是[少于100行代码][扫雷器代码]和[看起来像这样][扫雷器屏幕截图]。
-**它是超级便携的。**`pip install browsergui&;python-m browsergui.examples`在我尝试过的每个系统(os x,debi)上都有效,没有任何障碍以及ubuntu,同时使用python 2.7和一些python 3.xs)。说真的,您现在就可以运行它,并且它会工作,而不会出现关于qt/wx/pyobjc安装的一条深奥的错误消息。冒着自吹自擂的风险,我从未见过另一个如此易于安装的gui库。
-**它有很好的文档记录。**有一个[wiki][wiki]来教你如何使用它。有[例子](how-do-i-learn-to-use-it)。有一本[参考手册][文档]。这里有一个[runnable demo for every predefined kind of element][tour screenshot]。我花在文档编制上的时间比花在实际代码编写上的时间还多。

为什么不好?
----

-**速度很慢。**它甚至不尝试高性能。每次用户与gui交互时,以及每次视图更新时,都会有一个http请求。表演不受欢迎。(这并不是令人沮丧的缓慢——你可以拖动一个滑动条,看到值的更新没有明显的延迟——但这对花哨的东西不好。)
-**制作超级漂亮的东西不是很容易的事。**我只是没有对样式进行优先排序:任何你想做的样式,你都必须通过css来完成。我不确定"element.css['color']="red"比"widget.config(foreground="f00")"差得多,但它*确实*感觉像是css上的一个薄薄的包装(因为它是),这太恶心了。


————

总而言之,我建议运行python-m browsergui.examples查看所有可用构建块的目录,或者查看[维基][维基]以获取教程类型的内容。





----

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

-hello world:


from browsergui import gui,text
gui(text("hello world!").run()

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


来自browsergui import gui,text,button

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


gui(button.run()

-a时钟:


import time
import threading
from browsergui import text,gui

now=text("")

当为true时:
now.text=time.strftime("%y-%m-%d%h:%m:%s")
time.sleep(1)

t.daemon=true
t.start()

gui(text("time is:"),now).run()

(you c随时关闭/重新打开浏览器窗口;ctrl-c将停止服务器。)

选择?
--------


我知道一些用于python的gui工具包填补了类似的空白。你应该考虑改用这些:

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


优点:它在标准库中。这对我来说一直都是开箱即用的。如果你想要最大程度的可移植性,这可能是你最好的选择。

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

-[pyjs][pyjs],另一个python包,用于制作针对浏览器的gui。它的工作原理是将python代码编译成运行在浏览器中的一段javascript代码。和"tkinter"一样,它也是一个包装器,具有相同的优点。[这里][官方备选方案]是一个受欢迎的列表,足以赢得官方python用户的注意。[这里][非官方的选择]是一个不太引人注意的冗长列表。

[扫雷程序代码]:https://github.com/speezepearson/browsergui/blob/master/browsergui/examples/minesesweeper.py
[扫雷程序截图]:http://i.imgur.com/8ax04sz.png
[旅游截图]:http://i.imgur.com/avvvfd.png
[下载zip]:https://github.com/speezeearson/browsergui/archive/master.zip
[wiki]:https://github.com/speezeearson/browsergui/wiki
[文档]:http://pythonhosted.org/browsergui
[下载zip]:https://github.com/speezeearson/browsergui/archive/master.zip
[tkinter]:https://docs.python.org/3/library/tkinter.html模块tkinter
[pyjs]:http://pyjs.org
[官方备选方案]:http://docs.python.org/2/library/othergui.html
[非官方备选方案]:http://wiki.python.org/moin/guiprogramming

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java程序不断抛出错误。springframework。豆。工厂BeanCreationException弹簧靴   Java中的SQL SELECT语句   java如何在邻接链表中列出链表的所有成员   java为什么需要显式导入springsecurityweb依赖项?   SQLException中的java提取参数   eclipse如何使用使用java在rapidminer中创建的模型   java转换字符串列表日期列表   java是否可以使用Selenium或任何其他工具自动化RDP会话?   Scala/Java解析只有日期部分的字符串   使用AES解密时的java Stringindexoutofboundsexception   java日期类问题:日期对象被设置为我没有设置的对象   java如何修改IllegalArgumentException以包含负值?   sockets Java。net服务器示例不起作用   java每隔这么多字符就有一个空格