广告位联系
返回顶部
分享到

python中pywebview框架使用方法记录

python 来源:互联网 作者:佚名 发布时间:2024-09-27 21:41:13 人浏览
摘要

pywebview是python的一个库,类似于flask框架,这也是用来构建网页的软件包,它的特点就是不用更多的和html语言和js语言,更多的使用python语言就可以完成网页的创建和元素的监听该库的简介和示

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

 


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Python获取Excel文件行数的方法
    在数据分析和自动化办公领域,Python 因其简洁的语法和强大的库支持而广受欢迎。特别是当涉及到处理 Excel 文件时,Python 提供了多种库来
  • Pycharm中配置使用Anaconda的虚拟环境进行项目开发

    Pycharm中配置使用Anaconda的虚拟环境进行项目开发
    一、检查torch环境 今天在一台电脑上跑环境的时候,发现已经装了Pytorch了,但是运行没有用。 提示报错:OSError: [WinError 126] 找不到指定的模
  • python中pywebview框架使用方法记录
    pywebview是python的一个库,类似于flask框架,这也是用来构建网页的软件包,它的特点就是不用更多的和html语言和js语言,更多的使用python语言
  • Python报错ValueError: cannot convert float NaN to integer的解
    在Python编程中,我们经常需要处理各种数据类型,包括浮点数和整数。然而,有时候我们可能会遇到一些意外的情况,比如将一个包含NaN(
  • Python中的typing模块常见用法介绍

    Python中的typing模块常见用法介绍
    typing模块是 Python 提供的一个标准库,主要用于为函数、变量和类定义类型提示(Type Hints),从而提高代码的可读性和类型安全性。虽然
  • python创建字典(dict)的几种方法小结(含代码)
    字典(Dictionary)是Python中一种非常灵活的数据结构,用于存储键值对(key-value pairs)。在Python中创建字典有多种方法,每种方法都有其特定
  • 基于python实现动态烟雾效果的介绍
    动态烟雾效果常用于游戏和动画中,为场景增添 逼真的视觉效果。在这篇博客中,我们将使用Python和Pygame库来创建一个逼真的烟雾动画效果
  • Python pip更换清华源镜像

    Python pip更换清华源镜像
    在安装Python库时使用清华源镜像是为了改善库的下载速度和稳定性 地址:https://pypi.tuna.tsinghua.edu.cn/simple 命令安装 安装命令: 1 pip install 包
  • Python中xml.etree.ElementTree的使用
    xml.etree.ElementTree(简称ElementTree)是Python标准库中用于处理XML文件的模块。它提供了简洁且高效的API,适用于解析、创建和修改XML文档。在需
  • python中concurrent.futures的具体使用
    concurrent.futures是 Python 标准库中用于并行编程的高级模块,它提供了一种高级别的接口来管理线程和进程。通过这个模块,你可以轻松地利用
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计