PyQt5--详解

本文详细介绍了PyQt5中的布局管理,包括水平布局、垂直布局、栅格布局的创建和使用,以及如何设置组件的尺寸策略和最小最大尺寸。同时,讨论了信号与槽的概念,阐述了它们在组件交互中的关键作用,并展示了如何通过信号与槽实现点击按钮关闭窗口的功能。此外,还提及了菜单栏和状态栏的添加以及工具栏的构建。
摘要由CSDN通过智能技术生成

教程

http://code.py40.com/pyqt5/16.html

水平布局

两种方法:

 1.选中控件-->右键布局-->水平布局

 2.layout的horizontal -->将部件拖进去

# 可以根据窗口大小来自适应控件大小
【注】转为py文件后,尽可能新建一个py文件去继承刚才转化的py代码类








ui转py文件代码:
	
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(680, 478)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(120, 110, 431, 221))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.horizontalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton_4 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.verticalLayout.addWidget(self.pushButton_4)
        self.checkBox = QtWidgets.QCheckBox(self.horizontalLayoutWidget)
        self.checkBox.setObjectName("checkBox")
        self.verticalLayout.addWidget(self.checkBox)
        self.radioButton = QtWidgets.QRadioButton(self.horizontalLayoutWidget)
        self.radioButton.setObjectName("radioButton")
        self.verticalLayout.addWidget(self.radioButton)
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(60, 20, 521, 31))
        self.widget.setObjectName("widget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 680, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_4.setText(_translate("MainWindow", "PushButton"))
        self.checkBox.setText(_translate("MainWindow", "CheckBox"))
        self.radioButton.setText(_translate("MainWindow", "RadioButton"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_3.setText(_translate("MainWindow", "PushButton"))









# 新建py文件源码
	
import sys

from se import Ui_MainWindow  # 导入刚才ui生成的类

from PyQt5.QtWidgets import QApplication, QMainWindow


if __name__ == '__main__':
    app = QApplication(sys.argv) # 获取命令函参数
    mainWindow = QMainWindow()  # 窗口对象
    ui = Ui_MainWindow()  # 实例化ui类且向主窗口添加控件
    ui.setupUi(mainWindow)  # 调用刚才设计的ui类中的方法
    mainWindow.show()  # 显示窗口
    sys.exit(app.exec_())   # 进入主循环,且关闭时释放内存

垂直布局

布局内的组件 等宽等距,随着布局的大小自动适应
1. 先拖控件,在拖垂直布局
2. 先布局,在往里面添加组件
同上...(水平布局)

水平布局和垂直布局 一起使用

 选中要布局的组件 --> 布局 --> 选择

这样布局后会根据布局的大小调整组件的大小

在这里插入图片描述

栅格布局

在这里插入图片描述

如果咋mac上出现布局或者显示问题,重写打开ui文件 生成一下就ok

垂直分隔与水平分隔

给组件中分隔用(无分隔线)

在这里插入图片描述

分割线

间隔效果 带线

在这里插入图片描述

布局中的最大尺寸与最小尺寸

当前控件最小允许的尺寸与最大的尺寸

在这里插入图片描述

尺寸策略(sizePolicy)

期望尺寸:和组件实际尺寸并无关系,实际上为布局中的默认组件尺寸;

读组件默认尺寸: 
	self.组件.sizeHint().width()      示例: self.pushButton.sizeHint().width()
	self.组件.sizeHint().height()     示例:  self.pushButton.sizeHint().height()
	
读最小期望尺寸:
	self.pushButton.minimumSizeHint().width()   

添加组件之间的伙伴关系(热键)

在这里插入图片描述

信号与槽(核心)

信号: 是由对象或控件发射出去的消息。(按钮的单击事件)
	 当单击按钮时,按钮会向外部发送单击的消息;


槽: 发送出来的信号,需要代码进行响应,这些代码就是槽;
	本质上槽是一个函数,方法;

直白点: 单击按钮就是python中就是调用函数;    槽就是函数;  做一个绑定关系;
(信号与槽;可以是多对多关系,也可以是1对1关系)

点击按钮关闭窗口
在这里插入图片描述

在这里插入图片描述

添加菜单栏、状态栏

在QMainwindonw中鼠标右键 点击添加(移除)

添加菜单
在这里插入图片描述
添加工具栏(直接拖动动作编辑器中的东西)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像风一样的男人@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值