在QWebengineView中使用findText()在htmlpage中查找和选择字符串

2024-09-30 22:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用QWebengineView的findText()时遇到问题。 我想构建一个程序,在这个程序中,我可以在HTML页面中搜索特定的单词,标记它们,并使用QWebengineview/Page的selectedText()方法提取它们

findText()可以很好地搜索页面并标记页面上出现的所有单词。单词被找到,回调函数显示回调“found”的“TRUE”。但是当我调用selectedText()时,字符串总是空的,因此页面上没有选择任何内容。也许我用错了回调函数

class App(QWidget):
    def __init__(self):
        '''Initializer of Main App'''
        super(App, self).__init__()
        self.resize(1920, 1080)
        self.view = QtWebEngineWidgets.QWebEngineView(self)
        self.view.resize(1920, 1080)

        self.url = QUrl('https://de.wikipedia.org/wiki/Michael_Phelps')
        self.view.load(self.url)

        self.button = QPushButton(self)
        self.button.clicked.connect(self.searchPage)
        
        self.button2 = QPushButton(self)
        self.button2.move(40,40)
        

    def searchPage(self):
        flags = QWebEnginePage.FindFlags(0)
        self.view.findText("Michael", flags ,self.callback)
    
    def callback(self, found):
        print(found)
        print(self.view.page().selectedText())

Tags: 函数标记self程序viewappurlinit
1条回答
网友
1楼 · 发布于 2024-09-30 22:17:57

通过^{}函数找到的文本突出显示,未选中,这就是^{}方法返回空字符串的原因。另一方面,^{}方法理论上会返回高亮显示的文本,该文本与启动搜索时使用的文本相同,因此期望它不同是没有用的,因此回调只返回一个布尔值,指示是否存在与单词匹配的元素

相关问题 更多 >