【发布时间】:2020-06-08 04:53:34
【问题描述】:
我创建了一个 GUI,您可以在其中输入内容,在搜索栏中,它直接进入 dadduckgo 并搜索输入的元素,然后在 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_())
编辑:- 当链接被点击时,它应该打开一个默认的网络浏览器并且 QTextBrowser 应该保留所有其他的链接。
【问题讨论】:
标签: python pyqt pyqt5 qtextbrowser