Чтобы отобразить определенный PDF-файл в QPrintPreviewDialog без использования QFileDialog для выбора файла, вы можете использовать QPrinter и QPrintPreviewDialog напрямую.
Вот пример, который показывает, как отрисовать PDF-файл из определенного расположения:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QPrintPreviewDialog, QAction
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import QFileInfo, Qt
from PyQt5.QtPrintSupport import QPrinter
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('PDF Print Preview')
self.setGeometry(100, 100, 600, 400)
open_action = QAction('Open PDF', self)
open_action.triggered.connect(self.open_pdf)
self.toolbar = self.addToolBar('Open')
self.toolbar.addAction(open_action)
def open_pdf(self):
# Используйте определенное расположение и имя файла для PDF-файла
file_name = '/path/to/pdf/file.pdf'
if not QFileInfo(file_name).exists():
return
printer = QPrinter(QPrinter.HighResolution)
printer.setPageSize(QPrinter.A4)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName(file_name)
preview_dialog = QPrintPreviewDialog(printer, self)
preview_dialog.paintRequested.connect(self.print_preview)
preview_dialog.exec_()
def print_preview(self, printer):
# Отрисовываем содержимое файла PDF
painter = QPainter(printer)
painter.drawText(10, 20, 'This is a sample PDF content.')
painter.end()
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
В этом примере, когда вы нажимаете на действие "Open PDF" в панели инструментов, открывается диалоговое окно предварительного просмотра печати для отображения содержимого PDF-файла из заданного расположения (`/path/to/pdf/file.pdf`). В файле PDF отображается простой текст "This is a sample PDF content." Вы можете заменить это содержимое на свои ценники.
Убедитесь, что у вас установлены библиотеки PyQt5 и PyQt5-sip. Вы также можете изменить размеры окна и инструменты по своему усмотрению.