본문 바로가기
PYTHON/PYTHON GUI

PyQt5를 통한 번역기 Gui 만들기[PYTHON개발]

by cellin 2024. 1. 23.

 

지난번에 기본적으로 설치해야하는 모듈과 코드 살펴보았는데요

 

이번에는 이 코드와 PyQt5를 활용해서 GUI개발 해보도록 하겠습니다.

 

 

 

 

 

모듈 코드 |

import sys
from PyQt5.QtWidgets import*
import googletrans
 

 

 

 

 

코드 |


class MyApp(QWidget):
    
    def __init__(self):
        super().__init__()
        self.lbl1 = QLabel('한국어:', self)
        self.lbl2 = QLabel('영어:', self)
        self.le = QLineEdit(self)
        self.te = QTextEdit(self)
        self.trans_btn = QPushButton('번역', self)
        self.translator = googletrans.Translator()
        self.initUI()
        
    
 

코드 설명 |

위젯 생성

self.lbl1 = QLabel('한국어:', self) : 두개의 라벨생성

self.le = QLineEdit(self) : 편집기 생성

self.te = QTextEdit(self) : 텍스트편집기 생성

self.trans_btn = QPushButton('번역', self) :푸쉬버튼 생성

self.translator = googletrans.Translator( ): Translator()는 구글 번역기를 구현한 파이썬 클래스

 

 

 

 

 

코드 |

def initUI(self):
        vbox = QVBoxLayout()
        vbox.addWidget(self.lbl1)
        vbox.addWidget(self.le)
        vbox.addWidget(self.lbl2)
        vbox.addWidget(self.te)
        vbox.addWidget(self.trans_btn)
        self.setLayout(vbox)
        
        self.trans_btn.clicked.connect(self.translate_kor)
        self.le.editingFinished.connect(self.translate_kor)
        self.setWindowTitle('Google Translator')
        self.setGeometry(200, 200, 400, 300)
        self.show()
 

 

코드설명 |

수직 박스 레이아웃을 이용하여 위젯들을 수직으로 배치

self.trans_btn.clicked.connect(self.translate_kor), self.le.editingFinished.connect(self.translate_kor): 번역 버튼 클릭하거나 줄편집기의 텍스트편집 완료 시, self.translate_kor 메서드 호출

 

 

 

 

 

코드 |

    def translate_kor(self):
        text_kor = self.le.text()
        text_en = self.translator.translate(text_kor).text
        self.te.setText(text_en)
 

코드설명 |

translate_kor(): 구글 번역기 API를 이용하여 번역하는 기능

 

 

 

 

 

 

코드 |

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())
 

 

 

 

 

결과 |

 
 
 

 

 

 

 

 

 

 

 

 

 

 

사진: UnsplashTrnava University

728x90
반응형