环境搭建
- 安装python3.7
- 安装pycharm
- 安装Pyqt5,用版本5.11,
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Pyqt5==5.11.3 Pyqt5-tools
- pycharm
中File->Tools->Extrernal Tools->点击“+”号->
弹出对话框,配置如下:
Program选择PyQt-tools安装目录中designer.exe 的路径
Work directory 使用变量$ProjectFileDir$
完成 - 配置pyuic(用来建UI文件转为PY文件的)
同上pycharm中File->Tools->Extrernal Tools->点击“+”号->
弹出对话框,配置如下:
Name: PyUIC
Program:$FileDir$\venv\Scripts\python.exe
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$
- 配置pyrcc(用来建qrc文件转为PY文件的,一般存放图片的)
Program:D:\Program Files (x86)\python37\Scripts\pyrcc5.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory:$FileDir$
- QtDesigner设计完之后用pyinstaller,打包成单个exe文件
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
然后用pyinstaller -F -w xxx.py生成
基础
- 窗口有3类,QMainWindow,QWidget,QDiaglog
- QMainWindow:包含状态栏,工具栏,菜单栏,标题栏
- QDiaglog:对话窗口的基类,比如打开文件那种窗口
- QWidget:不确定使用什么窗口,用这个
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow ,QDesktopWidget
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__() #调用父类的init初始化方法
self.initUI() #再调用自己的initUI初始化方法,方法在下面
def initUI(self):
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon') #设置窗口标题
self.setWindowIcon(QIcon('web.png')) #设置窗口和程序图标
self.show() #显示出来
if __name__ == '__main__':
app = QApplication(sys.argv) #固定写法,创建一个程序
ex = Example() #创建一个类,基于主窗口基类
sys.exit(app.exec_()) #进入程序循环
- 如果用Qtdesign设计完导入到pycharm,使用底下代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow,QStyleFactory
from Qtdesign设计的文件名字 import *
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyle(QStyleFactory.create("Fusion")) #设置窗口风格
w = QMainWindow()
ui = Ui_MainWindow() #Ui_MainWindow是Qt设计的类
ui.setupUi(w) #调用类中的方法,并把一个主窗口对象传入方法
w.show()
sys.exit(app.exec_())
底下代码一般都是在Ui_MainWindow类的setupUi方法里
- 设置图标
self.setWindowIcon(QIcon('web.png'))
,需要导入QtGui - 控件的提示信息是
self.setToolTip("xxxxx")
,鼠标移入提示
QLabel控件
- 文本显示控件,就是在GUI上显示一些文本
- setAlignment(),对齐方式
- setIndent(),缩进
- text(),文本内容
- setWordWrap,是否允许换行
- 伙伴关系是指通过热键控制相应的
QlineEdit控件
- 文本输入控件,比如账号密码等等
- echomode回显模式,normal输入啥显示啥,noecho没显示,password密码显示,passwordechoedit退出编辑后变
- 校验器和掩码,输入的内容必须符合规则,有点像正则
QTextEdit控件
- 多行文本控件,比较少用自己学一下很简单
QButton控件
- 按钮类控件,所有按钮的父类是AbstractButton
- QPushButton普通按钮,
- QRadioButton单选按钮,
- QCheckButton多选按钮
- QComebox下拉列表,下拉时选中的颜色可以在stylesheet改变
selection-background-color: rgb(0, 85, 255);
信号和槽
- 发送者:谁执行某个动作,比如某个按钮,触发了点击,发送者是按钮,发送者必须是窗口中的一个元素
- 信号:某个动作(如点击,划过,释放,)
- 接收者:必须是窗口中的一个元素
- 槽:接收者收到信号后,执行某个动作或方法