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를 다시 끼웁니다.