一个面向浏览器的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
----
这是一个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.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