python远程接口库
remi的Python项目详细描述
用于应用程序的独立于平台的python gui库
remi是一个用于python应用程序的gui库,它将应用程序的接口转换成html并在web浏览器中呈现。这消除了特定于平台的依赖关系,让您可以轻松地在python中开发跨平台应用程序!
你需要支持吗?联系方式:
您要快速概述吗?这是一个在线示例,感谢强大的repl.it
还有一个拖放式gui编辑器。请查看编辑子文件夹以下载您的副本,或首先在:
更改日志
2019年4月1日
事件侦听器注册现在可以通过do指令而不是connect来完成(出于兼容性原因,该指令保持可用)。
即 较旧的更改 当前分支包括有关资源文件处理的改进。
应用程序构造函数接受静态文件路径参数。它的值必须是字典,其中的元素表示命名的资源路径。 即 要处理特定的资源,用户必须指定资源文件夹键,并将其以'/key:'格式添加到文件名之前。
即 接受子文件夹,因此: 不再支持事件textinput.onenter。 事件textinput.onkeydown和textinput.onkeydup现在不同,需要不同的侦听器格式。还有一个附加的参数键码。 如果TEXTINPUT是单行的,则按下回车键时也会发生TEXTINPUT.onchange事件。 对于稳定的版本: 对于最新的实验版本下载或从git签出remi并安装 或直接使用pip安装
然后启动测试脚本: 独立于平台的python gui库。不到100千字节的源代码,非常适合您的饮食。 remi使开发人员能够使用python创建独立于平台的gui。整个gui被转换成html并在浏览器中呈现。不需要html,remi会自动将python代码转换为html。当您的应用程序启动时,它会启动一个可在您的网络上访问的Web服务器。 基本应用程序如下: 要查看用户界面,请打开首选浏览器并键入"http://127.0.0.1:8081"。
您可以在 在Android、Linux、Windows上测试。
用于python脚本开发的覆盆子pi皮特。它允许从移动设备远程与您的覆盆子皮进行交互。 为什么要使用另一个gui库?< /强>
kivy、pyqt和pygobject都需要主机操作系统的本机代码,这意味着安装或编译大型依赖项。REMI只需要一个Web浏览器来显示您的图形用户界面。 我需要知道html吗?< /强>
不,这不是必需的,您只能用python编写代码。 我可以使用哪些浏览器?< /强>
在chrome firefox和edge(在windows、linux和android上)上测试过,但没有在其他地方测试过。不过,它在其他地方可能会工作得很好! 它是开源的吗?< /强>
当然!remi是在apache许可下发布的。有关详细信息,请参见 我需要某种网络服务器吗?< /强>
不,包括在内。 导入REMI库和其他一些有用的东西。 子类化 在主类之外启动应用程序,调用函数 运行脚本。如果一切正常,图形用户界面将在浏览器中自动打开,否则,您必须在地址栏中键入http://127.0.0.1:8081 rel="nofollow">http://127.0.0.1:8081。 您可以在 参数: 附加参数: 所有widgets构造函数都接受两个标准**kwargs,它们是: 小部件公开在用户交互期间发生的一组事件。
这样的事件是定义应用程序行为的方便方法。
每个小部件都有自己的回调,这取决于它允许的用户交互类型。
小部件的特定回调将在稍后演示。 要将函数注册为事件侦听器,必须调用eventname.do(即onclick.do)这样的函数,并将管理事件的回调作为参数传递。
下面是一个示例: 在所示示例中,self.bt.onclick.do(self.on_button_pressed)将self的on_button_pressed函数注册为按钮小部件所显示的事件onclick的侦听器。
简单,容易。 侦听器的回调将首先接收发射器的实例,然后再接收所有r特定事件提供的参数。 除了标准的事件注册(如上所述),还可以将用户参数传递给侦听器函数。这可以实现将参数附加到do函数调用。 这允许极大的灵活性,使用相同的事件侦听器定义获得不同的行为。 有时可能需要访问小部件的html表示来操作html属性。
库允许轻松访问此信息。 一个简单的例子:在这种情况下,您希望向小部件添加悬停文本。这可以通过html标记的title属性来实现。
为此: html属性的一个特殊情况是样式。
可以通过以下方式更改样式属性: 新属性的赋值会自动创建它。 有关HTML属性的参考列表,请参阅https://www.w3schools.com/tags/ref_attributes.asp 有关样式属性的参考列表,请参阅https://www.w3schools.com/cssref/default.asp" rel="nofollow">https://www.w3schools.com/cssref/default.asp 注意内部使用的属性。这些是: 如果您正在远程使用REMI应用程序,使用DNS并在防火墙后,您可以在 我建议使用浏览器作为标准界面窗口。 但是,您可以避免使用浏览器。
这可以通过加入remi和pywebview来获得。
这里有一个关于这个的例子standalone_app.py 请注意,pywebview使用qt、gtk等创建窗口。这些库的过时版本可能会导致用户界面问题。如果遇到用户界面问题,请更新这些库,或更好地避免独立执行。 为了限制对界面的远程访问,可以定义用户名和密码。它由一个简单的身份验证过程组成。
只需在开始调用中定义参数username和password: 要为应用程序定义新样式,必须执行以下操作。
创建res文件夹并将其传递给应用程序类构造函数: 复制remi文件夹中的standard style.css并将其粘贴到res文件夹中。编辑它以便自定义。
这样,标准的style.css文件将被您创建的文件覆盖。 REMI与python2.7和python3.x兼容。请通知兼容性问题。 remi应该是一个标准的桌面gui框架。
图书馆本身没有实施安全策略,因此建议不要将其访问暴露在不安全的公共网络中。 从外部源加载数据时,在直接显示内容之前,请考虑保护应用程序免受潜在的javascript注入。 你能支持REMI项目吗?< /P> 你知道雷米在帕特伦吗?
这是支持这个项目的一个绝妙方法。 另外,也欢迎少量购买。 感谢您与我们合作,使雷米更好! 开源的真正力量在于贡献者。请随意参与本项目,并考虑将自己添加到以下列表中。
是的,我知道github已经提供了一个贡献者列表,但我觉得我必须提到谁提供了帮助。 惠灵顿卡斯特罗酒店
下面列出了此库的其他实现:mybutton.onclick.do(myevent_listener)
super(MyApp,self).__init__(*args,static_file_path={'my_resources':'./files/resources/','my_other_res':'./other/'})
my_widget.attributes['background-image']="url('/my_resources:image.png')"
my_widget.attributes['background-image']="url('/my_resources:subfolder/other_subfolder/image.png')"
入门
pip install remi
python setup.py install
pip install git+https://github.com/dddomodossola/remi.git
python widgets_overview_app.py
remi
importremi.guiasguifromremiimportstart,AppclassMyApp(App):def__init__(self,*args):super(MyApp,self).__init__(*args)defmain(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 buttonself.bt.onclick.do(self.on_button_pressed)# appending a widget to another, the first argument is a string keycontainer.append(self.lbl)container.append(self.bt)# returning the root widgetreturncontainer# listener functiondefon_button_pressed(self,widget):self.lbl.set_text('Button pressed!')self.bt.set_text('Hi!')# starts the web serverstart(MyApp)
start
函数调用处通过特定的**kwargs更改url地址。这将在稍后讨论。许可证
文件。简要教程
mybutton.onclick.do(myevent_listener)
0
app
类并声明一个main
函数,该函数将成为应用程序的入口点。在主函数中,必须返回根小部件。mybutton.onclick.do(myevent_listener)
1
start
作为参数传递您先前声明的类的名称。mybutton.onclick.do(myevent_listener)
2
start
call like中自定义可选参数。mybutton.onclick.do(myevent_listener)
3
事件和回调
importremi.guiasguifromremiimportstart,AppclassMyApp(App):def__init__(self,*args):super(MyApp,self).__init__(*args)defmain(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 buttonself.bt.onclick.do(self.on_button_pressed)# appending a widget to another, the first argument is a string keycontainer.append(self.lbl)container.append(self.bt)# returning the root widgetreturncontainer# listener functiondefon_button_pressed(self,widget):self.lbl.set_text('Button pressed!')self.bt.set_text('Hi!')# starts the web serverstart(MyApp)
mybutton.onclick.do(myevent_listener)
5
HTML属性可访问性
mybutton.onclick.do(myevent_listener)
6
mybutton.onclick.do(myevent_listener)
7
远程访问
开始
调用中指定特殊参数:
mybutton.onclick.do(myevent_listener)
8
独立执行
认证
mybutton.onclick.do(myevent_listener)
9
造型
super(MyApp,self).__init__(*args,static_file_path={'my_resources':'./files/resources/','my_other_res':'./other/'})
0
兼容性
安全性
支持项目
贡献者
使用REMI的项目
其他实现
推荐PyPI第三方库