如何防止打印按钮在打印后关闭 QPrintPreviewDialog
How to prevent Print Button to close QPrintPreviewDialog after printing
当我运行这个简单的程序...
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtPrintSupport import *
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
html = "<html><body>"
for i in range(1000):
html += "<p>{i}</p>".format(i=i)
html += "</body></html>"
self.document = QTextDocument()
self.document.setHtml(html)
closing_checkbox = QCheckBox("Close Print Preview dialog after first print")
closing_checkbox.setCheckState(Qt.Checked)
button_preview = QPushButton('Preview', self)
button_preview.clicked.connect(self.handlePreview)
layout = QVBoxLayout(self)
layout.addWidget(closing_checkbox)
layout.addWidget(button_preview)
def handlePreview(self):
dialog = QPrintPreviewDialog()
dialog.paintRequested.connect(self.document.print_)
dialog.exec_()
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
...单击“预览”按钮后,QPrintPreviewDialog 打开。单击工具栏上的(最右侧)打印按钮后,我选择了打印机并进行打印,QPrintPreviewDialog 关闭。我知道在大多数情况下这正是用户想要的。但是如果在某些情况下用户想要再次打印相同的文档,但是在不同的网络打印机上怎么办。或者例如他想先打印第 1-2 页,然后(同一个 QPrintPreviewDialog 仍然打开)他想打印第 9-10 页。
当我清除 closing_checkbox 时,我希望 QPrintPreviewDialog 在单击“打印”按钮后不关闭。热吗?我尝试继承 QPrintPreviewDialog 并实现 accept()、reject()、closeEvent(),但没有成功。
一种可能的解决方案是覆盖 accept()
方法:
class PrintPreviewDialog(QPrintPreviewDialog):
def accept(self):
pass
dialog = PrintPreviewDialog()
当我运行这个简单的程序...
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtPrintSupport import *
class Window(QWidget):
def __init__(self):
super(Window, self).__init__()
html = "<html><body>"
for i in range(1000):
html += "<p>{i}</p>".format(i=i)
html += "</body></html>"
self.document = QTextDocument()
self.document.setHtml(html)
closing_checkbox = QCheckBox("Close Print Preview dialog after first print")
closing_checkbox.setCheckState(Qt.Checked)
button_preview = QPushButton('Preview', self)
button_preview.clicked.connect(self.handlePreview)
layout = QVBoxLayout(self)
layout.addWidget(closing_checkbox)
layout.addWidget(button_preview)
def handlePreview(self):
dialog = QPrintPreviewDialog()
dialog.paintRequested.connect(self.document.print_)
dialog.exec_()
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
...单击“预览”按钮后,QPrintPreviewDialog 打开。单击工具栏上的(最右侧)打印按钮后,我选择了打印机并进行打印,QPrintPreviewDialog 关闭。我知道在大多数情况下这正是用户想要的。但是如果在某些情况下用户想要再次打印相同的文档,但是在不同的网络打印机上怎么办。或者例如他想先打印第 1-2 页,然后(同一个 QPrintPreviewDialog 仍然打开)他想打印第 9-10 页。
当我清除 closing_checkbox 时,我希望 QPrintPreviewDialog 在单击“打印”按钮后不关闭。热吗?我尝试继承 QPrintPreviewDialog 并实现 accept()、reject()、closeEvent(),但没有成功。
一种可能的解决方案是覆盖 accept()
方法:
class PrintPreviewDialog(QPrintPreviewDialog):
def accept(self):
pass
dialog = PrintPreviewDialog()