PyQt5制作客户端图形化界面
最近,想要将自己之前写的小脚本做成图形化界面的客户端软件,因此对pyqt进行了学习。
PS:本软件已发布release,可在GitHub上进行下载,如果觉得还不错,希望能够在GitHub上来一颗star啊
环境
- Windows 10
- Python 3.7
- pyqt5
环境搭建
直接在官网下载Python3,无脑双击安装即可
然后在cmd窗口输入命令安装pyqt库:
pip install PyQt5
为了图形化的使用,安装pyqt-tools:
pip install PyQt5-tools
装好之后,找到自己Python安装的路径下的\Lib\site-packages\pyqt5_tools\Qt\bin
文件夹,本文中为D:\Software\Python_3_7\Lib\site-packages\pyqt5_tools\Qt\bin
,找到designer.exe
:
双击该程序,发现报错:
报错
在网上找了找,解决方案是将pyqt5_tools\Qt\plugins
文件夹内的所有文件进行复制,粘贴到pyqt5_tools\Qt\bin\plugins
目录下:
然后再次双击启动,可以看到软件启动成功:
designer启动成功
designer使用
在初始界面弹窗处点击create
即可创建项目:
左侧有许多小控件,直接托拉拽即可完成界面设计:
托拉拽界面设计
选中每个控件,在右侧黄色区域,可以更改其具体属性,例如颜色、大小、位置等
最后,crtl+S
即可保存,记住保存的位置,在该位置打开cmd窗口,运行命令将其转换为Python脚本:
pyuic5 -o review_generator.py review_generator.ui
其中,后面两个参数分别是转换之后的py文件名和刚刚保存的ui文件名,转换成功后会在同目录下生成py文件:
转换成功
软件运行
在同级目录下新建一个Python文件,写入以下代码,即可运行软件:
import sys
from PyQt5 import QtWidgets
from review_generator import Ui_ReviewGenerator
class mywindow(QtWidgets.QWidget, Ui_ReviewGenerator):
def __init__ (self):
super(mywindow, self).__init__()
self.setupUi(self)
if __name__=="__main__":
app=QtWidgets.QApplication(sys.argv)
ui = mywindow()
ui.show()
sys.exit(app.exec_())
运行软件
但每个按钮目前都处于不可点击状态,因此还需要为按钮编写功能
界面功能代码编写
通过对生成的界面代码进行查看,可以看到我们拖拉拽生成的每个按钮的名字:
def retranslateUi(self, ReviewGenerator):
_translate = QtCore.QCoreApplication.translate
ReviewGenerator.setWindowTitle(_translate("ReviewGenerator", "文献综述一键生成器 - By: Dubito"))
self.toolButton.setText(_translate("ReviewGenerator", "选择文件夹"))
self.label.setText(_translate("ReviewGenerator", "PDF论文位置:"))
self.label_2.setText(_translate("ReviewGenerator", "生成综述位置:"))
self.toolButton_2.setText(_translate("ReviewGenerator", "选择文件夹"))
self.label_3.setText(_translate("ReviewGenerator", "APP Key:"))
self.label_4.setText(_translate("ReviewGenerator", "APP Secret:"))
self.label_5.setText(_translate("ReviewGenerator", "综述文件名:"))
self.toolButton_5.setText(_translate("ReviewGenerator", "查看源码"))
self.toolButton_3.setText(_translate("ReviewGenerator", "开始生成"))
self.toolButton_4.setText(_translate("ReviewGenerator", "如何获取APP Key"))
然后在主功能函数代码文件中,为按钮注册点击事件:
class mywindow(QtWidgets.QWidget, Ui_ReviewGenerator):
def __init__ (self):
super(mywindow, self).__init__()
self.setupUi(self)
self.toolButton.clicked.connect(self.choose_folder)
self.toolButton_2.clicked.connect(self.choose_folder)
self.toolButton_3.clicked.connect(self.start_generate)
self.toolButton_4.clicked.connect(self.get_app_key)
self.toolButton_5.clicked.connect(self.get_source_code)
def choose_folder():
pass
def get_app_key():
pass
def get_source_code():
pass
def start_generate():
pass
在事件对应的函数内书写功能代码:
class mywindow(QtWidgets.QWidget, Ui_ReviewGenerator):
def __init__ (self):
super(mywindow, self).__init__()
self.setupUi(self)
self.toolButton.clicked.connect(self.choose_folder1)
self.toolButton_2.clicked.connect(self.choose_folder2)
self.toolButton_3.clicked.connect(self.start_generate)
self.toolButton_4.clicked.connect(self.get_app_key)
self.toolButton_5.clicked.connect(self.get_source_code)
def choose_folder1(self):
#选取文件夹
foldername = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/")
print(foldername)
self.lineEdit.setText(foldername)
def choose_folder2(self):
#选取文件夹
foldername = QFileDialog.getExistingDirectory(self, "选取文件夹", "C:/")
print(foldername)
self.lineEdit_2.setText(foldername)
def get_app_key(self):
url = "https://ai.youdao.com/doc.s#guide"
webbrowser.open_new_tab(url)
def get_source_code(self):
url = "https://github.com/you8023/Auto-Review-Generator"
webbrowser.open_new_tab(url)
def start_generate(self):
folder = self.lineEdit.text() # 需要读取pdf的文件夹的路径,注意为绝对路径,如:E:/论文
save_folder = self.lineEdit_2.text() # 保存结果的路径
write_txt_file = self.lineEdit_5.text() # 保存结果的文件,为txt文件
appKey = self.lineEdit_3.text() # 应用id
appSecret = self.lineEdit_4.text() # 应用密钥
if not (folder and save_folder and write_txt_file and appKey and appSecret):
self.textBrowser.append("请检查上面的参数是否填写完整!")
self.textBrowser.moveCursor(self.textBrowser.textCursor().End) #文本框显示到底部
return
#程序处理代码,因内容太多,这里就不展示了,可以去GitHub上看看源码
其中的start_generate函数内容为之前博客写的一个小工具,这里完整源码可以查看GItHub
软件打包
首先安装pyinstaller:
pip install PyInstaller
然后使用命令进行打包:
pyinstaller -F -w -i C:\Users\Dubito\Desktop\logo.ico review_generator_client.py
打包完成后就可以在同级目录的dist文件夹内看到啦:
打包完成
双击打开打包好的软件即可运行:
软件运行
本软件已发布release,可在GitHub上进行下载,如果觉得还不错,希望能够在GitHub上来一颗star啊