자동화에 관련된 소스를 가끔 개발하면서 스스로 부족하다고 느꼈던 부분이 바로 GUI 의 부재였습니다. 이번에 프로젝트에 참여하면서 GUI 관련된 개발이 필요했는데, 개발언어도 파이썬이었던터라 이 기회에 간단한 python gui 구성법을 익히고자 PyQt 공부를 해보게되었습니다. 이 글에서는 단순히 기본 창에서 이벤트가 주어지면 다른 창을 띄우는 기능을 구현해보고자합니다.
Pyqt가 설치된 환경이라면, 가상환경 cmd 에 designer 를 입력하는 것으로 qt designer를 실행할 수 있습니다. qt designer를 이용하면 파이썬 소스를 일일히 써가며 ui를 구성해야하는 번거로움에서 벗어날 수 있습니다.
두 개의 ui를 구성하고, 각각 저장합니다.
먼저 하단의 코드는 초기에 보일 start.py 입니다.
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
from main import mainWindow
form_class = uic.loadUiType("login.ui")[0]
class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self)
def showmain(self) :
self.w = mainWindow()
self.w.show()
if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
초기 소스 형태는 https://wikidocs.net/35482 를 참고하였습니다.
login 버튼을 클릭하면 showmain 함수가 실행되도록 ui에서 설정해주었으니, showmain 함수도 만들어줍니다.
다음은 main.py 입니다. 상단 start.py 에서 import 했던 mainWindow 클래스가 존재합니다.
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("mainwindow.ui")[0]
class mainWindow(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self)
if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = mainWindow()
myWindow.show()
app.exec_()
python start.py
이를 이용해 특정 환경에서 로그인 성공, 실패를 판단하고 로그인 이후 메인화면으로 이동하도록 구현이 가능할 것입니다.
showmain 함수를 구성하는 부분에서 self.w = mainWindow() 로 생성하지 않고 w = mainWindow() 로 생성하자 login 버튼을 눌렀을 때 mainWindow 가 떴다가 바로 종료되는 문제가 있었습니다. self 에 익숙해지는게 필요할 것 같습니다.
'Python' 카테고리의 다른 글
암호화폐 거래소 공시봇 만들기 - (4) 무지성 공시봇 후기 (0) | 2021.03.31 |
---|---|
암호화폐 거래소 공시봇 만들기 - (3) 업비트 API를 이용한 거래 (0) | 2021.03.31 |
암호화폐 거래소 공시봇 만들기 - (2) 코드 작성 (2) | 2021.03.25 |
암호화폐 거래소 공시봇 만들기 - (1) 구조 파악 (0) | 2021.03.23 |
fastText를 이용한 상품 카테고리 분류 (0) | 2021.03.17 |