[python] PyQt를 활용한 실시간 채팅 애플리케이션 개발

소개

PyQt는 파이썬으로 GUI 프로그램을 개발하기 위한 강력한 도구입니다. 이번 포스트에서는 PyQt를 사용하여 실시간 채팅 애플리케이션을 개발하는 방법을 알아보겠습니다.

요구사항

설치

먼저, PyQt를 설치해야 합니다. pip를 사용하여 간단하게 설치할 수 있습니다.

pip install pyqt5

애플리케이션 개발

  1. PyQt의 기본적인 구조를 갖춘 메인 윈도우를 생성합니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("실시간 채팅 애플리케이션")
        self.setGeometry(100, 100, 400, 300)
  1. 채팅 메시지를 표시할 QTextEdit 위젯을 추가합니다.
from PyQt5.QtWidgets import QTextEdit

class MainWindow(QMainWindow):
    def __init__(self):
        # ... 이전 코드 생략

        self.text_edit = QTextEdit(self)
        self.text_edit.setGeometry(10, 10, 380, 200)
  1. 사용자가 채팅 메시지를 입력할 수 있는 QLineEdit 위젯과 전송 버튼을 추가합니다.
from PyQt5.QtWidgets import QLineEdit, QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        # ... 이전 코드 생략
        
        self.input_box = QLineEdit(self)
        self.input_box.setGeometry(10, 220, 280, 30)
        
        self.send_button = QPushButton("전송", self)
        self.send_button.setGeometry(300, 220, 80, 30)
  1. 메시지 전송 버튼에 대한 클릭 이벤트를 처리하고, 입력된 메시지를 텍스트 에디터에 추가하는 기능을 구현합니다.
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QTextEdit

class MainWindow(QMainWindow):
    def __init__(self):
        # ... 이전 코드 생략
        
        self.send_button.clicked.connect(self.send_message)
    
    def send_message(self):
        message = self.input_box.text()
        if message:
            self.text_edit.append(message)
            self.input_box.clear()
  1. 메인 윈도우를 보여줍니다.
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

실행

모든 코드를 작성했다면, 터미널에서 애플리케이션을 실행해보세요.

python chat_app.py

실행하면 실시간 채팅 애플리케이션이 화면에 나타날 것입니다. 입력 상자에 메시지를 입력하고 전송 버튼을 누르면 메시지가 텍스트 에디터에 추가됩니다.

마무리

이번 포스트에서는 PyQt를 사용하여 실시간 채팅 애플리케이션을 개발하는 방법을 알아보았습니다. PyQt는 다양한 GUI 기능을 제공하며, 파이썬으로 GUI 애플리케이션을 개발하기에 매우 유용한 도구입니다. 계속해서 PyQt를 공부하고 다양한 프로젝트에 적용해 보세요.