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)
相关推荐
方安乐12 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
zh15702313 小时前
JavaScript中WorkerThreads解决服务端计算瓶颈
jvm·数据库·python
蜡台14 小时前
Python包管理工具pip完全指南-----2
linux·windows·python
Mr.朱鹏14 小时前
【Python 进阶 | 第四篇】Psycopg3 + Flask 实现 PostgreSQL CRUD 全流程:从连接池到RESTful接口
python·postgresql·flask·virtualenv·fastapi·pip·tornado
2401_8714928514 小时前
Vue.js监听器watch利用回调函数处理级联下拉框数据联动
jvm·数据库·python
FreakStudio14 小时前
亲测可用!可本地部署的 MicroPython 开源仿真器
python·单片机·嵌入式·面向对象·并行计算·电子diy·电子计算机
SilentSamsara15 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
zhoutongsheng16 小时前
C#怎么实现Swagger文档 C#如何在ASP.NET Core中集成Swagger自动生成API文档【框架】
jvm·数据库·python
.54817 小时前
## Sorting(排序算法)
python·算法·排序算法
ydmy17 小时前
注意力机制(个人理解)
pytorch·python·深度学习