标签:10.1 控件 管理器 self 布局 label QLayout layout
一、QLayout布局管理器基类
1.基本概念
- QLayout是布局管理器基类,属于抽象类。
- 如果想使用他,就必须子类化,或者直接使用其子类来调用其中的方法和属性,本节课就利用其子类盒子布局管理器来讲解。
- 基本步骤
# 1.创建布局管理器对象
# 2.设置对象参数
# 2.1边距调节
# 2.2设置布局的方向
# 3.添加需要布局的控件到布局管理器
# 4.添加布局管理器到父控件
2.代码
点击查看代码
from PyQt5.Qt import *
import sys
class Window(QWidget) :
def __init__(self) :
super().__init__()
self.setWindowTitle("布局管理-初识QLayout - PyQt5中文网")
self.resize(600, 500)
self.func_list()
def func_list(self) :
self.func()
def func(self) :
# 初识布局管理器
# QLayout是抽象类,直接使用子类创建布局管理器
# 因为父控件直接和布局管理器产生联系,布局管理器再和子控件建立联系,所以这里子控件可以省略self
label1 = QLabel('按钮1', self)
label1.setStyleSheet('background-color:green')
label2 = QLabel('按钮2', self)
label2.setStyleSheet('background-color:red')
label3 = QLabel('按钮3', self)
label3.setStyleSheet('background-color:green')
# # 传统方式布局
# label_width = self.width()
# label_height = self.height() / 3
# label1.resize(label_width, label_height)
# label2.resize(label_width, label_height)
# label3.resize(label_width, label_height)
#
# label1.move(0, 0)
# label2.move(0, label_height)
# label3.move(0, label_height * 2)
# 1.创建布局管理器对象
# v_layout = QVBoxLayout() # QVBoxLayout 垂直布局
v_layout = QHBoxLayout() #QHBoxLayout 水平布局
# 2.设置对象参数
# 2.1边距调节
v_layout.setContentsMargins(10, 30, 50, 70) # 外边距 、左上右下
v_layout.setSpacing(30) # 内边距
# 2.2设置布局的方向
# Qt.RightToLeft
# Qt.LeftToRight
# Qt.LayoutDirectionAuto # 自动布局
self.setLayoutDirection(Qt.RightToLeft)
# 3.添加需要布局的控件到布局管理器
v_layout.addWidget(label1)
v_layout.addWidget(label2)
v_layout.addWidget(label3)
# 4.添加布局管理器到父控件
self.setLayout(v_layout) # setLayout直接继承QWidget,不是控件,只是一种定位策略
print(self.children()) # 这时候布局管理器和子控件拥有相同的父对象self,所以布局管理器不是控件,只是一种定位策略
# label2.hide()
if __name__ == '__main__' :
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
标签:10.1,控件,管理器,self,布局,label,QLayout,layout 来源: https://www.cnblogs.com/yuyingblogs/p/16152030.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。