PyQt5学习笔记02 PyQt5布局管理

PyQt5的界面布局主要有两种方法:绝对定位和局部类。在PyQt5中有四种布局方式:水平布局、垂直布局、网格布局、表单布局。还有两种布局方法:addLayout

各位老铁们好,相信很多人对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(自身):

PyQt5学习笔记02 PyQt5布局管理

布局=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类似,参考上面的用法即可。

用户评论

PyQt5学习笔记02 PyQt5布局管理
看我发功喷飞你

这个笔记讲得真棒!之前一直对 PyQt5 的布局管理一头雾水,看了你的讲解终于豁然开朗了。特别喜欢你把常用的布局方式都列出来并用具体的例子演示,这下我终于可以开始动手设计界面啦!

    有9位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
(り。薆情海

我同意布局管理是学习 PyQt5 的关键点,掌握它才能开发出更美观、易用的应用程序。不过这个笔记的内容对我来说还是稍微有些入门级,希望作者以后能分享更多进阶的布局技巧和应用场景。

    有8位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
相知相惜

看完你的笔记,我对 PyQt5 布局管理有了初步的了解,但实践起来还是感觉有点困难。比如QWidget的大小调整、跨布局位置移动这些操作让我感到头疼。有没有什么好的学习资源可以帮助我更好地掌握这些技巧呢?

    有6位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
失心疯i

PyQt5 的布局确实比较复杂,不同的布局方式适用场景也不同,要熟练掌握需要不断练习和总结经验。这个笔记提供了一个不错的入门基础,希望大家多读多实践!

    有6位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
怅惘

学习 PyQt5 以来一直觉得布局管理是最难理解的部分,还好看到你的笔记解释得非常清楚简洁,终于让我能够更好地认识不同的布局方式之间的区别和应用场景。感谢你的分享!

    有5位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
长裙绿衣

总觉得布局的代码看了一堆都不太明白怎么工作原理是怎么样的? 希望以后可以详细讲解一下PyQt5 每个布局管理器的内部实现细节,比如如何计算 widget 的大小、位置等等。

    有9位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
浅笑√倾城

对于初学者来说这个笔记可能稍微简单了一点,希望作者能分享一些更实用的案例,展示不同布局方式应用于复杂场景的效果。这样才能更好的让我们理解布局的实际应用价值。

    有9位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
逾期不候

这篇笔记的内容很适合我刚开始学习 PyQt5 的入门情况,把常用的布局管理器都介绍了,并且用简洁易懂的语言讲解了使用方法。希望作者继续分享更多精彩的学习笔记!

    有19位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
铁树不曾开花

布局管理确实挺重要的,特别是要设计一个界面布局美观并且功能齐全的时候。这篇文章讲得很到位,让我对 PyQT5 的布局管理有了更深入的理解。

    有14位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
顶个蘑菇闯天下i

很感谢你的分享,我正在学习做Python开发,正好遇到了布局管理的难题,你的笔记解释得非常清晰,很有帮助!

    有12位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
灵魂摆渡人

希望以后能看到更多关于使用 PyQt5 布局管理器实现一些酷炫效果的笔记。比如动态调整布局、响应用户交互改变布局等等。

    有13位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
坏小子不坏

我之前是用 Kivy 做开发的,感觉 PyQt5 的布局管理和 Kivy 的有些不一样,需要花时间来学习适应。你的笔记帮了我不少忙,让我更快地掌握了 PyQt5 的布局基本知识。

    有10位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
呆檬

布局是 UI 设计的关键,理解好 PyQt5 的布局管理器可以让开发的过程更加高效!

    有6位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
夏至离别

这个笔记讲解得很到位,把很多常用的布局方式都涵盖了,适合新手入门学习。

    有12位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
早不爱了

我觉得这篇文章应该添加一些关于 QGridLayout 和 QHBoxLayout 应用的代码案例,这样能更直观地展示它们的应用场景和效果。

    有11位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
嗯咯

之前总觉得 PyQT5 布局管理非常复杂,看了你的笔记发现很多概念其实很简单,只要理解其核心原理就很容易掌握了。

    有15位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
不要冷战i

学习 PyQt5 的布局确实需要花费时间,但掌握了之后才能开发出更加优秀的应用程序!感谢作者分享学习笔记。

    有17位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
西瓜贩子

这篇文章对我来说太过基础了,希望能看到一些关于实现复杂布局和响应式 UI 的高级技巧。

    有15位网友表示赞同!

PyQt5学习笔记02 PyQt5布局管理
为爱放弃

我很喜欢这个笔记的讲解方式!简洁易懂,而且代码示例很实用,非常适合新手入门学习 PyQT5 布局管理。

    有8位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/125882.html

(0)
小su的头像小su
上一篇 2024年9月1日 下午8:38
下一篇 2024年9月1日 下午8:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注