PyQt5的基本配置与测试
一、安装
PyCharm
Python 3.9.6路径:D:\software\python\python.exe
项目路径:D:\pyQt5
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyqt5-tools
二、配置
2.1 配置 QtDisigner
QtDisigner用于搭建界面。
在PyCharm中依次单击 File – Settings – Tools – External Tools,点击 + Create Tool,配置如下:
Name:QtDisigner
Program:D:\pyQt5\venv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Working directory:$FileDir$
2.2 配置PyUIC
PyUIC用于将Qt Designer生成的.ui文件换成.py文件。同上,配置如下:
Name: PyUIC
Program:D:\software\python\python.exe #当前python的路径
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$
2.3 配置PyRCC
PyRCC用于将编写的.qrc资源文件换成.py文件。同上,配置如下:
Name:PyRCC
Program:D:\pyQt5\venv\Scripts\pyrcc5.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory:$FileDir$
三、测试程序
3.1 新建UI
(1)双击 D:\pyQt5\venv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe,选择Widget,创建。保存到 D:\pyQt5\HanziPinyin.ui
(2)测试程序主要实现将汉字转为拼音,控件包括2个QLabel、1个QLineEdit(lineEditHanzi,输入汉字)、1个QTextEdit(textEditPinyin,显示转换结果)和2个QPushButton(pushButtonClear,清除输入和输出;pushButtonConvert,转换),UI如下
3.2 加载UI的两种方式
加载UI有两种方式:uic.loadUi()和pyuic5,详见参考[2]。
分享给有需要的人,代码质量勿喷
3.3 uic.loadUi()方式直接加载.ui文件
新建 test1.py
import sys
from PyQt5 import uic
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication
from xpinyin import Pinyin
# 函数:汉字转换为拼音
def ConvertToPinyin(self):
hanzi = win.lineEditHanzi.text()
p = Pinyin() # 实例拼音转换对象
pinyin1 = p.get_pinyin(hanzi, tone_marks='marks')# 进行拼音转换
pinyin2 = p.get_pinyin(hanzi, tone_marks='numbers')
pinyin = pinyin1 +'\n'+ pinyin2
win.textEditPinyin.setText(pinyin)
# 函数:清除
def ClearHanzi(self):
win.lineEditHanzi.clear()
win.textEditPinyin.clear()
if __name__ =='__main__':
QApplication.setStyle("fusion") # UI风格
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) # 适用高分屏
app = QApplication(sys.argv)
# uic.loadUi()
win = uic.loadUi('HanziPinyin.ui')
# 信号与槽函数
win.pushButtonConvert.clicked.connect(ConvertToPinyin)
win.pushButtonClear.clicked.connect(ClearHanzi)
# 显示与退出
win.show()
app.exec()
3.4 pyuic5方式需要将.ui文件转为.py文件
(1)在Terminal中输入:pyuic5 HanziPinyin.ui -o HanziPinyin.py 将
HanziPinyin.ui文件转为对应的HanziPinyin.py文件。HanziPinyin.py包含了HanziPinyin.ui的基本信息。
(2)新建 test2.py
相比于参考[1],将信号槽函数直接写在 test2.py,这样不需要修改 由.ui转换得到的.py文件
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication,QWidget
from xpinyin import Pinyin
import HanziPinyin
class LaunchDialog(QWidget):
# 槽函数:汉字转换为拼音
def ConvertToPinyin(self):
hanzi = self.ui.lineEditHanzi.text()
p = Pinyin() # 实例拼音转换对象
pinyin1 = p.get_pinyin(hanzi, tone_marks='marks') # 进行拼音转换
pinyin2 = p.get_pinyin(hanzi, tone_marks='numbers')
pinyin = pinyin1 + '\n' + pinyin2
self.ui.textEditPinyin.setText(pinyin)
# 槽函数:清除
def ClearHanzi(self):
self.ui.lineEditHanzi.clear()
self.ui.textEditPinyin.clear()
def __init__(self, parent =None):
super(QWidget,self).__init__(parent)
self.ui = HanziPinyin.Ui_Form() # import HanziPinyin
self.ui.setupUi(self)
#信号 槽函数
self.ui.pushButtonConvert.clicked.connect(self.ConvertToPinyin)
self.ui.pushButtonClear.clicked.connect(self.ClearHanzi)
if __name__ =='__main__':
QApplication.setStyle("fusion") # UI风格
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) # 适用高分屏
app = QApplication(sys.argv)
# 启动
dlg = LaunchDialog()
# 显示与退出
dlg.show()
sys.exit(app.exec_())
四、结果
参考
[1] 干货 | 一文详解Python图形界面框架:PyQt5
[2] pyqt 加载ui的两种方法pyuic5与uic.loadUi(动态加载ui)的优缺点