PySide6 使用搜索引擎搜索 多类实现 更新1次
文章目录
- 使用搜索引擎搜索 多类实现
- 为什么写这篇文章?
- 核心逻辑
- 参考
- 问题
- 代码实现
- 行文本编辑(QLineEdit)
- 文本编辑(QTextEdit)
- 纯文本编辑器(QPlainTextEdit)
- 帮助网页(扩展)
- 实现逻辑
- 使用Python自带库实现(扩展)
- 示例代码
使用搜索引擎搜索 多类实现
为什么写这篇文章?
这篇文章是模仿win10
记事本,使用必应搜索的实现。
核心逻辑
- 借助
QDesktopServices.openUrl()
方法打开对应url
网页 - 设置必应Bing搜索
url
=> 字符串类型 QPlainTextEdit
或QTextEdit
的文本光标(QTextCursor)的选中文本(selectedText)方法 结合2来传入搜索信息
参考
QT怎样获取TextEdit中选中的文本
修改搜索引擎
问题
QDesktopServices
目前对Wayland
的支持性不好,如果是纯Wayland
的Linux
系统(如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)