Я создал виджет для поиска PDF-файлов. Введите строку поиска и выберите файл PDF, и результаты поиска появятся в правой нижней панели. Щелкните конкретный результат поиска, и будет выбрана страница PDF-файла, содержащая результат поиска. Хотя он выделяет конкретный результат поиска в PDF-файле, он не перемещается в определенное место на странице... Мне нужно прокрутить, чтобы найти выделенный результат. Я бы хотел, чтобы он попал в нужное место на странице. Я думаю, мне нужно передать QPointF в мой метод page_selected, но я не могу понять, как это сделать?
Внесены необходимые изменения для рабочего примера ниже:
import sys
from PyQt6.QtWidgets import QApplication,QGridLayout,QWidget,QLineEdit,QListView,QPushButton
from PyQt6.QtPdf import QPdfSearchModel,QPdfDocument
from PyQt6.QtPdfWidgets import QPdfView
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QPdfSearchModelExample")
self.searchBtn=QPushButton()
self.searchBtn.setText("Search")
self.searchBtn.clicked.connect(self._searchBtn)
self.pdf_document=QPdfDocument(self)
self.myPdfView=QPdfView(self)
self.searchText=QLineEdit()
self.searchText.setText("Search String")
self.searchModel=QPdfSearchModel(self)
self.myPdfView.setDocument(self.pdf_document)
self.myPdfView.setSearchModel(self.searchModel)
self.searchView=QListView(self)
self.searchView.setModel(self.searchModel)
self.searchView.setWordWrap(True)
self.selModel=self.searchView.selectionModel()
self.selModel.selectionChanged.connect(self.selChange)
layout = QGridLayout()
layout.addWidget(self.searchText, 0, 0)
layout.addWidget(self.searchBtn, 0, 1)
layout.addWidget(self.searchView, 1, 0)
layout.addWidget(self.myPdfView, 1, 1)
self.setLayout(layout)
file_path = "/mnt/cloud/cases/20-12522/20-12522/1.pdf"
self.pdf_document.load(file_path)
self.searchModel.setDocument(self.pdf_document)
self.myPdfView.setCurrentSearchResultIndex(self.selModel.currentIndex().row())
def _searchBtn(self):
self.searchModel.setSearchString(self.searchText.text())
def selChange(self,index):
self.myPdfView.setCurrentSearchResultIndex(self.selModel.currentIndex().row())
link=self.myPdfView.searchModel().resultAtIndex(self.selModel.currentIndex().row())
self.myPdfView.pageNavigator().jumped.connect(lambda link: (self.myPdfView.horizontalScrollBar().setValue(int(link.location().x())), self.myPdfView.verticalScrollBar().setValue(int(link.location().y()))))
nav = self.myPdfView.pageNavigator()
nav.jump(link)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())
Подробнее здесь: https://stackoverflow.com/questions/793 ... fsearchmod
Как я могу перейти к определенному месту на странице с результатом поиска, используя QPdFSearchModel ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как автоматически перейти к определенному разделу DOM с помощью Selenium?
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-