결과물
코드 원문
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("untitled.ui")[0]
class MyWindow(QDialog, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.brightwing.clicked.connect(self.btn_clicked)
def btn_clicked(self):
self.textEdit.append("Hello World!")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
코드 해설
import sys #sys 모듈은 파이썬 인터프리터가 제공하는 시스템 특화된 함수나 변수를 제공. 밑에서 쓰이지만, sys.argv는 이를 활용한 것.
from PyQt5.QtWidgets import * #PyQt 라이브러리의 QyWidgets에 속한 모든 모듈을 불러온다.
from PyQt5 import uic #PyQt 라이브러리의 uic모듈을 가져온다. uic모듈은 UI Type을 설정하는 듯.
#uic모듈의 loadUiType은, 커스텀 ui를 지정할 수 있게 해 준다. 뒤의 리스트 0번은 뭘 의미하는 걸까.
#경로 지정을 따로 안했으므로, 스크립트와 같은 폴더 내에 ui 파일이 위치해야 제대로 동작함.
form_class = uic.loadUiType("untitled.ui")[0]
class MyWindow(QDialog, form_class): #Class에 괄호가 있는 것은, 상속받는다는 의미
def __init__(self): #__init__은 초기화를 담당하는 메서드로 고정됨. 클래스 객체가 만들어질 때 자동 호출되어 그 객체가 갖게 될 여러 성질을 정해줌.
#이 두개는 __init__ 시 세트로 딸려다니는 것 같다.
# Super는 자식 클래스에서 부모 클래스의 내용을 사용할 때 붙여줌.
# setupUi는 form_class에 정의된 메서드로, QtDesigner에서 만든 클래스들을 초기화
super().__init__()
self.setupUi(self)
# brightwing이라는 ui 이름을 가진 항목이 클릭되면, 동일한 클래스 내 btn_clicked 메서드를 실행시킨다.
self.brightwing.clicked.connect(self.btn_clicked)
def btn_clicked(self):
#textEdit이라는 ui 항목은 QTextEdit 모듈을 활용해서 글자를 넣고 빼고 해 줄 수 있다.
#setText는 RichText 형식의 글을 입력해주지만, 딱 한 줄 밖에 입력이 안 되어서 그냥 여러 줄 입력 가능한 append를 사용함.
self.textEdit.append("Hello World!")
if __name__ == "__main__":
# QApplication은 기본적으로 매개변수를 컴퓨터에 실행하도록 만든다.
# sys.argv는 해당 파일의 절대경로를 보여준다. print(sys.argv)로 확인할 수 있음.
app = QApplication(sys.argv)
myWindow = MyWindow() #MyWindow 객체 생성
myWindow.show() #myWindow를 보여준다.
app.exec_() #계속 실행을 유지하게 해 줌. 이 줄이 없으면 프로그램이 켜진 상태를 유지 못한다.
미해결
[Python] csv를 1개의 엑셀 파일로 합치기 (0) | 2022.06.06 |
---|---|
[Python] 오늘자 인벤 기사 추출하는 프로그램 with PyQt (0) | 2020.07.26 |
[VBA] Json 형식의 문자열을 데이터테이블화 (0) | 2019.12.20 |
[VBA] 엑셀 파일 열지 않고 데이터 가져오기 (0) | 2019.12.06 |
댓글 영역