文章目录
-
- [使用搜索引擎搜索 多类实现](#使用搜索引擎搜索 多类实现)
使用搜索引擎搜索 多类实现
为什么写这篇文章?
这篇文章是模仿win10
记事本,使用必应搜索的实现。
核心逻辑
- 借助
QDesktopServices.openUrl()
方法打开对应url
网页 - 设置必应Bing搜索
url
=> 字符串类型 QPlainTextEdit
或QTextEdit
的文本光标 (QTextCursor)的选中文本(selectedText)方法 结合2来传入搜索信息
参考
问题
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)
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)