9 답변
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
-
def btnClick(self): # 프린터 생성, 실행 printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec() == QDialog.Accepted: # Painter 생성 qp = QPainter() qp.begin(printer)
# 여백 비율 wgap = printer.pageRect().width()*0.1 hgap = printer.pageRect().height()*0.1 # 화면 중앙에 위젯 배치 xscale = (printer.pageRect().width()-wgap)/self.table.width() yscale = (printer.pageRect().height()-hgap)/self.table.height() scale = xscale if xscale < yscale else yscale qp.translate(printer.paperRect().x() + printer.pageRect().width()/2, printer.paperRect().y() + printer.pageRect().height()/2) qp.scale(scale, scale); qp.translate(-self.table.width()/2, -self.table.height()/2); # 인쇄 self.table.render(qp) qp.end() def btnClick2(self): # pdf 생성 pdf = QPdfWriter('test.pdf') pdf.setPageSize(QPagedPaintDevice.A4) # 화면 캡쳐 screen = QApplication.primaryScreen() img = screen.grabWindow(self.winId(), 0,0, self.rect().width(),self.rect().height()) # 3항 연산자 (a if test else b, 만약 test가 참이면 a, 아니면 b) # 이미지 크기는 큰 값 기준, PDF 크기는 작은값 기준(화면 초과 방지) img_size = img.width() if img.width()-img.height() > 0 else img.height() pdf_size = pdf.width() if pdf.width()-pdf.height() < 0 else pdf.height() # 최적 비율 얻기 ratio = pdf_size / img_size # pdf에 쓰기 qp = QPainter() qp.begin(pdf) point = QPoint(0, 0) qp.drawPixmap(point, img.width()*ratio, img.height()*ratio, img) qp.end()
댓글 입력