Python-GUI浏览器工具


一、完成效果:

在这里插入图片描述
在这里插入图片描述


二、开发背景:

最近整起了esp8266,简单的制作了一个物联网Demo,但是每次通过浏览器访问太麻烦,且放在桌面不美观(强迫症难忍)。


三、 源码:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *

import sys


class MainWindow(QMainWindow):
    # noinspection PyUnresolvedReferences
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 设置窗口标题
        self.setWindowTitle('IoT')
        # 设置窗口图标
        self.setWindowIcon(QIcon('D:/bi  zhi/BH3/toux.png'))
        # 窗体始终显示最上层
        self.setWindowFlags(Qt.WindowStaysOnTopHint)
        # 设置窗口大小900*600
        self.setMinimumSize(300, 170)
        self.setMaximumSize(300, 170)
        self.show()

        # 设置浏览器
        self.browser = QWebEngineView()
        url = ' '
        # 指定打开界面的 URL
        self.browser.setUrl(QUrl(url))
        # 添加浏览器到窗口中
        self.setCentralWidget(self.browser)

        ###使用QToolBar创建导航栏,并使用QAction创建按钮
        # 添加导航栏
        navigation_bar = QToolBar('Navigation')
        # 设定图标的大小
        navigation_bar.setIconSize(QSize(16, 10))
        # 添加导航栏到窗口中
        self.addToolBar(navigation_bar)

        # QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中
        # 添加前进、后退、停止加载和刷新的按钮
        # back_button = QAction(QIcon('icons/back.png'), 'Back', self)
        # next_button = QAction(QIcon('icons/next.png'), 'Forward', self)
        # stop_button = QAction(QIcon('icons/cross.png'), 'stop', self)
        # reload_button = QAction(QIcon('icons/renew.png'), 'reload', self)

        back_button.triggered.connect(self.browser.back)
        next_button.triggered.connect(self.browser.forward)
        stop_button.triggered.connect(self.browser.stop)
        reload_button.triggered.connect(self.browser.reload)

        # 将按钮添加到导航栏上
        # navigation_bar.addAction(back_button)
        # navigation_bar.addAction(next_button)
        # navigation_bar.addAction(stop_button)
        # navigation_bar.addAction(reload_button)

        # 添加URL地址栏
        self.urlbar = QLineEdit()
        # 让地址栏能响应回车按键信号
        self.urlbar.returnPressed.connect(self.navigate_to_url)

        navigation_bar.addSeparator()
        navigation_bar.addWidget(self.urlbar)

        # 让浏览器相应url地址的变化
        self.browser.urlChanged.connect(self.renew_urlbar)

    def navigate_to_url(self):
        q = QUrl(self.urlbar.text())
        if q.scheme() == '':
            q.setScheme('http')
        self.browser.setUrl(q)

    def renew_urlbar(self, q):
        # 将当前网页的链接更新到地址栏
        self.urlbar.setText(q.toString())
        self.urlbar.setCursorPosition(0)


# 创建应用
app = QApplication(sys.argv)
# 创建主窗口
window = MainWindow()
# 显示窗口
window.show()
# 运行应用,并监听事件
app.exec_()

四、Python打包exe

# 1.安装pyinstaller模块(已安装跳过此步骤)
pip install pyinstaller
# 2.使用pyinstaller模块命令打包(注意生成的exe程序在你当前执行下面命令的目录)
# -D 仅仅生成一个exe文件
# -w 程序运行不显示控制台
pyinstaller -D -w 你的py程序所在目录/xxx.py
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Python的win32gui和win32api模块来获取浏览器的截图。以下是一个基本的示例: ```python import win32gui, win32ui, win32con, win32api # 获取浏览器窗口的句柄 browser_hwnd = win32gui.FindWindow(None, "浏览器标题") # 获取浏览器窗口的DC browser_dc = win32gui.GetWindowDC(browser_hwnd) # 获取浏览器窗口的宽度和高度 left, top, right, bottom = win32gui.GetWindowRect(browser_hwnd) width, height = right - left, bottom - top # 创建一个与浏览器窗口DC兼容的内存DC mem_dc = win32ui.CreateDCFromHandle(browser_dc) # 创建一个内存位图,大小为浏览器窗口的大小 bitmap = win32ui.CreateBitmap() bitmap.CreateCompatibleBitmap(mem_dc, width, height) # 将内存位图选入内存DC mem_dc.SelectObject(bitmap) # 将浏览器窗口内容拷贝到内存DC中 mem_dc.BitBlt((0, 0), (width, height), browser_dc, (0, 0), win32con.SRCCOPY) # 从内存DC中获取位图数据 bitmap_info = bitmap.GetInfo() bitmap_bits = bitmap.GetBitmapBits(True) # 将位图数据转化为PIL图像 img = Image.frombuffer( "RGB", (bitmap_info["bmWidth"], bitmap_info["bmHeight"]), bitmap_bits, "raw", "BGRX", (bitmap_info["bmWidth"] * bitmap_info["bmBitsPixel"]) // 8, 1, ) # 显示截图 img.show() ``` 在这个例子中,我们首先根据浏览器的标题找到了浏览器窗口的句柄,然后获取了浏览器窗口的DC,并创建了一个与浏览器窗口DC兼容的内存DC,将浏览器窗口内容拷贝到内存DC中,并从内存DC中获取位图数据。最后,我们将位图数据转化为PIL图像,并显示截图。 需要注意的是,这个例子只能截取整个浏览器窗口的内容,如果你需要截取浏览器中的某个具体区域,可以使用selenium等工具模拟浏览器操作,或者使用Pillow库的裁剪功能来处理截图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值