Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2020 22:20:36

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 65
Репутация: +  1  -
Профиль   Отправить e-mail  

Печать на принтере

Добрый день. Есть вопрос про предварительный просмотр перед печатью. Вопрос такой, как вывести текст в предварительный просмотр, а то там просто пустое окно с кнопками и даже без чистого белого листа?

Использую вот такую конструкцию

 txt = "<b>бла бла бла</b>"
printer = Qt.QPrinter()
document = QtGui.QTextDocument(self)
document.setHtml(txt)
pd = Qt.QPrintPreviewDialog(printer,self)
pd.setWindowTitle("Печать")
 
if pd.exec()== Qt.QDialog.Accepted:
   document.print(printer)

Офлайн

#2 Март 4, 2020 21:19:39

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Печать на принтере

Ser5+
Вопрос такой, как вывести текст в предварительный просмотр, а то там просто пустое окно с кнопками и даже без чистого белого листа?
ну дык нужно читать документацию
https://doc.qt.io/qt-5/qprintpreviewdialog.html
1. Create the QPrintPreviewDialog
2. Connect the paintRequested() signal to a slot.
тоесть после
pd = Qt.QPrintPreviewDialog(printer,self)
pd.setWindowTitle(“Печать”)
нужно еще
pd.paintRequested.connect(self.print_preview_render)
если бы вы печетели из QTextEdit-ра то достаточно было бы сделать вот так
pd.paintRequested.connect(self.QTextEdit_instance.print_), а QTextDocument нужно ручками рендерить например через qpainter или QChart
примерно так https://stackoverflow.com/questions/8193920/how-to-use-qprinter-and-qprintpreviewdialog



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Март 7, 2020 15:08:33

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 65
Репутация: +  1  -
Профиль   Отправить e-mail  

Печать на принтере

PEHDOM Понял. Испробую,как нибудь,пробовал через painter,но почему то он сразу начинает печатать,не спрашивая,поэтому избавился от paintera хотя скорее всего этот сигнал .paintRequested.connect(self.QTextEdit_instance.print_) надо поместить в условие Qt.QDialog.Accepted: чтобы не печаталось сразу.

Офлайн

#4 Март 7, 2020 16:30:38

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Печать на принтере

Ser5+
хотя скорее всего этот сигнал .paintRequested.connect(self.QTextEdit_instance.print_) надо поместить в условие Qt.QDialog.Accepted: чтобы не печаталось сразу.
нет не надо, если все правильно сделать, то оно должно вывести окно с превью, и в этом окне отрисовать то что вы painter “нарисуете”. Если у вас оно сраз на перчать шл, знач гдето чтто не так.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version