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

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

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

 

연재 1편

 

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

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

pythoncodinguniversity.tistory.com

 

연재 2편

 

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

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

pythoncodinguniversity.tistory.com

 

 

1강 완성 코드

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

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

    def init_ui(self):
        self.setWindowTitle("블로그 글 요약 프로그램")
        self.setGeometry(200, 200, 450, 600)
        
        # 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("텍스트 복사하기")
        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()