Skip to content

Commit 43d9962

Browse files
author
Tich
committed
Google Translate 1.1
1 parent 54e54cf commit 43d9962

File tree

3 files changed

+126
-11
lines changed

3 files changed

+126
-11
lines changed

google-translate/main.py

Lines changed: 72 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,91 @@
66
# @Version : Python3.5
77

88
from PyQt5 import QtWidgets
9-
from PyQt5 import QtCore
9+
from PyQt5 import QtCore, QtGui
1010
from PyQt5.QtWidgets import QWidget, QApplication
1111
from mwin import Ui_MWin
1212
import sys
1313

14-
class MWin(Ui_MWin):
15-
def __init__(self, parent=None):
16-
super(MWin, self).__init__()
14+
class Dialog(QWidget):
15+
"""对QWidget类重写,实现一些功能"""
16+
def __init__(self):
17+
super().__init__()
18+
19+
# 检测键盘回车按键
20+
def keyPressEvent(self, event):
21+
print("按下:" + str(event.key()))
22+
# 举例
23+
if(event.key() == QtCore.Qt.Key_Escape):
24+
print('测试:ESC')
25+
if(event.key() == QtCore.Qt.Key_A):
26+
print('测试:A')
27+
if(event.key() == QtCore.Qt.Key_1):
28+
print('测试:1')
29+
if(event.key() == QtCore.Qt.Key_Enter):
30+
print('测试:Enter')
31+
if(event.key() == QtCore.Qt.Key_Space):
32+
print('测试:Space')
33+
if (event.key() == QtCore.Qt.Key_H) and QApplication.keyboardModifiers() == QtCore.Qt.ControlModifier:
34+
# self.box = QtWidgets.QMessageBox(QtWidgets.QMessageBox.about, "谷歌翻译App", "用户名和密码不匹配!")
35+
# qyes=self.box.addButton("确定", QtWidgets.QMessageBox.YesRole)
36+
# # qno=self.box.addButton("取消", QtWidgets.QMessageBox.NoRole)
37+
# self.box.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
38+
# self.box.show()
39+
self.reply = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning, '谷歌翻译App v1.1',
40+
"1、输入翻译。快捷键 Ctrl+Enter 或点击按钮 \
41+
2、论文模式。需同时勾选实时翻译(监控剪贴板),会自动将回车和多个空格替换为一个空格,以及去掉一个特殊的符号 � \
42+
\n3、窗口置顶。即应用始终在桌面顶层。 " )
43+
self.reply.addButton(" 确 定 ", QtWidgets.QMessageBox.YesRole)
44+
self.reply.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
45+
self.reply.setIconPixmap(QtGui.QPixmap(":/images/icon64"))
46+
try:
47+
with open('style.qss') as f:
48+
style = f.read() # 读取样式表
49+
self.reply.setStyleSheet(style)
50+
except:
51+
print("open stylesheet error")
52+
self.reply.show()
53+
# reply = QtWidgets.QMessageBox.about(self,
54+
# '谷歌翻译App',
55+
# "1、输入翻译。快捷键 Ctrl+Enter 或点击按钮 \
56+
# 2、论文模式。需同时勾选实时翻译(监控剪贴板),会自动将回车和多个空格替换为一个空格,以及去掉一个特殊的符号 � \
57+
# \n3、窗口置顶。即应用始终在桌面顶层。 "
58+
# )
59+
60+
def mousePressEvent(self, event):
61+
if event.button() == QtCore.Qt.LeftButton:
62+
print("鼠标左键点击")
63+
elif event.button() == QtCore.Qt.RightButton:
64+
print("鼠标右键点击")
65+
elif event.button() == QtCore.Qt.MidButton:
66+
print("鼠标中键点击")
67+
68+
# def closeEvent(self, event):
69+
# """
70+
# 重写closeEvent方法,实现dialog窗体关闭时执行一些代码
71+
# :param event: close()触发的事件
72+
# :return: None
73+
# """
74+
# reply = QtWidgets.QMessageBox.question(self,
75+
# '谷歌翻译App',
76+
# "是否要退出程序?",
77+
# QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
78+
# QtWidgets.QMessageBox.No)
79+
# if reply == QtWidgets.QMessageBox.Yes:
80+
# event.accept()
81+
# else:
82+
# event.ignore()
1783

1884
if __name__ == '__main__':
1985
app = QApplication(sys.argv)
20-
base = QWidget() # 创建基本窗口
86+
base = Dialog() # 创建基本窗口
2187
try:
2288
with open('style.qss') as f:
2389
style = f.read() # 读取样式表
2490
base.setStyleSheet(style)
2591
except:
2692
print("open stylesheet error")
27-
w = MWin() # 创建用户界面类的实例
93+
w = Ui_MWin() # 创建用户界面类的实例
2894
w.setupUi(base) # 将用户界面加载到基本窗口
2995
# 监控剪贴板
3096
clipboard = QApplication.clipboard()

google-translate/mwin.py

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,12 @@
88

99
from PyQt5 import QtCore, QtGui, QtWidgets
1010
from PyQt5.QtWidgets import QApplication, QWidget
11-
from utils import trans_To_zh_CN
11+
from PyQt5.QtCore import QTimer, QThread, pyqtSignal
12+
# from utils import trans_To_zh_CN
1213
import re
14+
from googletrans import Translator
15+
16+
GTransData = ''
1317

1418
class Ui_MWin(QWidget):
1519
def __init__(self):
@@ -132,9 +136,10 @@ def setupUi(self, MWin):
132136

133137
def retranslateUi(self, MWin):
134138
_translate = QtCore.QCoreApplication.translate
135-
MWin.setWindowTitle(_translate("MWin", "谷歌翻译App"))
139+
MWin.setWindowTitle(_translate("MWin", "谷歌翻译App v1.1"))
136140
self.originLabel.setText(_translate("MWin", "原文:"))
137141
self.transLabel.setText(_translate("MWin", "翻译:"))
142+
self.originText.setPlaceholderText(_translate("MWin", "Ctrl+h 获取帮助"))
138143
self.realTimeTrans.setText(_translate("MWin", "实时翻译"))
139144
self.paperMode.setText(_translate("MWin", "论文模式"))
140145
self.alwaysFront.setText(_translate("MWin", "窗口置顶"))
@@ -159,7 +164,12 @@ def transTextToZhCN(self):
159164
text = self.originText.toPlainText()
160165
if text:
161166
try:
162-
self.transText.setPlainText(trans_To_zh_CN(text))
167+
# self.transText.setPlainText(trans_To_zh_CN(text))
168+
self.t=GTranslator(text)
169+
self.t.start()
170+
self.transText.setPlainText("")
171+
self.transText.setPlaceholderText("翻译中...")
172+
self.t.trigger.connect(self.translated)
163173
except:
164174
self.transText.setPlainText("翻译出错!")
165175

@@ -196,8 +206,47 @@ def onClipboradChanged(self):
196206
content = re.sub(r'', '', content)
197207
self.originText.setPlainText(content)
198208
try:
199-
data = trans_To_zh_CN(content)
200-
self.transText.setPlainText(data)
209+
# data = trans_To_zh_CN(content)
210+
# self.transText.setPlainText(data)
211+
self.t=GTranslator(content)
212+
self.t.start()
213+
self.transText.setPlainText("")
214+
self.transText.setPlaceholderText("翻译中...")
215+
self.t.trigger.connect(self.translated)
201216
except:
202217
self.transText.setPlainText("翻译出错!")
218+
219+
def translated(self):
220+
global GTransData
221+
if GTransData:
222+
self.transText.setPlainText(GTransData)
223+
else:
224+
self.transText.setPlainText("翻译出错!")
225+
GTransData = ""
226+
227+
class GTranslator(QThread):
228+
trigger = pyqtSignal()
229+
def __init__(self, content):
230+
super().__init__()
231+
self.content = content
232+
233+
def run(self):
234+
"""
235+
将origin翻译成中文,origin可以是一个字符串,也可以是一个列表
236+
"""
237+
Data = []
238+
global GTransData
239+
T = Translator(service_urls=['translate.google.cn'])
240+
# ts = T.translate(['The quick brown fox', 'jumps over', 'the lazy dog'], dest='zh-CN')
241+
# print('原文', origin)
242+
ts = T.translate(self.content, dest='zh-CN')
243+
# print('翻译后',ts.text)
244+
if isinstance(ts.text, list):
245+
for i in ts:
246+
Data.append(i.text)
247+
GTransData = Data
248+
else:
249+
GTransData = ts.text
250+
self.trigger.emit() # 翻译完毕后发出信号
251+
203252
import res_rc

images/Google-Translate.png

-645 Bytes
Loading

0 commit comments

Comments
 (0)