各位老铁们好,相信很多人对PyQt5学习笔记02 PyQt5布局管理都不是特别的了解,因此呢,今天就来为大家分享下关于PyQt5学习笔记02 PyQt5布局管理以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
绝对布局就不详细解释了。使用QWidget的move、setGeometry等方法直接设置其在窗口中的位置。 Box布局(QHBoxLayout水平布局、QVBoxLayout垂直布局)方法:addLayout(self, QLayout,stretch=0) 在窗口右侧添加布局,使用stretch(拉伸量)进行拉伸,默认为0addWidget(self, QWidget 、拉伸、Qt .Alignment)将控件添加到布局中。 stretch(拉伸量),仅适用于QBoxLayout布局模式。随着拉伸量变大,控件和窗口将增加对齐。指定对齐方式QGridLayout 网格布局方法: addLayout(QLayout, row, column, Qt.Alignment) 中在网格布局的行(row)和列(column)位置添加新的布局,并设置对齐方式addLayout(QLayout 、row、column、rowSpan、columnSpan、Qt.Alignment)在网格布局中创建一个新的布局,从行(row)、列(column)开始,占据rowSpan行、columnSpan列addWidget(QWidget, row, column, Qt.Alignment) 在网格布局的行(row)、列(column)中添加窗口控件,addWidget(QWidget , fromRow, fromColumn, rowSpan, columnSpan, Qt.Alignment) 在网格布局中添加窗口控件,从行开始(row)、列(column),占据rowSpan行、columnSpan列setRowStretch(row,stretch) 在行(row))处添加拉伸量setColumnStretch(column,stretch) 在列(column)处添加拉伸量QFormLayout 表单布局方法: addRow(QWidget, QWidget)addRow(QWidget, QLayout)addRow(str, QWidget)addRow(str, QLayout) 或以上在表单布局末尾添加一行数据,设置表单的标签和控件addRow(QWidget) ) addRow(QLayout) QWidget 和QLayout 添加在最后一行,占据两列宽度insertRow(row, QWidget, QWidget)insertRow(row, QWidget, QLayout )insertRow(row, str, QWidget)insertRow(row, str, QLayout) 向指定行添加标签和控件insertRow(row, QWidget)insertRow(row, QLayout) 向指定行添加控件并占据两列宽度布局对齐:
参数说明QtCore.Qt.AlignLeft 水平对齐到左边QtCore.Qt.AlignRight 水平对齐到右边QtCore.Qt.AlignCenter 水平对齐到中心QtCore.Qt.AlignJustify 水平对齐到两端QtCore.Qt.AlignTop 垂直对齐到顶部QtCore.Qt.AlignBottom 垂直于底部对齐QtCore.Qt.AlignVCenter 垂直于中心对齐
addSpacing(自身, int)
设置各个控件的上下间距。此方法可以添加额外的控件。
addStretch(自身, int)
分配布局尺寸比例
insertStretch(索引, 拉伸=0)
在指定的控制间隔添加布局比例
insertSpacing(索引,大小)
设置指定控制间隔的间隔大小
addStretch根据比例调整界面布局,广泛应用于页面布局,因此我们需要使用一定的空间进行代码测试。
使用addStretch,我们可以实现多种对齐方式,更加灵活。
导入系统
从PyQt5.QtWidgets 导入QtWidget、QPushButton、QHBoxLayout、QVBoxLayout
类示例(QWidget):
def __init__(self):
超级().__init__()
self.initUI()
def initUI(自身):
布局=QHBoxLayout()
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
self.setLayout(布局)
self.setGeometry(300, 300, 400, 100)
self.setWindowTitle(‘按钮’)
如果__name__==’__main__’:
应用程序=QtWidget.QApplication(sys.argv)
ex=示例()
例如:show()
sys.exit(app.exec_())
默认情况下,所有控件都会填充整个布局文件。
图1
水平向左对齐~ QtCore.Qt.AlignLeftdef initUI(self):
布局=QHBoxLayout()
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
layout.addStretch(1) #添加这一行
.
在两个控件后面添加这一行就相当于水平布局中存在:按钮1-按钮2-拉伸。这时,只要addStretch的参数大于0,就表示整个布局的最后一部分被占用,而前面的控件则按正常大小显示。不要伸展。
图2
水平右对齐~ QtCore.Qt.AlignRightdef initUI(self):
布局=QHBoxLayout()
layout.addStretch(1) #在控件前面添加这一行
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
.
这行添加在布局中所有控件之前,相当于横向布局中存在:stretch-button 1-button 2,表示整个布局的第一部分被占用,后续控件正常显示尺寸且不拉伸。
图3
水平居中对齐~ QtCore.Qt.AlignCenterdef initUI(self):
布局=QHBoxLayout()
layout.addStretch(1) #在前面添加一行
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
layout.addStretch(1) #后面添加一行
.
stretch-button 1-button 2-stretch,表示左右两边都满了,控件占据中间位置
图4
注意:当布局中出现多个addStretch时,以下参数有意义,表示将整个布局的大小减去控件总大小后n等份进行分配。例如:
def initUI(自身):
布局=QHBoxLayout()
layout.addStretch(1) # 注1
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
layout.addStretch(3) # 注2
意思是除去控件1和控件2的宽度,剩下的部分被分成四等份,前面的占一份,最后的部分占三份。
图5
水平对齐~ QtCore.Qt.AlignJustifydef initUI(self):
布局=QHBoxLayout()
布局.addWidget(QPushButton(str(1))
layout.addStretch(1) #添加行
布局.addWidget(QPushButton(str(2))
图6
垂直顶部对齐~ QtCore.Qt.AlignTopdef initUI(self):
布局=QVBoxLayout()
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
layout.addStretch(1) #添加行
图7
垂直底部对齐~ QtCore.Qt.AlignBottomdef initUI(self):
布局=QVBoxLayout()
layout.addStretch(1) #添加行
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
图8
垂直居中对齐~ QtCore.Qt.AlignVCenterdef initUI(self):
布局=QVBoxLayout()
layout.addStretch(1) #添加行
布局.addWidget(QPushButton(str(1))
布局.addWidget(QPushButton(str(2))
layout.addStretch(1) #添加行
图9
垂直对齐def initUI(self):
布局=QVBoxLayout()
布局.addWidget(QPushButton(str(1))
layout.addStretch(1) #添加行
布局.addWidget(QPushButton(str(2))
图10
如果要做组合布局,比如左上角、右下角等,如下:
def initUI(自身):
布局1=QHBoxLayout()
布局1.addWidget(QPushButton(str(1))
布局1.addWidget(QPushButton(str(2))
layout1.addStretch(1) # 水平向左
布局2=QVBoxLayout()
布局2.addLayout(布局1)
layout2.addStretch(1) # 垂直顶部对齐
self.setLayout(布局2)
.
图11
添加间距
addSpacing 设置控件之间的间距。只需按照图1 中的布局和代码进行演示即可。
def initUI(自身):
布局=QHBoxLayout()
布局.addWidget(QPushButton(str(1))
布局.addSpacing(100)
布局.addWidget(QPushButton(str(2))
图12
间距设置可以放置在任何地方,对于调整控件的位置非常有效。相当于在控件之间添加一个空控件。详细用法与addStrech类似,参考上面的用法即可。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/125882.html
用户评论
看我发功喷飞你
这个笔记讲得真棒!之前一直对 PyQt5 的布局管理一头雾水,看了你的讲解终于豁然开朗了。特别喜欢你把常用的布局方式都列出来并用具体的例子演示,这下我终于可以开始动手设计界面啦!
有9位网友表示赞同!
(り。薆情海
我同意布局管理是学习 PyQt5 的关键点,掌握它才能开发出更美观、易用的应用程序。不过这个笔记的内容对我来说还是稍微有些入门级,希望作者以后能分享更多进阶的布局技巧和应用场景。
有8位网友表示赞同!
相知相惜
看完你的笔记,我对 PyQt5 布局管理有了初步的了解,但实践起来还是感觉有点困难。比如QWidget的大小调整、跨布局位置移动这些操作让我感到头疼。有没有什么好的学习资源可以帮助我更好地掌握这些技巧呢?
有6位网友表示赞同!
失心疯i
PyQt5 的布局确实比较复杂,不同的布局方式适用场景也不同,要熟练掌握需要不断练习和总结经验。这个笔记提供了一个不错的入门基础,希望大家多读多实践!
有6位网友表示赞同!
怅惘
学习 PyQt5 以来一直觉得布局管理是最难理解的部分,还好看到你的笔记解释得非常清楚简洁,终于让我能够更好地认识不同的布局方式之间的区别和应用场景。感谢你的分享!
有5位网友表示赞同!
长裙绿衣
总觉得布局的代码看了一堆都不太明白怎么工作原理是怎么样的? 希望以后可以详细讲解一下PyQt5 每个布局管理器的内部实现细节,比如如何计算 widget 的大小、位置等等。
有9位网友表示赞同!
浅笑√倾城
对于初学者来说这个笔记可能稍微简单了一点,希望作者能分享一些更实用的案例,展示不同布局方式应用于复杂场景的效果。这样才能更好的让我们理解布局的实际应用价值。
有9位网友表示赞同!
逾期不候
这篇笔记的内容很适合我刚开始学习 PyQt5 的入门情况,把常用的布局管理器都介绍了,并且用简洁易懂的语言讲解了使用方法。希望作者继续分享更多精彩的学习笔记!
有19位网友表示赞同!
铁树不曾开花
布局管理确实挺重要的,特别是要设计一个界面布局美观并且功能齐全的时候。这篇文章讲得很到位,让我对 PyQT5 的布局管理有了更深入的理解。
有14位网友表示赞同!
顶个蘑菇闯天下i
很感谢你的分享,我正在学习做Python开发,正好遇到了布局管理的难题,你的笔记解释得非常清晰,很有帮助!
有12位网友表示赞同!
灵魂摆渡人
希望以后能看到更多关于使用 PyQt5 布局管理器实现一些酷炫效果的笔记。比如动态调整布局、响应用户交互改变布局等等。
有13位网友表示赞同!
坏小子不坏
我之前是用 Kivy 做开发的,感觉 PyQt5 的布局管理和 Kivy 的有些不一样,需要花时间来学习适应。你的笔记帮了我不少忙,让我更快地掌握了 PyQt5 的布局基本知识。
有10位网友表示赞同!
呆檬
布局是 UI 设计的关键,理解好 PyQt5 的布局管理器可以让开发的过程更加高效!
有6位网友表示赞同!
夏至离别
这个笔记讲解得很到位,把很多常用的布局方式都涵盖了,适合新手入门学习。
有12位网友表示赞同!
早不爱了
我觉得这篇文章应该添加一些关于 QGridLayout 和 QHBoxLayout 应用的代码案例,这样能更直观地展示它们的应用场景和效果。
有11位网友表示赞同!
嗯咯
之前总觉得 PyQT5 布局管理非常复杂,看了你的笔记发现很多概念其实很简单,只要理解其核心原理就很容易掌握了。
有15位网友表示赞同!
不要冷战i
学习 PyQt5 的布局确实需要花费时间,但掌握了之后才能开发出更加优秀的应用程序!感谢作者分享学习笔记。
有17位网友表示赞同!
西瓜贩子
这篇文章对我来说太过基础了,希望能看到一些关于实现复杂布局和响应式 UI 的高级技巧。
有15位网友表示赞同!
为爱放弃
我很喜欢这个笔记的讲解方式!简洁易懂,而且代码示例很实用,非常适合新手入门学习 PyQT5 布局管理。
有8位网友表示赞同!