一、pyqt5基本格式
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication #从QtWidgets导入类QMainWindow,QApplication
from PyQt5.QtGui import QIcon
from ui import Ui_MainWindow # ui为QtDesigner布局生成的py文件,实际命名可能是其它,Ui_MainWindow为生成的前端python文件ui.py中定义的类
class MyApp(QMainWindow,Ui_MainWindow): #MyApp为自定义类
def __init__(self):
super(MyApp,self).__init__() #super()函数调用父类QMainWindow,Ui_MainWindow
self.setupUi(self) #构造UI
## ==============自定义功能函数============================
## ==============事件处理函数===========================
## ==========由 connectSlotsByName()自动关联的槽函数========
## =============自定义槽函数==============================
## ============窗体测试程序 ===============================
if __name__ == "__main__":
app = QApplication(sys.argv) #创建pyqt5的GUI程序
window = MyApp() #实例化一个窗口对象, MyApp为上面定义的类
window.show() #展示窗口内容
sys.exit(app.exec_()) #进入程序主循环,窗口不会关闭,并且exit函数确保主循环安全退出
二、pyqt5编程demo
2.1、QtDesigner设计UI,然后使用PyUIC把Qt Designer生成的.ui文件换成.py文件
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(360, 210, 75, 23))
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(360, 330, 75, 23))
self.pushButton_2.setObjectName("pushButton_2")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(540, 140, 91, 20))
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
self.label_2.setObjectName("label_2")
self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
self.textBrowser.setGeometry(QtCore.QRect(470, 170, 231, 221))
self.textBrowser.setObjectName("textBrowser")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(100, 170, 221, 221))
self.textEdit.setObjectName("textEdit")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(360, 270, 75, 23))
self.pushButton_3.setObjectName("pushButton_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(250, 490, 281, 51))
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
self.label_4.setObjectName("label_4")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(190, 140, 61, 16))
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.pushButton_2.clicked.connect(self.textEdit.clear)
self.pushButton_2.clicked.connect(self.textBrowser.clear)
self.pushButton_3.clicked.connect(self.textBrowser.selectAll)
self.pushButton_3.clicked.connect(self.textBrowser.copy)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "转换"))
self.pushButton_2.setText(_translate("MainWindow", "重置"))
self.label_2.setText(_translate("MainWindow", "目标数据"))
self.pushButton_3.setText(_translate("MainWindow", "复制"))
self.label_4.setText(_translate("MainWindow", "@2022Test"))
self.label_3.setText(_translate("MainWindow", "源数据"))
2.2、新建python文件,处理后台业务逻辑
#coding=utf-8
from PyQt5.QtWidgets import QApplication, QMainWindow #用于下面class translation(QMainWindow, Ui_MainWindow)
from PyQt5.QtGui import QIcon
import sys
from dataConversion import Ui_MainWindow #用于下面class translation(QMainWindow, Ui_MainWindow)
import os
class translation(QMainWindow,Ui_MainWindow):
def __init__(self):
super(translation,self).__init__()
self.setupUi(self)
curdirpath = os.path.dirname(__file__)
self.setWindowTitle('SQL查询条件格式转换器') #设置窗口标题
self.setWindowIcon(QIcon(curdirpath + '/m7.ico')) #设置窗口图标
self.pushButton.clicked.connect(self.display) #信号的发送者self.pushButton发送信号clicked给信号的接收者self,触发信号的接收者执行槽函数display
def display(self):
# content = self.lineEdit.text() #单行文本获取输入内容
content = self.textEdit.toPlainText() #多行文本获取输入内容
content = content.replace('\n', '\',\'')
content = '\'' + content + '\''
self.textBrowser.setText(content)
if __name__ == '__main__':
app = QApplication(sys.argv) #创建pyqt5的GUI程序
myWindow=translation()
myWindow.show() #展示窗体内容
sys.exit(app.exec_()) #进入程序主循环,窗口不会关闭,并且exit函数确保主循环安全退出
2.3、代码调试
pyqt5的代码也可以在pycharm界面运行调试,可以显示图形用户界面并在界面上进行输入,若有错误,日志可以在console界面展示
2.4、使用Pyinstaller工具打包源文件为可执行文件
在业务场景中, 经常需要Python开发一些脚本/小程序/GUI界面,交付给一些小白或未安装Python 的小伙伴们使用。
Pyinstaller是一个免费打包工具,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包成可执行的.exe文件,
它可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。
pyinstaller -F -w D:\Document\Workspace\SQLFormat\call_dataConversion.py -i D:\Document\icon\m7.ico -n SQL查询条件格式转换器