天啊,听听头都大呢!其实我就给老板做一个简单的交互的页面,而且我只会Python ,有没有很简单的办法可以做到呢。
今天小编在Github上逛的时候,找到一个非常酷的神器,名字叫remi ,目前收获了2300个赞。
star并不是很多,但是这个库可是选入2018年的十大明星库,号称是一个独立的GUI库,而且最牛逼的就是这个库竟然小于 100K,是否很神奇呢,我们一起来体验看一下特性:
跟其他GUI库区别? Kivy,PyQT和PyGObject都需要主机操作系统的本机代码,这意味着安装或编译大型依赖项。Remi只需要一个Web浏览器即可显示您的GUI。我需要懂HTML吗? 不,只需要使用Python进行编码。它是开源的吗? 当然!Remi是根据Apache许可发布的。开源,免费!我需要某种网络服务器吗? 不,自带网络服务器。如何安装呢,因为是Python 库,直接用pip 即可
pip install remi如果是没有网络的,或者服务器跟外网不通的,可以离线安装。下载这个包,然后用install 安装
python setup.py install我们来快速看一下,这个简单的Hello world网页。 这里面包含了一个 2个元素:
文本Hello world ;一个Press me的按钮;点击这个按钮还会改变Hello world的文本内容,看点一下就变成了Button pressed. 上面这个简单的效果,其实只用了20来行Python代码,都是原生的Python代码,没有用一行HTML .
import remi.gui as gui from remi import start, App class MyApp(App): def __init__(self, *args): super(MyApp, self).__init__(*args) def main(self): container = gui.VBox(width=120, height=100) self.lbl = gui.Label('Hello world!') self.bt = gui.Button('Press me!') # setting the listener for the onclick event of the button self.bt.onclick.do(self.on_button_pressed) # appending a widget to another, the first argument is a string key container.append(self.lbl) container.append(self.bt) # returning the root widget return container # listener function def on_button_pressed(self, widget): self.lbl.set_text('Button pressed!') self.bt.set_text('Hi!') # starts the web server start(MyApp)整个的代码的结构层次还很清晰的:
首先声明一个MyApp类,这个类会继承母框架App里面的功能,可以认为是一个网页画布;然后在这个画布里面有3个函数:init主要是做类的初始化工作;main主要对这个画布布局进行设计,包含一个文本和一个按钮。on_button_pressed主要是控件的相应,点击触发函数最后是start来启动这个类,就会生成一个本地的网站链接看完上面的设计是不是就觉得跟Python里面大名鼎鼎的tk库很相似啊,上面的只是开胃菜,这个remi还能提供更复杂的gui界面元素。 上面的是一个完整的demo页面,基本上常见的控件元素的都包含了,比如有菜单栏,文本,按钮,单选框,进度栏,下拉框,表格,弹出框,按钮选取文件路径,文件树形结构,日期等几十种控件。 有了这个神器,是不是可以告别Python里面的tk库,也可以省去学习HTML的时间,还等啥,赶紧下载尝鲜一下吧。
链接: GitHub-remi