Remi-自动转换Python代码为HTML界面的GUI库
Remi 使开发人员能够使用 Python 创建独立于平台的 GUI。整个 GUI 在浏览器中呈现。不需要 HTML,Remi 会自动将 Python 代码转换为 HTML。当你的应用程序启动时,它会启动一个可以在你的网络上访问的 Web 服务器。
安装:
代码语言:javascript复制pip install remi
2、快速上手
1、示例代码:
代码语言:javascript复制#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号:AllTests软件测试
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('AllTests软件测试')
self.bt = gui.Button('请点击!')
# 为按钮的 onclick 事件设置侦听器
self.bt.onclick.do(self.on_button_pressed)
# 将一个控件附加到另一个控件,第一个参数是一个字符串键
container.append(self.lbl)
container.append(self.bt)
# 返回根窗口部件
return container
# 监听器函数
def on_button_pressed(self, widget):
self.lbl.set_text('按钮已按下!')
self.bt.set_text('感谢关注!')
# 启动 Web 服务器
start(MyApp, address='127.0.0.1', port=8081)
运行脚本,浏览器会自动打开 GUI,或者手动打开浏览器,地址栏中输入 http://127.0.0.1:8081 即可。
如下图:页面显示效果。
如下图:点击后的显示效果。
也可以通过在 start 函数调用中指定 **kwargs 来更改 URL 地址。
在 Android、Linux、Windows 上进行了测试。可用于 Raspberry Pi 上的 Python 脚本开发。它允许从移动设备远程与 Raspberry Pi 进行交互。
2、在 start 调用中自定义可选参数,例如:
代码语言:javascript复制start(MyApp, address='127.0.0.1', port=8081, multiple_instance=False, enable_file_cache=True, update_interval=0.1, start_browser=True)
参数:
- address:网络接口 IP。
- port:监听端口。
- multiple_instance: 布尔值,如果为 True,则连接到你的脚本的多个客户端具有不同的 App 实例(由唯一的 cookie 会话标识符标识)。
- enable_file_cache: 布尔值,如果为 True,则启用资源缓存。
- update_interval: GUI 更新间隔(秒)。如果为零,则每次更改时都会进行更新。如果为零,则不会调用 App.idle 方法。
- start_browser:一个布尔值,定义启动时是否自动打开浏览器。
- standalone:布尔值,指示将应用程序作为具有自己的窗口的标准桌面应用程序运行的位置。如果为 False,则界面将显示在浏览器网页中。
其他参数:
- username:用于基本 HTTP 身份验证。
- password:用于基本 HTTP 身份验证。
- certfile:SSL 证书文件名。
- keyfile:SSL 密钥文件。
- ssl_version:身份验证版本(即 ssl.PROTOCOL_TLSv1_2)。如果为 None,则禁用 SSL加密。
3、HTML 属性可访问性
有时需要访问小部件的 HTML 表示,以便操纵 HTML 属性。该库允许轻松访问此信息。
一个简单的例子:你想在小部件中添加一个悬停文本,可以通过 HTML 标签的 title 属性来实现。
代码语言:javascript复制widget_instance.attributes['title'] = 'Your title content'
HTML 属性的一种特殊情况是 style。style 属性可以通过以下方式进行更改:
代码语言:javascript复制widget_instance.style['color'] = 'red'