Python 으로 구글 번역기 앱을 만들기 위해서 우선
googletrans
모듈을 설치해야 한다.
명령어 :pip install googletrans==3.1.0a0
UI 는 Qt Designer 를 이용하여 만들었다.
Qt Designer
로 UI 파일을 저장하면 xml
형태로 저장이 된다.<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>320</width>
<height>390</height>
</rect>
</property>
<property name="maximumSize">
<size>
<width>320</width>
<height>390</height>
</size>
</property>
<property name="windowTitle">
<string>QR Code Generator</string>
</property>
<widget class="QLabel" name="lblQrCode">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>300</width>
<height>300</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">background-color: white;
</string>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLineEdit" name="txtQrData">
<property name="geometry">
<rect>
<x>10</x>
<y>320</y>
<width>301</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="btnGenerate">
<property name="geometry">
<rect>
<x>200</x>
<y>350</y>
<width>111</width>
<height>41</height>
</rect>
</property>
<property name="font">
<font>
<family>D2Coding</family>
</font>
</property>
<property name="text">
<string>QR 코드 생성</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
QWidget
을 상속받는 qrApp
클래스를 만든다.qrApp
클래스에서 UI 와 기능을 구현하는 함수들이 들어간다.myTrans
라는 멤버필드를 선언하고 googletrans
모듈에 있는 Translator
클래스를 생성자로 초기화한다.Qt Designer
로 만든 UI 화면을 실행하는 initUI
함수를 실행한다.Qt Designer
로만든 UI 파일을 화면에 띄우는 initUi
함수를 설정한다.uic
모듈에서 loadUi()
함수를 호출하여 Qt Designer
로 만든 UI 파일을 불러온다.setWindowTitle()
함수는 윈도우 창의 제목을 설정하는 함수다.btnTrans
는 버튼위젯의 이름이고 해당 버튼을 clicked 했을 때 호출하는 함수를 connect() 함수로 연결시켜준다.returnPressed
는 엔터키를 눌렀을 때 버튼클릭했을 때와 같은 기능을 구현하게 해주는 함수이다.btnTransClicked()
는 버튼을 클릭했을 때 실행하는 함수이다.txtBaseText
이다. 입력된 텍스트를 text() 로 문자열로 변환 후, strip() 으로 좌,우 공백을 지워주고 text 변수에 저장한다.tranlate()
함수를 호출하여 text 를 넘겨주고 번역전 문자열의 언어는 자동으로 설정하고 번역되는 문자는 영어로 번역한다.txtResult
위젯의 번역전 문자열과 번역 후 문자열을 출력해준다.closeEvent()
함수는 윈도우 창을 종료할 때 종료할 것인지 경고창을 출력하는 함수이다.import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from googletrans import Translator
class qrApp(QWidget):
def __init__(self) -> None:
super().__init__()
self.initUI()
self.myTrans = Translator()
def initUI(self):
uic.loadUi("./day07/transApp.ui", self)
self.setWindowTitle("Google Translate App")
self.btnTrans.clicked.connect(self.btnTransClicked)
self.txtBaseText.returnPressed.connect(self.btnTransClicked)
self.show()
def btnTransClicked(self):
# QMessageBox.about(self, "번역", "번역시작...")
text = self.txtBaseText.text().strip()
if len(text) != 0:
result = self.myTrans.translate(text, src="auto", dest="en")
self.txbResult.append(f'{text} -> {result.text}')
pass
def closeEvent(self, QCloseEvent) -> None:
re = QMessageBox.question(
self, "종료", "종료 하시겠습니까?", QMessageBox.Cancel | QMessageBox.Yes
)
if re == QMessageBox.Yes:
QCloseEvent.accept()
else:
QCloseEvent.ignore()
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("./images/QrCodeIcon.png"))
instance = qrApp()
app.exec_()