说明:

=====

1.1 如果不会web前端的html、JavaScript、CSS的知识怎么办?无所不能的python可以做到。

1.2 Remi是一个用于Python应用程序的GUI库,它将应用程序的界面转换为HTML,以便在Web浏览器中呈现。

1.3 这将删除特定于平台的依赖项,并允许您使用Python轻松开发跨平台应用程序!
不会Html、JavaScript、CSS,怎么办?有python的Remi库

2 准备:

=====

2.1 官网地址:


2.2 环境:

华为笔记本电脑、深度deepin-linux操作系统、谷歌浏览器、python3.8和微软vscode编辑器。

2.3 安装:

pip install remi
#本机安装
sudo pip3.8 install remi
sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple remi

3 Hello world:

==========

3.1 代码:注释版

import remi.gui as gui
from remi import start, App
#定义类
class MyApp(App):
def init(self, *args):
super(MyApp, self).init(*args)
#以上3行代码,固定初始化

def main(self):
    #实例化一个VBox,大小设置
    wid = gui.VBox(width=300, height=200)
    #窗口的标签label=显示文本,大小比例法设置
    # 注意\n代表换行,但需要配合style={"white-space":"pre"},才起作用
    #preserves newline==保留换行符
    self.lbl = gui.Label('Hello\n World', width='80%', height='50%',style={"white-space":"pre"})
    #按钮和名称、大小设置,支持中文
    self.bt = gui.Button('Press me=点击我!', width=200, height=30)
    #绑定按钮的点击事件,调用函数
    self.bt.onclick.do(self.on_button_pressed)
    #adding the widgets to the main container
    #将小部件添加到主容器wid,有时候上面实例化用container=主容器
    wid.append(self.lbl)
    wid.append(self.bt)
    return wid

# listener function==监听功能
#调用点击按钮函数;emitter==发射器
def on_button_pressed(self, emitter):
    self.lbl.set_text('Hello World!')

if name == “main”:
# starts the webserver
# 主要参数
# start(MyApp,address=‘127.0.0.1’, port=8081, multiple_instance=False,enable_file_cache=True, update_interval=0.1, start_browser=True)
#start(MyApp, debug=True, address=‘0.0.0.0’, port=0) #本机测试地址改动无效,为默认地址
start(MyApp, debug=True) #端口指定无效,也不是默认8081,估计本机端口已经被占用

3.2 操作和效果:
不会Html、JavaScript、CSS,怎么办?有python的Remi库

4 Bootstrap:

=========

4.1 代码:bootstrap.py

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):
    #引入在线Bootstrap的css文件
    my_css_head = """
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        """
    #引入在线Bootstrap的js文件
    my_js_head = """
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
        """

    self.page.children['head'].add_child('mycss', my_css_head)
    self.page.children['head'].add_child('myjs', my_js_head)
   #主窗口实例化,定义大小和样式
    main_container = gui.VBox(width='500px', height='500px', style={'margin':'0px auto','padding':'10px'})
    #label=标签
    self.lbl = gui.Label("Label with Lock Icon=带锁图标的标签")
    #样式选择
    self.lbl.add_class("glyphicon glyphicon-lock label label-primary")
    #输入框
    self.tf = gui.TextInput(hint='Your Input')
    #样式选择
    self.tf.add_class("form-control input-lg")
    #下拉选择框
    self.dd = gui.DropDown(width='200px')
    #字体大小
    self.dd.style.update({'font-size':'large'})
    #样式选择
    self.dd.add_class("form-control dropdown")
    #下拉框内容选择
    self.item1 = gui.DropDownItem("First Choice")
    self.item2 = gui.DropDownItem("Second Item")
    #定义self的功能,目前未定义
    self.dd.append(self.item1,'item1')
    self.dd.append(self.item2,'item2')
         
    #Table=表格,第一个是表头
    myList = [  ('ID','Lastname','Firstname','邮编','城市'),
                ('1','Pan','Peter','888888','上海'),
                ('2','Sepp','Schmuck','123456','北京')  ]
    #表格设置,内容,大小
    self.tbl = gui.Table.new_from_list(content=myList,width='400px',height='100px',margin='10px')
    #样式选择
    self.tbl.add_class("table table-striped")
    #按钮设置
    self.bt1 = gui.Button("OK", width="100px")
    #是Bootstrap样式 Class:  btn-success
    self.bt1.add_class("btn-success")                   
    self.bt2 = gui.Button("Abbruch",width="100px")
    #Bootstrap Class:  btn btn-danger
    self.bt2.add_class("btn-danger")                
            
    #Build up the gui,主窗口挂载下面项目
    main_container.append(self.lbl,'lbl')
    main_container.append(self.tf,'tf')
    main_container.append(self.dd,'dd')
    main_container.append(self.tbl,'tbl')
    main_container.append(self.bt1,'btn1')
    main_container.append(self.bt2,'btn2')
    
    return main_container

if name == “main”:
# starts the webserver
start(MyApp, debug=True)

4.2 操作和效果图:
不会Html、JavaScript、CSS,怎么办?有python的Remi库

5 tabbox:

=======

5.1 代码:

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):
    #按钮
    b1 = gui.Button('Show second tab', width=200, height=30)
    #表格框
    tb = gui.TabBox(width='80%')
    tb.append(b1, 'First')
    
    b2 = gui.Button('Show third tab', width=200, height=30)
    #tb.add_tab(b2, 'Second', None)
    tb.add_tab(b2, 'Second')

    b3 = gui.Button('Show first tab', width=200, height=30)
    #tb.add_tab(b3, 'Third', None)
    tb.add_tab(b3, 'Third')
    #3种方法
    b1.onclick.do(self.on_bt1_pressed, tb, b2)
    b2.onclick.do(self.on_bt2_pressed, tb, 'Third')
    b3.onclick.do(self.on_bt3_pressed, tb, 0)

    return tb

#按钮功能的定义,3种功能
def on_bt1_pressed(self, widget, tabbox, refWidgetTab):
    tabbox.select_by_widget(refWidgetTab)

def on_bt2_pressed(self, widget, tabbox, refWidgetTabName):
    tabbox.select_by_name(refWidgetTabName)

def on_bt3_pressed(self, widget, tabbox, tabIndex):
    tabbox.select_by_index(tabIndex)

if name == “main”:
#网页标题,standalone=False默认是不允许
start(MyApp, title=“Tab Demo=表格例子”, standalone=False)

5.2 操作和效果图:
不会Html、JavaScript、CSS,怎么办?有python的Remi库

6standalone:

======

6.1 代码: mian.py
from remi import start, App
 #将 bootstrap.py脚本放在本代码mian.py同一个目录下
 from bootstrap import MyAppif name == “main”:
 start(MyApp, standalone=True)6.2 代码:bootstrap.py=4.1所指定代码:
6.3 注意启动网页服务器默认为不启动(false),需要启动则为standalone=True。
6.4 操作和效果图:
 不会Html、JavaScript、CSS,怎么办?有python的Remi库把web网页变成一个app的GU