此为学习笔记,如有错误请指正
pyqt5 安装
安装教程: https://www.cnblogs.com/hahaa/p/15912736.html
$FileName$
-o
$FileNameWithoutExtension$.py
pyqt5代码教程:https://blog.csdn.net/qq_40243295/article/details/105633221
Qt Designer
Qt Designer 图形界面使用教程 : https://blog.csdn.net/stq054188/article/details/117743536
界面介绍
主界面介绍
主界面不同区域介绍:
工具箱 区域:提供GUI界面开发使用的各种基本控件,如单选框、文本框等。可以拖动到新创建的主程序界面。
主界面区域:用户放置各种从工具箱拖过来的各种控件。模板选项中最常用的就是Widget(通用窗口)和MainWindow(主窗口)。二者区别主要是Widget窗口不包含菜单栏、工具栏等。可以分别创建对比看看。
对象查看器 区域:查看主窗口放置的对象列表。
属性编辑器 区域: 提供对窗口、控件、布局的属性编辑功能。比如修改控件的显示文本、对象名、大小等。
信号/槽编辑器 区域:编辑控件的信号和槽函数,也可以添加自定义的信号和槽函数。
Qt Designer基本控件介绍
(1)显示控件。
Lable:文本标签,显示文本,可以用来标记控件。
Text Browser:显示文本控件。用于后台命令执行结果显示。
(2)输入控件,提供与用户输入交互
Line Edit:单行文本框,输入单行字符串。控件对象常用函数为Text() 返回文本框内容,用于获取输入。setText() 用于设置文本框显示。
Text Edit:多行文本框,输入多行字符串。控件 对象常用函数同Line Edit控件。
Combo Box:下拉框列表。用于输入指定枚举值。
(3)控件按钮,供用户选择与执行
Push Button:命令按钮。常见的确认、取消、关闭等按钮就是这个控件。clicked信号一定要记住。clicked信号就是指鼠标左键按下然后释放时会发送信号,从而触发相应操作。
Radio Button:单选框按钮。
Check Box:多选框按钮。
用法
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'connect_me.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
# 导入程序运行必须模块
import sys
# PyQt5中使用的基本控件都在PyQt5.QtWidgets模块中
from PyQt5.QtWidgets import QApplication, QMainWindow
# 导入designer工具生成的login模块
from login import Ui_Form
class MyMainForm(QMainWindow, Ui_Form):
def __init__(self, parent=None):
super(MyMainForm, self).__init__(parent)
self.setupUi(self)
if __name__ == "__main__":
# 固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行
app = QApplication(sys.argv)
# 初始化
myWin = MyMainForm()
# 将窗口控件显示在屏幕上
myWin.show()
# 程序运行,sys.exit方法确保程序完整退出。
sys.exit(app.exec_())
控件创建
标签:点击 Lable 不放—> 拖选到想要的位置 -----> 双击修改标签名
单行文本输入框: 点击 Line Edit 不放—> 拖选到想要的位置
多行文本输入框: 点击 Line Edit 不放—> 拖选到想要的位置
文本输出框: 点击 Text Broeser 不放—> 拖选到想要的位置
多选输入(枚举):点击 Combo Box 不放—> 拖选到想要的位置 -----> 双击多选框,加上枚举的选项---->ok
单击按钮:点击 Push Button 不放—> 拖选到想要的位置 -----> 双击改名
保存为.ui文件 点击 PyUic 编译为.py文件
加上主函数,创建实例
if __name__ == '__main__':
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_Form()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
就可以运行出基本界面
创建需要执行的函数模块:
def run_test(self):
# ----------- 获取参数 --------------------------
test_line = self.lineEdit.text() # 单行输入标签对应的文本内容
test_lines = self.textEdit.toPlainText() # 多行行输入标签对应的文本内容
test_comboBox = self.comboBox.currentText() # 获取多选按钮的内容
print(f'{test_line} + {test_lines} + {test_comboBox}')
self.textBrowser.append(f'{test_line} + {test_lines} + {test_comboBox}') # 将输出内容追加到文本输入框
QtWidgets.QApplication.processEvents() # 界面实时刷新,可以一条一条挨着输出
将单击按钮与函数模块绑定
源码
"""
-*- coding: utf-8 -*-
@time:
@author:zhang xiao yue
@description:
@save path:
"""
# Form implementation generated from reading ui file 'untitled_jc.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(884, 666)
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(80, 30, 72, 15))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(80, 90, 72, 15))
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(170, 30, 113, 21))
self.lineEdit.setObjectName("lineEdit")
self.textEdit = QtWidgets.QTextEdit(Form)
self.textEdit.setGeometry(QtCore.QRect(170, 90, 171, 161))
self.textEdit.setObjectName("textEdit")
self.label_3 = QtWidgets.QLabel(Form)
self.label_3.setGeometry(QtCore.QRect(60, 350, 72, 15))
self.label_3.setText("")
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(Form)
self.label_4.setGeometry(QtCore.QRect(90, 300, 72, 15))
self.label_4.setObjectName("label_4")
self.textBrowser = QtWidgets.QTextBrowser(Form)
self.textBrowser.setGeometry(QtCore.QRect(160, 290, 256, 192))
self.textBrowser.setObjectName("textBrowser")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(470, 30, 72, 15))
self.label_5.setObjectName("label_5")
self.comboBox = QtWidgets.QComboBox(Form)
self.comboBox.setGeometry(QtCore.QRect(520, 30, 87, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(470, 150, 93, 28))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
# ----------------- 按钮和模块绑定 ----------------------
self.pushButton.clicked.connect(self.run_test)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "单行输入"))
self.label_2.setText(_translate("Form", "多行输入"))
self.label_4.setText(_translate("Form", "输出"))
self.label_5.setText(_translate("Form", "多选"))
self.comboBox.setItemText(0, _translate("Form", "2021"))
self.comboBox.setItemText(1, _translate("Form", "2022"))
self.pushButton.setText(_translate("Form", "开始输出"))
def run_test(self):
# ----------- 获取参数 --------------------------
test_line = self.lineEdit.text() # 单行输入标签对应的文本内容
test_lines = self.textEdit.toPlainText() # 多行行输入标签对应的文本内容
test_comboBox = self.comboBox.currentText() # 获取多选按钮的内容
print(f'{test_line} + {test_lines} + {test_comboBox}')
self.textBrowser.append(f'该{test_comboBox},{test_line},{test_lines}') # 将输出内容追加到文本输入框
QtWidgets.QApplication.processEvents() # 界面实时刷新,可以一条一条挨着输出
if __name__ == '__main__':
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_Form()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Pyinstaller 打包.exe文件
教程:https://blog.csdn.net/abc6368765/article/details/121622951
pyinstaller -F -w main.py 界面
pyinstaller -F main.py 无界面
pyinstaller -F -w -i wind.ico main.py 加图标
使用pyinstaller -F -w main.py命令,可以去除exe程序运行起来之后,后方黑洞洞的控制台窗口,增加我们的观感和体验
pyinstaller -F main.py中的**-F**参数表示覆盖打包,这样在打包时,不管我们打包几次,都是最新的,这个记住就行,固定命令。
使用pyinstaller -F -w -i wind.ico main.py命令,可以指定我们生成的exe可执行文件的图