본문 바로가기
파이썬 프로그래밍/PyQt5 공부하기

1. PyQt5 기초(윈도우, 위젯 이벤트)

by Majestyblue 2024. 11. 8.

1. PyQt5 시작하기

https://wikidocs.net/119616

 

01) PyQt 시작하기

[TOC] ## PyQt 시작하기 PyQt5를 사용하여 간단한 GUI 프로그램을 만들어봅시다. 다음과 같이 코딩한 후 실행해줍니다. ``` import sys from…

wikidocs.net

 

import sys 
from PyQt5.QtWidgets import *

# 현재 소스코드 파일에 대한 경로(sys.argv)를 QApplication으로 전달하여
# QApplication 객체 생성
app = QApplication(sys.argv)

# 윈도우에 대한 객체 생성
win = QWidget()

# 객체가 화면에 보여지도록 show 메서드 호출
win.show()

# 사용자로부터 입력되는 이벤트를 처리하기 위한 이벤트 루프
# 닫기 버튼을 누를 때 까지 종료하지 않고 계속 실행됨.
app.exec_()

 

 

 

2.  윈도우 만들고 꾸미기

https://wikidocs.net/70845

 

02) 윈도우 만들기

[TOC] ## 윈도우 만들기 PyQt에서 모든 위젯의 가장 기초가 되는 위젯을 윈도우라고 부릅니다. 집으로 치자면 주춧돌의 역할을 합니다. 마이크로소프트의 윈도라는 영어 …

wikidocs.net

https://wikidocs.net/70844

 

03) 윈도우 꾸미기

[TOC] ## 윈도우 타이틀 변경 윈도우의 타이틀을 변경해봅시다. ![](https://wikidocs.net/images/page/70844/01.png) 윈도우가 …

wikidocs.net

 

아이콘은 여기서 가져옴

Physics - Free education icons (flaticon.com)

import sys 
from PyQt5.QtWidgets import *
from PyQt5.QtGui import * # QIcon를 사용하기 위해 임포트


# 부모 클래스인 QMainWindow 를 상속받아 사용
# 부모 클래스의 인스턴스 속성을 사용하기 위해 super() 함수 사용
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        #QMainWindow 클래스에서 메소드 상속
        self.setWindowTitle("physics Lab") # 제목 변경
        self.setGeometry(300, 300, 400, 400) # 크기 변경
        self.setWindowIcon(QIcon("physics.png")) # 아이콘 생성
        
        #버튼 생성, 현재 위도우를 바인딩하는 변수는 self
        btn = QPushButton(text = "동영상 열기", parent = self)
        btn.move(10, 10)

app = QApplication(sys.argv)

# MyWindow()에 대한 객체 생성
win = MyWindow()

win.show()
app.exec_()

 

 

 

3. 위젯 이벤트 처리

https://wikidocs.net/70847

 

05) 위젯 이벤트 처리

[TOC] ## 이벤트 처리하기 버튼 위젯은 사용자에 의해 클릭될 수 있습니다. 반대로 사용자는 버튼을 보면 보통 클릭합니다. 앞서 매수 버튼을 만들어봤는데 사용자는 매수를 …

wikidocs.net

import sys 
from PyQt5.QtWidgets import *
from PyQt5.QtGui import * 

def open_movie():
    print("동영상 불러오기를 성공하였습니다.")

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.setWindowTitle("physics Lab")
        self.setGeometry(300, 300, 400, 400) 
        self.setWindowIcon(QIcon("physics.png"))
        
        #버튼을 클릭하면 open_movie를 실행(콜백 함수)
        #콜백함수는 이벤트에 의해 호출되는 함수를 의미한다.
        btn = QPushButton(text = "동영상 열기", parent = self)
        btn.move(10, 10)
        btn.clicked.connect(open_movie)
        
        #이 버튼을 클릭하면 프로그램을 종료한다.
        btn2 = QPushButton(text = "프로그램 종료", parent = self)
        btn2.move(290, 10)
        btn2.clicked.connect(self.close)

    def open_movie():
        print("동영상 불러오기를 성공하였습니다.")

app = QApplication(sys.argv)


win = MyWindow()

win.show()
app.exec_()