Qt for Python的4种基础布局管理

简介: Qt for Python的4种基础布局管理

一、Qt For Python的几种常用布局



在图形界面编程中,一般存在以下几种常见的布局方式:


  • 水平布局:布局内的控件沿水平方向排列;
  • 垂直布局:布局内的控件沿垂直方向排列;
  • 网格布局:布局按照行和列进行划分,布局内的控件分列不同的行和列中;
  • 表单布局:布局实现表单显示方式的布局。


下面,我们通过几个示例,来介绍一下在QT for Python中使用一些基础、常见的布局管理。


二、水平布局QHBoxLayout



水平布局,顾名思义,布局内的控件沿水平方向从左往右进行排列。


微信图片_20220429122227.jpg


在Qt For Python中,布局相关的类位于QtWidgets模块中,通过下面的代码,我们可以创建一个内为水平布局的主窗口:


class LayoutApp(QtWidgets.QMainWindow):
    '''
    州的先生
    https://zmister.com
    '''
    def __init__(self):
        super().__init__()
        main_widget = QtWidgets.QWidget() # 实例化一个widget控件
        main_layout = QtWidgets.QHBoxLayout() # 实例化一个水平布局层
        main_widget.setLayout(main_layout) # 设置widget控件布局为水平布局
        # 实例化3个按钮
        button_1 = QtWidgets.QPushButton('按钮一')
        button_2 = QtWidgets.QPushButton('按钮二')
        button_3 = QtWidgets.QPushButton('按钮三')
        # 将按钮添加到水平布局中
        main_layout.addWidget(button_1)
        main_layout.addWidget(button_2)
        main_layout.addWidget(button_3)
        self.setCentralWidget(main_widget) # 设置窗口的中央部件
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = LayoutApp()
    gui.show()
    sys.exit(app.exec_())


在上面的示例代码中,我们创建了一个继承自主窗口类QMainWindow的对象,然后在其中实例化了一个QWidget和一个水平布局层HBoxLayout,接着创建了3个按钮控件,最后将这3个按钮控件添加到水平布局层中。


运行上述代码,我们将会得到一个如下图所示的图形界面窗口:


微信图片_20220429122301.jpg


三、垂直布局



垂直布局与水平布局,类似,但是控件是沿着垂直方向从上向下进行排列的。


微信图片_20220429122244.jpg


通过下面的代码,我们可以创建一个内为水平布局的主窗口:


from PySide2 import QtWidgets
import sys
class LayoutApp(QtWidgets.QMainWindow):
    '''
    州的先生
    https://zmister.com
    '''
    def __init__(self):
        super().__init__()
        main_widget = QtWidgets.QWidget() # 实例化一个widget控件
        main_layout = QtWidgets.QVBoxLayout() # 实例化一个垂直布局层
        main_widget.setLayout(main_layout) # 设置widget控件布局为水平布局
        # 实例化3个按钮
        button_1 = QtWidgets.QPushButton('按钮一')
        button_2 = QtWidgets.QPushButton('按钮二')
        button_3 = QtWidgets.QPushButton('按钮三')
        # 将按钮添加到水平布局中
        main_layout.addWidget(button_1)
        main_layout.addWidget(button_2)
        main_layout.addWidget(button_3)
        self.setCentralWidget(main_widget) # 设置窗口的中央部件
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = LayoutApp()
    gui.show()
    sys.exit(app.exec_())


上述代码与水平布局的示例代码类似,只是将QHBoxLayout()换成了QVBoxLayout(),运行上述代码,我们将会得到如下图所示的主窗口图形界面:


微信图片_20220429122325.jpg


四、网格布局



网格布局与水平布局和垂直布局皆不一样,网格布局内部通过一个无形的网格来对其中的控件进行布局。


微信图片_20220429122328.jpg


如同表格一样,网格布局里面分位行和列单元格,同时一个单元格可以占多行或者多列。下面,我们通过一个示例来演示一下:


from PySide2 import QtWidgets
import sys
class LayoutApp(QtWidgets.QMainWindow):
    '''
    州的先生
    https://zmister.com
    '''
    def __init__(self):
        super().__init__()
        main_widget = QtWidgets.QWidget() # 实例化一个widget控件
        main_layout = QtWidgets.QGridLayout() # 实例化一个垂直布局层
        main_widget.setLayout(main_layout) # 设置widget控件布局为水平布局
        # 实例化3个按钮
        button_1 = QtWidgets.QPushButton('按钮一')
        button_2 = QtWidgets.QPushButton('按钮二')
        button_3 = QtWidgets.QPushButton('按钮三')
        # 将按钮添加到水平布局中
        main_layout.addWidget(button_1,1,1,1,2) # 添加到第1行第1列,占1行占2列
        main_layout.addWidget(button_2,2,1,1,1) # 添加到第2行第1列,占1行占1列
        main_layout.addWidget(button_3,3,2,1,1) # 添加到第3行第2列,占1行占1列
        self.setCentralWidget(main_widget) # 设置窗口的中央部件
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = LayoutApp()
    gui.show()
    sys.exit(app.exec_())


在上面的代码中,我们将按钮添加到网格不同的行列中,运行上述代码,可以得到如下图所示的主窗口图形界面:



微信图片_20220429122352.jpg

五、表单布局



表单布局意即以表单的形式进行布局。那么表单的形式是什么形式呢,我们知道普通的完整表单都会有一个文本标签和一个输入框等,就像下图这样:


微信图片_20220429122354.jpg


那么表单布局也就是按照这种方式进行布局。我们来看具体的例子:


from PySide2 import QtWidgets
import sys
class LayoutApp(QtWidgets.QMainWindow):
    '''
    州的先生
    https://zmister.com
    '''
    def __init__(self):
        super().__init__()
        main_widget = QtWidgets.QWidget() # 实例化一个widget控件
        main_layout = QtWidgets.QFormLayout() # 实例化一个垂直布局层
        main_widget.setLayout(main_layout) # 设置widget控件布局为水平布局
        # 实例化3个按钮
        button_1 = QtWidgets.QLabel('按钮一')
        button_2 = QtWidgets.QPushButton('按钮二')
        button_3 = QtWidgets.QPushButton('按钮三')
        button_4 = QtWidgets.QPushButton('按钮四')
        # 将按钮添加到水平布局中
        main_layout.addRow(button_1,button_2)
        main_layout.addRow(button_3)
        main_layout.addWidget(button_4)
        self.setCentralWidget(main_widget) # 设置窗口的中央部件
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = LayoutApp()
    gui.show()
    sys.exit(app.exec_())


在上面的代码中,我们使用了两个方法三种方式向表单布局层中添加控件,分别是:


  • addRow(控件一、控件二)
  • addRow(控件一)
  • addWidget(控件一)


运行上述代码,我们可以得到如下图所示的主窗口图形界面:


微信图片_20220429122434.jpg


可以看到,带两个参数的addRow()方法,会将第一个参数控件作为表单的标签进行布局,将第一个参数控件作为表单的输入控件进行布局;带一个参数的addRow()方法会将控件直接铺满一行;带一个参数的addWidget()方法则会留空表单标签的位置。


六、最后



以上就是Qt For Python中常见几种布局的使用方法了。虽然还有很多种其他的布局方法,但这4种是最基础最常使用的布局方法,大家可以根据项目的实际需求灵活地使用布局。


相关文章
|
3月前
【qt】 QGridLayout布局管理器怎么用?
【qt】 QGridLayout布局管理器怎么用?
124 0
WK
|
1月前
|
开发者 Python
Python代码布局规范有哪些
这段内容介绍了Python代码布局的规范,涵盖缩进、空行、行宽、空格使用、注释及顶级定义间的空行等方面,强调使用空格缩进、限制行宽、操作符两侧加空格、简洁注释等实践,旨在提升代码可读性和一致性,便于维护与理解。遵循这些规范能帮助开发者编写更清晰、整洁且易读的Python代码。
WK
40 2
|
2月前
|
IDE 开发工具 Python
python3代码编程规范(命名、空格、注释、代码布局、编程建议等)
该文章详细介绍了Python3的编程规范,包括命名、空格使用、注释、代码布局等方面的最佳实践,帮助提升代码的可读性和一致性。
38 0
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 空白项Spacer
133 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 表单布局Form Layout
70 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 网格布局Grid Layout
292 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 水平布局Horizontal Layout
186 2
|
3月前
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
【Qt 学习笔记】Qt常用控件 | 布局管理器 | 垂直布局Vertical Layout
255 2
下一篇
无影云桌面