欢迎访问宙启技术站
智能推送

PyQt5中的常见布局管理器及其使用方法介绍

发布时间:2024-01-19 07:59:54

在PyQt5中,常见的布局管理器有以下几种:水平布局(QHBoxLayout)、垂直布局(QVBoxLayout)、网格布局(QGridLayout)、表格布局(QFormLayout)和堆叠布局(QStackedLayout)。下面将对每种布局管理器的使用方法进行介绍,并提供相应的例子代码。

1. 水平布局(QHBoxLayout):

水平布局是将子控件水平排列的布局管理器。

import sys
from PyQt5.QtWidgets import QApplication, QHBoxLayout, QPushButton, QWidget

app = QApplication(sys.argv)
window = QWidget()

layout = QHBoxLayout()
layout.addWidget(QPushButton('Button 1'))
layout.addWidget(QPushButton('Button 2'))
layout.addWidget(QPushButton('Button 3'))

window.setLayout(layout)
window.show()

sys.exit(app.exec_())

2. 垂直布局(QVBoxLayout):

垂直布局是将子控件垂直排列的布局管理器。

import sys
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QPushButton, QWidget

app = QApplication(sys.argv)
window = QWidget()

layout = QVBoxLayout()
layout.addWidget(QPushButton('Button 1'))
layout.addWidget(QPushButton('Button 2'))
layout.addWidget(QPushButton('Button 3'))

window.setLayout(layout)
window.show()

sys.exit(app.exec_())

3. 网格布局(QGridLayout):

网格布局是在一个二维网格中布局子控件的布局管理器。

import sys
from PyQt5.QtWidgets import QApplication, QGridLayout, QPushButton, QWidget

app = QApplication(sys.argv)
window = QWidget()

layout = QGridLayout()
layout.addWidget(QPushButton('Button 1'), 0, 0)  #       个参数是子控件,第二个和第三个参数是位置
layout.addWidget(QPushButton('Button 2'), 0, 1)
layout.addWidget(QPushButton('Button 3'), 1, 0)
layout.addWidget(QPushButton('Button 4'), 1, 1)

window.setLayout(layout)
window.show()

sys.exit(app.exec_())

4. 表格布局(QFormLayout):

表格布局是在一个二维网格中布局子控件,并将其分为两列的布局管理器。

import sys
from PyQt5.QtWidgets import QApplication, QFormLayout, QLabel, QLineEdit, QWidget

app = QApplication(sys.argv)
window = QWidget()

layout = QFormLayout()
layout.addRow('Name:', QLineEdit())  #       个参数是标签,第二个参数是编辑框
layout.addRow('Address:', QLineEdit())
layout.addRow('City:', QLineEdit())
layout.addRow('Zip:', QLineEdit())

window.setLayout(layout)
window.show()

sys.exit(app.exec_())

5. 堆叠布局(QStackedLayout):

堆叠布局是只显示一个子控件的布局管理器,可以在子控件之间进行切换。

import sys
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QApplication, QStackedLayout, QLabel, QVBoxLayout, QLineEdit, QPushButton, QWidget

class Window(QWidget):
    def __init__(self):
        super().__init__()

        self.stacked_layout = QStackedLayout()
        self.setLayout(self.stacked_layout)

        self.init_ui()

    def init_ui(self):
        page1 = QWidget()
        layout1 = QVBoxLayout()
        layout1.addWidget(QLabel('Page 1'))
        button1 = QPushButton('Next')
        button1.clicked.connect(self.next_page)
        layout1.addWidget(button1)
        page1.setLayout(layout1)
        self.stacked_layout.addWidget(page1)

        page2 = QWidget()
        layout2 = QVBoxLayout()
        layout2.addWidget(QLabel('Page 2'))
        button2 = QPushButton('Previous')
        button2.clicked.connect(self.previous_page)
        layout2.addWidget(button2)
        page2.setLayout(layout2)
        self.stacked_layout.addWidget(page2)

    def next_page(self):
        self.stacked_layout.setCurrentIndex(1)

    def previous_page(self):
        self.stacked_layout.setCurrentIndex(0)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

以上就是PyQt5中常见的布局管理器及其使用方法的介绍和示例代码。你可以根据需要选择合适的布局管理器来管理和排列你的控件。通过合理使用布局管理器,可以更方便地进行界面设计和布局控制。