Python中pywebview框架使用方法记录!

Python中pywebview框架使用方法记录!

Pywebview是一个用于构建网页的Python库,类似于Flask框架,但主要使用Python编写而非HTML或JS,通过简单的命令即可安装和使用,支持创建自制或调用外部网页界面,需要的朋友可以参考下。

前言

pywebview是python的一个库,类似于flask框架,这也是用来构建网页的软件包,它的特点就是不用更多的和html语言和js语言,更多的使用python语言就可以完成网页的创建和元素的监听该库的简介和示例,简单使用看示例足够,但是其中也不够详尽:https://pywebview.flowrl.com/

 

一、安装pywebview

首先,确保已经安装了pywebview,可以通过以下命令进行安装:

1
pip install pywebview

二、简单使用

简单的创建界面和一些基础操作,这里不再赘述,也没什么营养,官方示例都已给出,这里只贴上一些示例:

一个示例界面;

1
2
3
4
5
6
import webview
if __name__ == '__main__':
# Create a standard webview window
window = webview.create_window('Simple browser', 'https://pywebview.flowrl.com/hello')
webview.start()

一个自制界面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import webview
html = """
<html>
<head></head>
<body>
<h2>Links</h2>
<p><a href='https://pywebview.flowrl.com'>Regular links</a> are opened in the application window.</p>
<p><a href='https://pywebview.flowrl.com' target='_blank'>target='_blank' links</a> are opened in an external browser.</p>
</body>
</html>
"""
if __name__ == '__main__':
window = webview.create_window('Link types', html=html)
webview.start()

调用的是外部界面:

1
2
3
4
5
6
7
import webview
if __name__ == '__main__':
window = webview.create_window(title='Webview App', url="https://hailuoai.com/?type=chat&chatID=251739240281759747/", confirm_close=True,
zoomable=True, vibrancy=True, width=1275, height=745)
webview.start(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0',
debug=True)

于是可以从这几个例子看出来,pywebview主要有两种,可以是自制的网页html参数,又或者是url的外部链接。

三、高级使用

主要是关于dom的元素创建选择何使用:按钮等等,关于bind函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import random
import webview
rectangles = []
def random_color():
red = random.randint(0, 255)
green = random.randint(0, 255)
blue = random.randint(0, 255)
return f'rgb({red}, {green}, {blue})'
def bind(window):
def toggle_disabled():
disabled = None if len(rectangles) > 0 else True
remove_button.attributes = { 'disabled': disabled }
empty_button.attributes = { 'disabled': disabled }
move_button.attributes = { 'disabled': disabled }
def create_rectangle(_):
color = random_color()
rectangle = window.dom.create_element(f'<div class="rectangle" style="background-color: {color};"></div>', rectangle_container)
rectangles.append(rectangle)
toggle_disabled()
def remove_rectangle(_):
if len(rectangles) > 0:
rectangles.pop().remove()
toggle_disabled()
def move_rectangle(_):
if len(rectangle_container.children) > 0:
rectangle_container.children[-1].move(circle_container)
def empty_container(_):
rectangle_container.empty()
rectangles.clear()
toggle_disabled()
def change_color(_):
circle.style['background-color'] = random_color()
def toggle_class(_):
circle.classes.toggle('circle')
rectangle_container = window.dom.get_element('#rectangles')
circle_container = window.dom.get_element('#circles')
circle = window.dom.get_element('#circle')
toggle_button = window.dom.get_element('#toggle-button')
toggle_class_button = window.dom.get_element('#toggle-class-button')
duplicate_button = window.dom.get_element('#duplicate-button')
remove_button = window.dom.get_element('#remove-button')
move_button = window.dom.get_element('#move-button')
empty_button = window.dom.get_element('#empty-button')
add_button = window.dom.get_element('#add-button')
color_button = window.dom.get_element('#color-button')
toggle_button.events.click += lambda e: circle.toggle()
duplicate_button.events.click += lambda e: circle.copy()
toggle_class_button.events.click += toggle_class
remove_button.events.click += remove_rectangle
move_button.events.click += move_rectangle
empty_button.events.click += empty_container
add_button.events.click += create_rectangle
color_button.events.click += change_color
if __name__ == '__main__':
window = webview.create_window(
'DOM Manipulations Example', html='''
<html>
<head>
<style>
button {
font-size: 100%;
padding: 0.5rem;
margin: 0.3rem;
text-transform: uppercase;
}
.rectangle {
width: 100px;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
margin: 0.5rem;
border-radius: 5px;
background-color: red;
}
.circle {
border-radius: 50px;
background-color: red;
}
.circle:hover {
background-color: green;
}
.container {
display: flex;
flex-wrap: wrap;
}
</style>
</head>
<body>
<button id="toggle-button">Toggle circle</button>
<button id="toggle-class-button">Toggle class</button>
<button id="color-button">Change color</button>
<button id="duplicate-button">Duplicate circle</button>
<button id="add-button">Add rectangle</button>
<button id="remove-button" disabled>Remove rectangle</button>
<button id="move-button" disabled>Move rectangle</button>
<button id="empty-button" disabled>Remove all</button>
<div id="circles" style="display: flex; flex-wrap: wrap;">
<div id="circle" class="rectangle circle"></div>
</div>
<div id="rectangles" class="container"></div>
</body>
</html>
'''
)
webview.start(bind, window)

并且使用event可以监听按钮等等的事件发生

并且是支持动态生成元素的:

1
2
3
4
5
6
7
8
9
with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
count += 1
window.dom.create_element(
f"<input id='word{count}' writingsuggestions='true' type='text' class='editable-textbox'>111</input>"
)
temp = window.dom.get_element(f'#word{count}')
line = line.rstrip('\n')
temp.value = line

总结

到此这篇关于python中pywebview框架使用方法记录的文章就介绍到这了.

 

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

电商数据分析360°实战攻略!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>