找回密码
 立即注册

QQ登录

只需一步,快速开始

python中pywebview框架利用方法记载

2024-11-4 18:45| 发布者: 76a9| 查看: 135| 评论: 0

摘要: 目次前言一、安装pywebview二、简单利用三、高级利用总结前言 pywebview是python的一个库,类似于flask框架,这也是用来构建网页的软件包,它的特点就是不用更多的和html语言和js语言,更多的利用python语言就可以完
目次

前言

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

一、安装pywebview

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

[code]pip install pywebview [/code]

二、简单利用

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

一个示例界面;

[code]import webview if __name__ == '__main__': # Create a standard webview window window = webview.create_window('Simple browser', 'https://pywebview.flowrl.com/hello') webview.start()[/code]

一个自制界面:

[code]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()[/code]

调用的是外部界面:

[code]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)[/code]

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

三、高级利用

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

[code]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)[/code]

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

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

[code]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[/code]

总结

到此这篇关于python中pywebview框架利用方法记载的文章就介绍到这了,更多干系python pywebview框架利用内容请搜刮脚本之家从前的文章或继续浏览下面的干系文章希望大家以后多多支持脚本之家!


来源:https://www.jb51.net/python/328071ack.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

最新评论

关闭

站长推荐上一条 /6 下一条

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-7-1 18:30 , Processed in 0.044938 second(s), 19 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部