EasyTranslator 开发过程总结(一)

EasyTranslator 开发过程总结(一)

前言

学 Python 爬虫有一段时间了,为了检验学习成果,熟悉 Python 编程,想自己动手开发一个小软件。于是从最简单的翻译软件入手,通过爬虫,调用各个翻译接口,并将各个翻译结果呈现在一起,用户可以加以对比整合,提高工作效率。于是便开始了我的小项目。
这里写图片描述
运行效果如上图所示,该软件支持中英互译,自动检测语言,聚合 Google、百度、必应、金山、有道、cnki 翻译助手六个翻译接口。

虽然,这个项目听起来挺简单的,但是我在开发的过程中用到了不少编程知识,遇到了不少问题。这篇文章将总结一下我的收获,可能有些东西理解的比较肤浅,只知其然不知其所以然,还需要进一步理解。

这个项目用到的知识有:python 基础语法、requests 包用法、BeautifulSoup 用法、Python 正则表达式用法、PyQt5 配置和使用、PyInstaller 打包应用程序,Qt 多线程与消息循环的理解、qss语法、异常处理等。

文章的介绍顺序将按照我的开发的步骤进行。本文主要介绍开发环境的准备,以及如何在 pycharm 中使用 qt designer 进行界面设计。

1 开发环境准备

1.1 Python 版本和相关的包

Python 版本:Python 3.6.4 :: Anaconda, Inc

requests (2.18.4)

PyQt5 (5.11.2)

PyQt5-tools (5.9.0.1.2)

beautifulsoup4 (4.6.0)

PyInstaller (3.3.1)

Pywin32 (222)

1.2 IDE

IDE : PyCharm 2018.1.4 x64

1.3 PyCharm 外部工具配置

配置 PyCharm 外部工具主要用于使用 PyQt5-tools 中的 designer.exe 进行界面设计,并将界面文件转换成 Python 代码。主要添加配置两个工具。

File -> Settings -> Tools -> External Tools -> 点击 “+” 号创建,

工具1配置详情

Name: QtDesigner(随便)

Program: D:\ProgramData\Anaconda3\Lib\site-packages\pyqt5-tools\designer.exe(根据自己的 pyqt5-tools 安装路径)

Working directory: $FileDir$

这里写图片描述

工具2配置详情

Name: PyUIC

Program: D:\ProgramData\Anaconda3\python.exe

Argument: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

Working directory: $FileDir$

这里写图片描述

工具配置完成后可以在 pycharm 菜单栏 Tools -> External Tools 找到,或者在左侧工程目录中选中 .ui 文件(界面文件)右键 -> External Tools 找到。QtDesigner 用于在 pycharm 中唤起 qt designer,PyUIC 用于将 .ui 文件转换成 Python代码(与 qt creator类似)。

2 测试 pyqt5 以及外部工具的使用

在 pycharm 中新建 Python 工程,Tools -> External Tools -> QtDesigner,打开 qt designer,简单拖几个控件后保存,会发现在当前工程目录下多了一个 .ui 文件,在 pycharm 的工程目录中右键该文件 -> External Tools ->PyUIC,会生成对应的 .py 文件。

这里写图片描述

自动生成的 Ui_window.py 的代码如下:

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(608, 477)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 210, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(360, 210, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(240, 90, 113, 20))
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 608, 17))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_2.setText(_translate("MainWindow", "PushButton"))

新建 Python 文件 demo.py,添加如下代码:

# -*- coding: utf-8 -*-

from Ui_window import Ui_MainWindow
from PyQt5.QtWidgets import QMainWindow, QApplication
import sys


class Window(QMainWindow):

    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.fun)

    def fun(self):
        self.ui.lineEdit.setText('button')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

测试效果:

这里写图片描述

说明 PyQt5 配置和相关工具配置成功。

猜你喜欢

转载自blog.csdn.net/healingwounds/article/details/82526002