[python] PyQt를 활용한 게시판 애플리케이션 개발

이번 포스트에서는 Python 프로그래밍 언어와 PyQt 프레임워크를 사용하여 간단한 게시판 애플리케이션을 개발하는 방법을 알아보겠습니다.

1. PyQt 소개

PyQt는 Qt 프레임워크를 파이썬으로 사용할 수 있도록 하는 모듈입니다. Qt는 크로스 플랫폼 개발을 위한 강력한 프레임워크로, GUI 애플리케이션을 쉽게 개발할 수 있도록 도와줍니다.

2. 개발 환경 설정

게시판 애플리케이션을 개발하기 위해 먼저 PyQt를 설치해야 합니다. 아래의 명령어를 사용하여 PyQt를 설치해주세요.

pip install pyqt5

또한, 게시판 데이터를 저장하기 위해 SQLite 데이터베이스를 사용할 예정입니다. sqlite3 모듈은 Python 표준 라이브러리에 포함되어 있기 때문에 따로 설치할 필요는 없습니다.

3. 게시판 애플리케이션 구현

애플리케이션의 기본적인 구조는 다음과 같습니다:

import sys
from PyQt5.QtWidgets import QApplication, QWidget

class BoardApp(QWidget):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.setGeometry(100, 100, 800, 600)
        self.setWindowTitle("게시판 애플리케이션")
        self.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    board_app = BoardApp()
    sys.exit(app.exec_())

위 코드에서 BoardApp 클래스는 QWidget 클래스를 상속받아 게시판 앱의 기능을 구현합니다. init_ui 메소드에서는 앱의 UI 설정을 할 수 있습니다. 현재는 앱의 크기와 타이틀만 설정하고 있습니다.

4. 게시글 보기 기능 추가

이제 게시판 앱에 게시글을 보는 기능을 추가해보겠습니다. init_ui 메소드를 다음과 같이 수정해주세요.

def init_ui(self):
    self.setGeometry(100, 100, 800, 600)
    self.setWindowTitle("게시판 애플리케이션")

    # 게시글 텍스트 출력
    self.board_text = QLabel("게시글 내용이 여기에 표시됩니다.", self)
    self.board_text.setGeometry(50, 50, 700, 500)
    self.board_text.setAlignment(Qt.AlignTop)
    
    self.show()

위 코드에서는 QLabel 위젯을 사용하여 게시글 내용을 출력합니다. setGeometry 메소드를 사용하여 텍스트의 위치와 크기를 설정하고, setAlignment 메소드를 사용하여 텍스트를 위쪽 정렬로 설정했습니다.

5. 게시글 데이터 연동

이제 게시판 앱과 SQLite 데이터베이스를 연동하여 실제 데이터를 출력해보겠습니다. 아래 코드를 init_ui 메소드에 추가해주세요.

import sqlite3

def init_ui(self):
    self.setGeometry(100, 100, 800, 600)
    self.setWindowTitle("게시판 애플리케이션")

    # 게시글 텍스트 출력
    self.board_text = QLabel("게시글 내용이 여기에 표시됩니다.", self)
    self.board_text.setGeometry(50, 50, 700, 500)
    self.board_text.setAlignment(Qt.AlignTop)
    
    # SQLite 데이터베이스 연결
    conn = sqlite3.connect("board.db")
    cursor = conn.cursor()

    # 게시글 데이터 조회
    cursor.execute("SELECT content FROM posts")
    result = cursor.fetchone()

    if result:
        content = result[0]
        self.board_text.setText(content)

    # 연결 종료
    conn.close()
    
    self.show()

위 코드에서는 먼저 sqlite3 모듈을 사용하여 SQLite 데이터베이스에 연결합니다. cursor 객체를 사용하여 SQL 쿼리를 실행하고, fetchone 메소드를 통해 첫 번째 행의 결과를 가져옵니다. 가져온 결과를 QLabel 위젯의 텍스트로 설정합니다.

6. 마치며

위의 코드를 실행하면 PyQt를 활용한 간단한 게시판 애플리케이션이 구현됩니다. 이를 기반으로 게시글 등록, 수정, 삭제 등의 기능을 추가할 수 있습니다. PyQt에서 제공하는 다양한 위젯과 기능을 활용하여 자신만의 게시판 애플리케이션을 개발해보세요!