我已经创建了一个GUI,您可以在其中输入一些东西,在搜索栏中,它直接进入duckduckgo并搜索输入的元素,然后它在QTextBrowser
中打印所有超链接。但是链接是不可点击的。我不知道如何使它可点击。如果你们能帮助我,我将不胜感激。
主要函数是input_value
,我在这里编写了后端流程。这是我的代码:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QDialog, QApplication
from PyQt5.QtCore import QAbstractTableModel, Qt
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import pyautogui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(875, 648)
MainWindow.setAutoFillBackground(False)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.searchforpoi = QtWidgets.QPushButton(self.centralwidget)
self.searchforpoi.setGeometry(QtCore.QRect(730, 20, 111, 34))
self.searchforpoi.setObjectName("searchforpoi")
self.searchforpoi.clicked.connect(self.input_value)
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(20, 20, 691, 31))
self.lineEdit.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))
self.lineEdit.setObjectName("lineEdit")
self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
self.textBrowser.setGeometry(QtCore.QRect(25, 71, 821, 551))
self.textBrowser.setObjectName("textBrowser")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "POI Updation app"))
self.searchforpoi.setText(_translate("MainWindow", "Search for POI"))
def input_value(self):
options = webdriver.ChromeOptions()
options.headless = True
textboxValue = self.lineEdit.text()
browser = webdriver.Chrome()
browser.implicitly_wait(30)
browser.maximize_window()
browser.get("http://www.duckduckgo.com")
elem = browser.find_element_by_name("q")
elem.clear()
elem.send_keys(textboxValue)
elem.submit()
lists = browser.find_elements_by_class_name("result__url__domain")
for a in browser.find_elements_by_xpath('.//a'):
ab = a.get_attribute('href')
self.textBrowser.append(ab)
browser.quit()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
编辑:-单击链接时,应打开默认web浏览器,QTextBrowser应保留所有其他链接
耗费大量时间的任务必须在辅助线程中执行,并通过信号发送信息,另一方面,将URL作为文本传递不会使其可点击,您应该使用“href”。为了不更改页面,QTextBrowser(未删除链接)必须将属性
OpenLinks
打开为False。要在OS默认浏览器中打开url,则必须使用QDesktopServices.openUrl()
:相关问题 更多 >
编程相关推荐