教程
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中鼠标右键 点击添加(移除)
添加菜单
添加工具栏(直接拖动动作编辑器中的东西)