Dessa vez foi um pouco complicado hehe, eu estava garimpando a internet procurando um exemplo de como utilizar o QPrintPreviewDialog, sem sucesso, depois de muito procurar fiz uma pergunta ao amigo do site sobre Python e Qt e ele gentilmente me respondeu, o resultado pode ser visto aqui:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4 import QtCore
from PyQt4.QtWebKit import QWebView
class ProgramaImpressor(QDialog):
def __init__(self,parent=None):
super(ProgramaImpressor,self).__init__(parent)
rotuloNome=QLabel("Nome: ")
rotuloEndereco=QLabel(u"Endereço: ")
rotuloOutros=QLabel("Diversos: ")
self.impressor=QPrinter()
self.txtnome=QLineEdit()
self.txtendereco=QLineEdit()
self.txtdiversos=QTextEdit()
self.btnimprimir=QPushButton("&Imprimir")
layoutHorizontal=QHBoxLayout()
layoutHorizontal2=QHBoxLayout()
layoutHorizontal3=QHBoxLayout()
layoutVertical=QVBoxLayout()
layoutHorizontal.addWidget(rotuloNome)
layoutHorizontal.addWidget(self.txtnome)
layoutHorizontal2.addWidget(rotuloEndereco)
layoutHorizontal2.addWidget(self.txtendereco)
layoutHorizontal3.addWidget(rotuloOutros)
layoutHorizontal3.addWidget(self.txtdiversos)
layoutVertical.addLayout(layoutHorizontal)
layoutVertical.addLayout(layoutHorizontal2)
layoutVertical.addLayout(layoutHorizontal3)
layoutVertical.addWidget(self.btnimprimir)
self.setLayout(layoutVertical)
self.dialogo=QPrintPreviewDialog()
self.html=u""
self.documento=QWebView()
self.connect(self.dialogo, SIGNAL("paintRequested (QPrinter *)"),self.documento.print_)
self.connect(self.documento,SIGNAL("loadFinished (bool)"),self.previaImpressao)
self.connect(self.btnimprimir, SIGNAL("clicked()"),self.imprimir)
def previaImpressao(self,arg):
self.dialogo.exec_()
def imprimir(self,html=None):
html=u"<font align=center><H1>Relatório de Teste de Impressão</H1></font>\
<br>\
<p>O nome digitado Foi: <font color=blue>%s</font></p>\
<p>O endereço da pessoa é: <font color=blue>%s</font></p>\
<p>Os demais comentários São:\
<br>%s</p>"%(self.txtnome.text(),self.txtendereco.text(),self.txtdiversos.toHtml())
self.documento.setHtml(html)
#self.documento.show()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
JanelaPrincipal = ProgramaImpressor()
JanelaPrincipal.show()
app.exec_()
Um comentário:
Olá gostaria de saber como posso utilizar esta classe para gerar um relatório com html.
Eu tenho a conexão com o banco e também o layout do relatório em html consegui até gerar um relatório onde retornava apenas um registro mas não consegui nada além se vc tiver uma sugestão ficarei grato.
Parabéns pelo blog e pela postagem foi bastatne esclarecedora.
Postar um comentário