PySide6 使用搜索引擎搜索 多类实现 更新1次

文章目录

使用搜索引擎搜索 多类实现

为什么写这篇文章?

这篇文章是模仿win10记事本,使用必应搜索的实现。

核心逻辑

  1. 借助QDesktopServices.openUrl()方法打开对应url网页
  2. 设置必应Bing搜索url => 字符串类型
  3. QPlainTextEditQTextEdit文本光标 (QTextCursor)的选中文本(selectedText)方法 结合2来传入搜索信息

参考

QT怎样获取TextEdit中选中的文本

修改搜索引擎

问题

QDesktopServices 目前对Wayland的支持性不好,如果是纯WaylandLinux系统(如Fedora Linux 42 (Workstation Edition))

会提示Error: Failed to open Wayland display, fallback to X11. WAYLAND_DISPLAY='wayland-0' DISPLAY=':0',并不影响使用

代码实现

行文本编辑(QLineEdit)
py 复制代码
# coding = utf-8

from PySide6.QtWidgets import (QWidget,QLineEdit,QPushButton,QVBoxLayout,QApplication)
from PySide6.QtGui import QDesktopServices
import sys

class DefindSearch(QWidget):

    def __init__(self):
        super().__init__()
        self.setupUi()
        self.setEventBind()

    def setupUi(self):
        """设置界面
        """
        # 主布局使用垂直布局
        vbox = QVBoxLayout(self)

        # 创建文本编辑 以及 按钮
        self.lineEdit = QLineEdit()
        self.searchPushBtn = QPushButton("使用默认浏览器搜索")

        # 添加控件到部件
        vbox.addWidget(self.lineEdit)
        vbox.addWidget(self.searchPushBtn)

    def setEventBind(self):
        """设置事件绑定
        """
        self.searchPushBtn.clicked.connect(self.getHelp)
        
    def getSearchStr(self) -> str:
        """获取搜索字符串

        :return: 搜索字符串
        """
        return self.lineEdit.text()
    
    def deskSearch(self):   
        """使用默认应用查找
        """
        searchStr = self.getSearchStr()
        url = f"https://cn.bing.com/search?q={searchStr}"
        QDesktopServices.openUrl(url)

    def getHelp(self):
        """获取帮助
        """
        url = "https://gitee.com/BasterHapy/note-pad/tree/develop/"
        QDesktopServices.openUrl(url)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    deSearch = DefindSearch()
    deSearch.show()
    sys.exit(app.exec())
文本编辑(QTextEdit)
py 复制代码
# coding = utf-8

from PySide6.QtWidgets import (QWidget,QTextEdit,QPushButton,QVBoxLayout,QApplication)
from PySide6.QtGui import QDesktopServices
import sys

class DefindSearch(QWidget):

    def __init__(self):
        super().__init__()
        self.setupUi()
        self.setEventBind()

    def setupUi(self):
        """设置界面
        """
        # 主布局使用垂直布局
        vbox = QVBoxLayout(self)

        # 创建文本编辑 以及 按钮
        self.textEdit = QTextEdit()
        self.searchPushBtn = QPushButton("使用默认浏览器搜索")

        # 添加控件到部件
        vbox.addWidget(self.textEdit)
        vbox.addWidget(self.searchPushBtn)

    def setEventBind(self):
        """设置事件绑定
        """
        self.searchPushBtn.clicked.connect(self.deskSearch)
        
    def getSearchStr(self) -> str:
        """获取搜索字符串

        :return: 搜索字符串
        """
        return self.textEdit.textCursor().selectedText()
    
    def deskSearch(self):   
        """使用默认应用查找
        """
        searchStr = self.getSearchStr()
        url = f"https://cn.bing.com/search?q={searchStr}"
        QDesktopServices.openUrl(url)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    deSearch = DefindSearch()
    deSearch.show()
    sys.exit(app.exec())
纯文本编辑器(QPlainTextEdit)

与文本编辑器类似,参考我的记事本项目

帮助网页(扩展)

实现逻辑
  • 借助QDesktopServices.openUrl()方法打开对应url网页
    参考代码

使用Python自带库实现(扩展)

示例代码
py 复制代码
import webbrowser

url = "https://www.baidu.com"

webbrowser.open(url)
相关推荐
风轻扬7772 小时前
SQLAlchemy2.0使用
python·sqlalchemy·orm框架
潘帕斯的雄鹰2 小时前
直观理解注意力机制
python·transformer·注意力机制·自注意力机制
打酱油程序员2 小时前
Python数据挖掘详细学习指南
python
天天进步20154 小时前
Python全栈项目:结合Puppeteer和AI模型操作浏览器
开发语言·人工智能·python
闲人编程5 小时前
用Python识别图片中的文字(Tesseract OCR)
开发语言·python·ocr·识图·codecapsule
盘古开天16665 小时前
从零开始:如何搭建你的第一个简单的Flask网站
后端·python·flask
二进制星轨6 小时前
Transofrmer架构详解与PyTorch实现(附代码讲解)
人工智能·pytorch·python
生而为虫6 小时前
02.第一个Python程序
开发语言·python
视觉AI6 小时前
如何查看 Linux 下正在运行的 Python 程序是哪一个
linux·人工智能·python
猫头虎7 小时前
永久免费白嫖多个域名,一键托管Cloudflare,免费申请SSL加密证书,轻松建站、搭建线路伪装
服务器·开发语言·网络·数据库·python·网络协议·ssl