[pyqt5] 기본레이아웃 만들기

Computer 비관심/PyQt5|2020. 7. 24. 14:04
반응형

아래의 화면은 flutter 공식홈페이지에서 가져왔다. 플러터의 튜토리얼을 이용한 이유는 개념이 비슷하기 때문이다. 

(이 개념은 html로 따지면 div에 이미 flex박스의 flex-direction: 속성이 걸려 있는 것과 같다. 하지만 플렉스박스 이전에 div를 float해서 레이아웃을 만드는 법과는 다르기 때문에 개념의 차이점을 정확히 아는게 중요할 것 같다.) 

 

 

아래의 화면은 Row와 Column 위젯이 엮여져서 만들어 졌다.(nested)

화면을 만들때 즉 큰 레이아웃부터 작은 레이아웃으로 만들어 나가면 된다.

 

 

위의 로우는 Row는 하나의 칼럼과 하나의 이미지로 구성되어 있다.

그리고 칼럼은 텍스트, 텍스트, 로우, 로우 위젯으로 구성되어 있다.

 

 

 

그렇다면 이러한 방법을 어떻게 PyQt5에 적용 할 수 있을까?

 

 

QHBoxLayout() 의 QH는 Q horizontal 을 의미한다. 즉 가로방향(로우)의 구성을 말한다. 

아래의 코드는 즉 row의 구성을 만든뒤 

 

hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(yesButton)
hbox.addWidget(noButton)
hbox.addStretch(1)

 

이러한 형식으로 가로의 레이아웃이 잡힌다.

  Yes button yes button  

 

 

QVBoxLayout() 즉, 세로방향의 구성에 넣는다.

vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addLayout(hbox)
vbox.addStretch(1)

 

 
  yes button no botton  
 

 

이렇게 하면 기본적인 PyQT5의 기본적인 레이아웃을 잡을 수 있다.

반응형

댓글()

[PYQT5]레퍼런스 사이트

Computer 비관심/PyQt5|2020. 7. 18. 18:31
반응형

어떤 모듈이 어디에 속해있는지 쉽게 찾을 수 있다!

 

https://doc.bccnsoft.com/docs/PyQt5/

 

PyQt5 Reference Guide — PyQt 5.7 Reference Guide

 

doc.bccnsoft.com

 

 

반응형

댓글()

[PYQT5] 프린트 할 위젯 선택하고 프린트 하는 예제

Computer 비관심/PyQt5|2020. 7. 18. 18:30
반응형

간단한 예제로 어떻게 작동하는지 응용하기 쉬운 소스입니다.

 

QPrinter 클레스를 사용해서 출력합니다.

import sys

from PyQt5 import QtGui, QtWidgets, QtPrintSupport


class App(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        # Create some widgets
        self.setGeometry(500, 500, 300, 300)
        self.button = QtWidgets.QPushButton(
            'Print QTextEdit widget (the one below)', self)
        self.button.setGeometry(20, 20, 260, 30)
        self.editor = QtWidgets.QTextEdit(
            'Wow such text why not change me?', self)
        self.editor.setGeometry(20, 60, 260, 200)
        self.button.clicked.connect(self.print_widget)

    def print_widget(self):
        # Create printer
        printer = QtPrintSupport.QPrinter()
        # Create painter
        painter = QtGui.QPainter()
        # Start painter
        painter.begin(printer)
        # Grab a widget you want to print
        screen = self.editor.grab()
        # Draw grabbed pixmap
        painter.drawPixmap(10, 10, screen)
        # End painting
        painter.end()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = App()
    gui.show()
    app.exec_()

 

만약 전체를 출력하고 싶다면 screen =self.editor.grab() 대신 screen = self.grab()을 하면 됩니다.

 

출처: https://stackoverflow.com/questions/42455904/printing-from-main-page-in-pyqt5

반응형

댓글()