python中pywebview框架使用方法记录

 更新时间:2024年09月27日 10:42:23   作者:monster justin  
Pywebview是一个用于构建网页的Python库,类似于Flask框架,但主要使用Python编写而非HTML或JS,通过简单的命令即可安装和使用,支持创建自制或调用外部网页界面,需要的朋友可以参考下

前言

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

一、安装pywebview

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

pip install pywebview

二、简单使用

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

一个示例界面;

import webview

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

一个自制界面:

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()

调用的是外部界面:

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函数

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可以监听按钮等等的事件发生

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

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框架使用方法记录的文章就介绍到这了,更多相关python pywebview框架使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于随机采样一至性实现拟合椭圆(优化版)

    Python基于随机采样一至性实现拟合椭圆(优化版)

    这篇文章主要对上一版的Python基于随机采样一至性实现拟合椭圆的优化,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2022-11-11
  • Python3使用turtle绘制超立方体图形示例

    Python3使用turtle绘制超立方体图形示例

    这篇文章主要介绍了Python3使用turtle绘制超立方体图形,结合实例形式分析了Python使用海龟绘图模块turtle进行复杂图形绘制的相关原理与操作技巧,需要的朋友可以参考下
    2018-06-06
  • Python实现双色球号码随机生成

    Python实现双色球号码随机生成

    和体彩大乐透类似,福彩双色球也是购买次数最多的彩种之一,相比大乐透,双色球更容易中小奖。本文将介绍 Python 实习双色球彩票自由的流程,感兴趣的可以了解一下
    2022-05-05
  • Python 中的函数装饰器和闭包详解

    Python 中的函数装饰器和闭包详解

    这篇文章主要介绍了Python 中的函数装饰器和闭包详解,需要的朋友可以参考下
    2021-02-02
  • python使用ddddocr库识别滑动验证码简单代码示例

    python使用ddddocr库识别滑动验证码简单代码示例

    这篇文章主要介绍了如何使用ddddocr库来识别滑块验证码,并提供了一个示例代码和识别结果,同时提醒注意ddddocr库的大小限制,可能会影响某些无服务器函数的部署,需要的朋友可以参考下
    2024-11-11
  • python并发和异步编程实例

    python并发和异步编程实例

    这篇文章主要为大家详细介绍了python并发和异步编程实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • import的本质解析

    import的本质解析

    import是我们经常使用的功能,方法大家也都会。虽然用的多,但它的本质我们似乎没有好好的了解过。本文就import的本质解析,向大家作了介绍,需要的朋友可以参考下。
    2017-10-10
  • 使用Python进行图像裁剪和直方图分析

    使用Python进行图像裁剪和直方图分析

    在数字图像处理领域,裁剪和分析图像的直方图是两个非常基本且重要的操作,本文将通过一个简单的Python项目,展示如何使用skimage和matplotlib库来裁剪图像并分析其RGB通道的直方图,感兴趣的小伙伴跟着小编一起来看看吧
    2025-01-01
  • Python利用pytest和selenium实现自动化测试完整指南

    Python利用pytest和selenium实现自动化测试完整指南

    自动化测试是现代软件开发中不可或缺的一环,Python作为一门简洁优雅的编程语言,配合pytest测试框架和selenium自动化工具,为我们提供了强大的自动化测试解决方案,下面小编就来和大家简单介绍一下吧
    2025-08-08
  • python selenium 对浏览器标签页进行关闭和切换的方法

    python selenium 对浏览器标签页进行关闭和切换的方法

    今天小编就为大家分享一篇python selenium 对浏览器标签页进行关闭和切换的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论