QWidget

가장 기본이 되는 Window View 입니다.

사용 되는 곳

QWidget은 그림 그릴 떄 사용되는 캔버스라고 생각하시면 됩니다. QWidget위에 다양한 Widget들을 배치시켜 화면에 나타나게 합니다.

생성

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Window!!!')
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

01 sys 모듈은 사용자 입력이나 외부 경로에 대한 값 전달에 사용됩니다. 이외 Python을 실행하기 위한 시스템 값들에 대한 정보를 담고 있습니다. https://docs.python.org/3/library/sys.html 02 PyQt5.QtWidgets 모듈은 GUI를 구성하기 위한 거의 모든 Widget들을 담고 있습니다. http://pyqt.sourceforge.net/Docs/PyQt5/QtWidgets.html 04 QWidget을 상속 받은 App Class를 만듭니다. 06 __init__ 함수는 클레스가 생성될 때 최초로 호출 됩니다. 07 QWidget을 상속받았기 때문에 QWidget이 생성될 때 필요한 값을 전달해줍니다. 08 화면에 생성 될 Window 제목을 'Window!!!' 로 설정합니다. 11 QtPy 어플리케이션의 시작을 알리는 QApplication을 생성합니다. 12 앞서 만든 App을 생성합니다. 13 생성된 App을 화면에 보이도록 합니다. 14 시스템이 종료 될 때 정상적 종료(0), 비 정상적 종료를 알려 줍니다(1)

모든 것을 이해하기는 어렵습니다. 윈도우 생성으로 PyQt에 한걸음 다가갔다고 생각하면 됩니다. 이제 생성한 윈도우의 속성값을 변경해서 우리가 원하는 형태로 변경해보겠습니다.

크기 조절

원하는 크기로 Window를 생성할 수 있습니다.


import sys
from PyQt5.QtWidgets import QApplication, QWidget
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Window!!!')
        self.resize(500, 600)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

09 크기를 가로 500px, 세로 600px 으로 변경합니다.

위치 조절

화면의 원하는 위치에서 시작하도록 설정 할 수 있습니다.

import sys
from PyQt5.QtWidgets import QApplication, QWidget
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Window!!!')
        self.resize(500, 600)
        self.move(100, 100)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

10 화면의 가로 100px, 세로 100px 위치가 시작점이 됩니다.

위치와 크기를 같이 조절

import sys
from PyQt5.QtWidgets import QApplication, QWidget
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Window!!!')
        self.setGeometry(100, 100, 500, 600)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

09 setGeometry(가로 위치, 세로 위치, 가로 크기, 세로 크기)

배경 색 변경

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import Qt
from PyQt5 import QtGui
class App(QWidget):
    def __init__(self):
        super(App, self).__init__()
        self.setWindowTitle('Window!!!')
        self.setGeometry(100, 100, 500, 600)
        self.setBackgroundColor()
    def setBackgroundColor(self):
        self.setAutoFillBackground(True)
        p = self.palette()
        p.setColor(self.backgroundRole(), Qt.white)
        p.setColor(self.backgroundRole(), QtGui.QColor(0,0,244))
        self.setPalette(p)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = App()
    window.show()
    sys.exit(app.exec_())

12 setBackgroundColor 함수를 호출합니다. 15 백그라운드를 자동으로 꽉 채워주는 옵션입니다. 16 현재 사용중인 palette를 가져옵니다. palette는 각위젯의 컬러를 관리합니다. 17 색깔을 변경합니다. 18 RBG 값을 이용해 색을 변경 할 떄 사용합니다. 19 변경된 palette를 다시 끼웁니다.

Last updated