본문 바로가기
프로그램 개발 강의/문서 글 요약 프로그램 개발 강의

[2강/완성코드] 문서 요약 프로그램 개발강의 Python GUI 프로그램 개발

by 파이썬코딩대학 2024. 12. 11.

 

2강 완성 코드

import sys, os

from PySide6.QtWidgets import QWidget,QApplication

from PySide6.QtWidgets import (
    QApplication, QWidget, QVBoxLayout, QHBoxLayout, QSpacerItem, QSizePolicy,
    QPushButton, QLineEdit, QComboBox, QTextEdit, QLabel, QSlider
)
from PySide6.QtGui import QIcon
from PySide6.QtCore import Qt

# Styles
COPY_BUTTON_STYLE = """
    QPushButton {
        background-color: #4CAF50; color: white;
    }
    QPushButton:hover { background-color: #45a049; }
    QPushButton:pressed { background-color: #3e8e41; }
"""
SECONDARY_BUTTON_STYLE = """
    QPushButton {
        margin-top: 8px; color: #fff; background-color: #6c757d;
    }
    QPushButton:hover { background-color: #5c636a; }
    QPushButton:pressed { border: 4px solid #c0c4c8; }
"""
MAIN_STYLE = """
    QWidget { background-color: #F0F2F5; }
    QLabel { color: #333; font-size: 14px; }
    QTextEdit, QLineEdit, QComboBox {
        border: 1px solid #ccc; border-radius: 5px;
        padding: 8px; background-color: #fff; color: #333;
    }
    QPushButton {
        background-color: #007BFF; color: white;
        padding: 10px; border-radius: 5px;
    }
    QPushButton:hover { background-color: #0056b3; }
"""

class BlogSummarizer(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle("블로그 글 요약 프로그램")
        self.setGeometry(200, 200, 450, 600)
        self.setStyleSheet(MAIN_STYLE)
 
        # Layouts
        layout = QVBoxLayout()

        # URL Input
        layout.addWidget(QLabel("😃 블로그 주소를 입력해주세요. URL :"))
        self.url_input = QLineEdit("https://blog.naver.com/lread90/223169515095")
        layout.addWidget(self.url_input)

        # Summary Slider
        self.slider_label = QLabel("요약률 설정 (기본 50%)")
        self.summary_slider = QSlider(Qt.Horizontal)
        self.summary_slider.setRange(10, 100)
        self.summary_slider.setValue(50)
        self.summary_slider.setTickPosition(QSlider.TicksBelow)
        self.summary_slider.setTickInterval(10)
        self.summary_slider.valueChanged.connect(self.update_slider_label)
        layout.addWidget(self.slider_label)
        layout.addWidget(self.summary_slider)

        # Dropdown
        OPTIONS = ["요약문 원본만 표시", "출처 맨 상단 표시", "출처 맨 하단 표시"]
        layout.addWidget(QLabel("출처 표기 방식 선택하기"))
        self.dropdown = QComboBox()
        self.dropdown.addItems(OPTIONS)
        layout.addWidget(self.dropdown)

        # Buttons
        self.run_button = QPushButton("요약 시작하기")
        layout.addWidget(self.run_button)

        # Summary Text
        self.char_count_label = QLabel("원문 글자 수: 0 | 요약본 글자 수: 0")
        layout.addWidget(self.char_count_label)
        self.summary_text = QTextEdit(readOnly=True, placeholderText="요약 결과가 이곳에 나타납니다.")
        layout.addWidget(self.summary_text)

        # Copy Button
        copy_button = QPushButton("텍스트 복사하기")
        copy_button.setStyleSheet(COPY_BUTTON_STYLE)
        layout.addWidget(copy_button)

        # Logs
        self.log_text = QLineEdit(readOnly=True, placeholderText="작업 로그")
        layout.addWidget(self.log_text)

        self.setLayout(layout)

    def update_slider_label(self):
        value = self.summary_slider.value()
        self.slider_label.setText(f"요약률 설정: {value}%")
        self.log(f"요약률이 {value}%로 변경되었습니다.")


app = QApplication(sys.argv)
window = BlogSummarizer()
window.show()
app.exec()

 

 

 

1강 완성 코드

 

[pyside6 개발 강의] 1강 문서 요약 프로그램, 1강 코드

연재 1편 글 요약 프로그램 직접 만드는 방법 (python, pyside6 GUI 만드는법) 1편1. 개발 환경 설정이번 글에서는 이 프로그램의 화면 껍데기를 만들어보겠습니다1-1. 가상환경 활성화개발에 필요한

pythoncodinguniversity.tistory.com

 

 

글 요약 프로그램 개발해서 판매하는 이야기

 

 

글 요약 프로그램 직접 만드는 방법 (python, pyside6 GUI 만드는법) 1편

1. 개발 환경 설정이번 글에서는 이 프로그램의 화면 껍데기를 만들어보겠습니다1-1. 가상환경 활성화개발에 필요한 가상환경 설치 및 활성화를 해주시고# 1. 가상환경 설치python -m venv venv # 2.가

pythoncodinguniversity.tistory.com