当前位置: 首页 > news >正文

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

文章目录

    • 使用搜索引擎搜索 多类实现
      • 为什么写这篇文章?
      • 核心逻辑
      • 参考
      • 问题
      • 代码实现
        • 行文本编辑(QLineEdit)
        • 文本编辑(QTextEdit)
        • 纯文本编辑器(QPlainTextEdit)
      • 帮助网页(扩展)
        • 实现逻辑
      • 使用Python自带库实现(扩展)
        • 示例代码

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

为什么写这篇文章?

这篇文章是模仿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)
# coding = utf-8from PySide6.QtWidgets import (QWidget,QLineEdit,QPushButton,QVBoxLayout,QApplication)
from PySide6.QtGui import QDesktopServices
import sysclass 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)
# coding = utf-8from PySide6.QtWidgets import (QWidget,QTextEdit,QPushButton,QVBoxLayout,QApplication)
from PySide6.QtGui import QDesktopServices
import sysclass 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自带库实现(扩展)

示例代码
import webbrowserurl = "https://www.baidu.com"webbrowser.open(url)
http://www.dtcms.com/a/507859.html

相关文章:

  • 宁波网站优化的关键企业网站后台管理系统模板
  • 网站开发项目需求分析说明书电子商务网站开发与实现
  • 群晖实现证书90天自动更新(无需对外提供80端口)
  • AMCL自适应(KLD - Sampling: Adaptive Particle Filters)一种基于粒子滤波的移动机器人定位算法
  • NOR FLASH
  • 网站代码优化方案网站建设和编程的区别
  • 重庆建设工程造价管理协会网站直播网站开发价格
  • 【Nest】集成测试
  • ELK运维之路(Logstash基础使用-7.17.24)
  • 快速排序(JAVA详细讲解快速排序的四种方式)
  • 数据结构四大简单排序算法详解:直接插入排序、选择排序、基数排序和冒泡排序
  • 官渡网站建设wordpress单页面制作
  • 企业电子商务网站开发数据库设计昆明seo博客
  • 东道 网站建设erp系统哪家做得好
  • 现代 Web 开发中检测用户离开页面的完整方案(附 Vue 实现)
  • [crackme]029-figugegl.1
  • 网站建站分辨率腾讯企点怎么注册
  • 第四章:L2CAP 的“数据语言”——揭秘蓝牙通信的报文格式
  • 【代码随想录算法训练营——Day43(Day42周日休息)】动态规划——300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
  • block的样式有哪些?如果copy的话分别会有啥样式
  • 如何做网络投票网站大数据开发工程师
  • 提示词 prompt 快速上手
  • 网站降权查询工具lnmp中安装wordpress
  • 一个空间放两个网站蓟门桥网站建设
  • DPC和DPC-KNN算法
  • git中tag标签远程管理
  • Babylon.js UtilityLayerRenderer 深度解析:创建3D工具与调试层的完整指南
  • 如何制造一个网站网站的图片怎么更换
  • 区块链安全评估:守护数字世界的“安全密码”
  • 多语言网站建设公司教你做企业网站