python에서 GUI를 사용할 때 python 바인딩인 PyQt를 주로 사용한다.
예를 들어 C언어에서 int abc = 10; 라고 변수 abc를 선언할 때, 식별자가 'abc'라는 변수의 속성을 정수라는 자료형 속성과 연결하고, 자료값으로는 10이 할당되는 각각의 과정에 바인딩 개념이 적용되는 것이다.
위젯은 사용자 인터페이스를 구성하는 가장 기본적인 부품 역할
args = sys.argv[1:]
for i in args:
print(i)
위의 예는 입력받은 인수들을 for문을 이용해 차례대로 하나씩 출력하는 것. sys 모듈의 argv는 명령창에서 입력한 인수들을 의미한다. 띄어쓰기를 기준으로 차례로 argv의 요소가 된다.
PS 경로>python 파일이름 입력하고싶은인수
순으로 입력하면 된다.
프로그램을 만들기 위한 하나의 큰 바구니. 이 프로그램은 생성만하고 바로 꺼지게 되는데, 내가 어떠한 명령을 취할 때까지 대기상태에 두기 위해 app.exec_()을 사용한다.
app 이 종료되면 0을 return하고 sys.exit(0)을 받으면 python은 루프에서 빠져나와 정상종료를 하게 된다.
Qt 프로그램을 만드는 것은 위젯을 만들고 조합하는 작업.
QLabel 과 QPushButton 을 이용하여 메시지나 버튼을 만들 수 있다.
<RCC>
<qresource prefix="/">
<file>images/ok.png</file>
</qresource>
</RCC>
라고 Logon.qrc란 파일을 만들고
> pyside2-rcc -o Logon_rc.py Logon.qrc
를 실행하게 되면 경로에 Logon_rc.py가 만들어 진다.
그리고 Logon1.py를 만들어
import sys
from PySide2.QtWidgets import (QApplication, QWidget, QLabel, QLineEdit, QGridLayout,
QPushButton, QHBoxLayout, QVBoxLayout)
from PySide2.QtGui import QIcon
from PySide2.QtCore import Qt
# from PySide2.QtCore import SIGNAL, SLOT, QObject
import Logon_rc
if __name__ == '__main__':
app = QApplication(sys.argv)
logon = QWidget()
labelId = QLabel('&Id :')
labelId.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
labelPW = QLabel('&Password:')
lineEditId = QLineEdit()
lineEditPW = QLineEdit()
lineEditPW.setEchoMode(QLineEdit.Password)
labelId.setBuddy(lineEditId)
labelPW.setBuddy(lineEditPW)
buttonOk = QPushButton("&Ok")
buttonOk.setIcon(QIcon(":/checked.png"))
layout1 = QGridLayout()
layout1.addWidget(labelId,0,0)
layout1.addWidget(lineEditId,0,1);
layout1.addWidget(labelPW,1,0)
layout1.addWidget(lineEditPW,1,1)
layout2 = QHBoxLayout()
layout2.addStretch()
layout2.addWidget(buttonOk)
mainLayout = QVBoxLayout()
mainLayout.addLayout(layout1)
mainLayout.addLayout(layout2)
logon.setLayout(mainLayout)
logon.setWindowTitle('Log on')
logon.setWindowIcon(QIcon(":/images/checked.png")) #
buttonOk.clicked.connect(app.quit)
logon.show()
app.exec_()