GridLayout 是什么?

QGridLayout 是控制网格布局的类。

QGridLayout 会占据它的可用空间(通过父布局或parentWidget(),将其划分为行和列,并将其管理的每个控件放入正确的单元格中。

列和行的行为是相同的;我们将讨论列,但是行有等效的函数。

每一列都有一个最小的宽度和一个伸缩系数。setColumnMinimumWidth() 这是列最小宽度。使用setColumnStretch()设置该列的可用空间将超过其所需的最小值。

通常,每控件或布局都是通过addWidget()添加到单元格。使用addItem()addWidget(),控件可以跨行和跨列。如果这样做,QGridLayout 会根据伸缩系数自动分配多行/多列。

看完整范例:

from PySide2.QtWidgets import QApplication, QWidget , QVBoxLayout, QPushButton, QGroupBox, QGridLayout
import sys
from PySide2.QtGui import QIcon, QFontclass Window(QWidget):def __init__(self):super().__init__()self.setWindowTitle("Grid Layout")self.setGeometry(300,200,500,400)self.setIcon()self.createGridLayout()vbox = QVBoxLayout()vbox.addWidget(self.groupBox)self.setLayout(vbox)self.show()def setIcon(self):appIcon = QIcon("icon.png")self.setWindowIcon(appIcon)def createGridLayout(self):self.groupBox = QGroupBox("Please Choose One Language")self.groupBox.setFont(QFont("Sanserif", 13))gridLayout = QGridLayout()button = QPushButton("C++", self)button.setIcon(QIcon("cpp.png"))gridLayout.addWidget(button, 0,0)button1 = QPushButton("CSS", self)button1.setIcon(QIcon("css.png"))gridLayout.addWidget(button1, 0, 1)button2 = QPushButton("javascript", self)button2.setIcon(QIcon("javascript.png"))gridLayout.addWidget(button2, 1, 0)button3 = QPushButton("C#", self)button3.setIcon(QIcon("csharp.png"))gridLayout.addWidget(button3, 1, 1)button4 = QPushButton("Python", self)button4.setIcon(QIcon("pythonicon.png"))gridLayout.addWidget(button4, 2, 0)button5 = QPushButton("Java", self)button5.setIcon(QIcon("java.png"))gridLayout.addWidget(button5, 2, 1)self.groupBox.setLayout(gridLayout)myapp = QApplication(sys.argv)
window = Window()myapp.exec_()
sys.exit()

主窗口继承自QWidget,使用createGridLayout() 方法创建网格布局,self.show()展示窗口

class Window(QWidget):def __init__(self):super().__init__()self.setWindowTitle("Grid Layout")self.setGeometry(300,200,500,400)self.setIcon()self.createGridLayout()vbox = QVBoxLayout()vbox.addWidget(self.groupBox)self.setLayout(vbox)self.show()

创建GridLayout时,要先创建QGroupBox 这个组,然后添加六个QPushButton ,再通过self.groupBox.setLayout(gridLayout)把QGroupBox 设置到 QGridLayout  上。

def createGridLayout(self):self.groupBox = QGroupBox("Please Choose One Language")self.groupBox.setFont(QFont("Sanserif", 13))gridLayout = QGridLayout()button = QPushButton("C++", self)button.setIcon(QIcon("cpp.png"))gridLayout.addWidget(button, 0,0)button1 = QPushButton("CSS", self)button1.setIcon(QIcon("css.png"))gridLayout.addWidget(button1, 0, 1)button2 = QPushButton("javascript", self)button2.setIcon(QIcon("javascript.png"))gridLayout.addWidget(button2, 1, 0)button3 = QPushButton("C#", self)button3.setIcon(QIcon("csharp.png"))gridLayout.addWidget(button3, 1, 1)button4 = QPushButton("Python", self)button4.setIcon(QIcon("pythonicon.png"))gridLayout.addWidget(button4, 2, 0)button5 = QPushButton("Java", self)button5.setIcon(QIcon("java.png"))gridLayout.addWidget(button5, 2, 1)self.groupBox.setLayout(gridLayout)

看看运行结果:

如果不清楚其它代码含义,请参考前面课程:

Python界面编程第一课:我们开始用Pyside2 (Qt For Python)

Python界面编程第二课:Pyside2 创建窗口 (Python GUI)

Python界面编程第三课:Pyside2 (Qt For Python)给窗口加个图标

Python界面编程第四课:Pyside2 (Qt For Python)创建图标模式

Python界面编程第五课:Pyside2 (Qt For Python)怎么创建控件提示Tooltip

Python界面编程第六课:Pyside2 (Qt For Python),QPushButton按钮的信号与槽

Python界面编程第七课:Pyside2 (Qt For Python)窗口居中

Python界面编程第八课:Pyside2 (Qt For Python)打开关于窗口

Python界面编程第九课:Pyside2 (Qt For Python)创建数字时钟

Python界面编程第十课:Pyside2 (Qt For Python)创建StatusBar

Python界面编程第十一课:Pyside2 (Qt For Python)创建进度条

Python界面编程第十二课:Pyside2 (Qt For Python)布局管理QVBoxLayout 和 QHBoxLayout

Python界面编程第十三课:Pyside2 (Qt For Python)GridLayout网格布局相关推荐

  1. Python界面编程第二十一课:Pyside2 (Qt For Python)打印预览QTextEdit内容

    Pyside2 的QPrintSupport类中的QPrinter 和 QPrintPreviewDialog支持打印功能. 先看完整代码: from PySide2.QtWidgets import ...

  2. Python界面编程第十七课:Pyside2 (Qt For Python)QCompleter自动完成

    QCompleter 是什么? QCompleter可以在任何Qt控件(如QLineEdit和QComboBox)中提供自动完成功能.当用户开始输入一个单词时,QCompleter根据一个单词列表提示 ...

  3. Python界面编程第二十课:Pyside2 (Qt For Python)文本编辑框QTextEdit

    先看完整代码: from PySide2.QtWidgets import QApplication, QMainWindow, QAction, QTextEdit import sys from ...

  4. Python界面编程第八课:Pyside2 (Qt For Python)打开关于窗口

    先上代码: from PySide2.QtWidgets import QApplication, QWidget, QMessageBox, QPushButton import sys from ...

  5. Python界面编程第七课:Pyside2 (Qt For Python)窗口居中

    先上代码: from PySide2.QtWidgets import QApplication, QWidget, QDesktopWidget import sys from PySide2.Qt ...

  6. Python界面编程第十一课:Pyside2 (Qt For Python)创建进度条

    QProgressBar 是什么? 进度条用于向用户提供操作进度的指示,并提示用户应用程序仍在运行. 进度条使用了范围的概念.通过指定最小和最大值来设定范围,之后会按百分比来显示范围.百分比是通过(v ...

  7. Python界面编程第十课:Pyside2 (Qt For Python)创建StatusBar

    QStatusBar 是什么?  QStatusBar类提供了一个适合于显示状态信息的横向条幅. 状态指示分为三类: Temporary – 一般地占据了大部分的状态栏.用于解释控件提示文本或菜单项. ...

  8. Python界面编程第十九课:Pyside2 (Qt For Python)创建菜单

    先看完整代码: from PySide2.QtWidgets import QApplication,QMainWindow, QAction import sys from PySide2.QtGu ...

  9. Python界面编程第十五课:Pyside2 (Qt For Python)使用CheckBox复选框

    QCheckBox 是什么? QCheckBox 是一个开关选择按钮,有checked和unchecked两个状态. 复选框通常用于表示应用程序中可以启用或禁用而不影响其他功能的功能.可以实现不同类型 ...

最新文章

  1. Tomcat内存溢出解决方法
  2. jndi weblogic mysql_Tomcat配置JNDI数据源连接池
  3. django mysql连接超时设置_坑(一)—— Django ORM 连接超时的坑
  4. php chilkat.certstore,angularjs实现冒泡排序算法的可视化
  5. 推荐一些能能提高生产力的 Python 库
  6. Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (上)
  7. poj1741 Tree 点分治
  8. php cdi_配置CDI对话的超时
  9. n个结点,不同形态的二叉树(数目+生成)
  10. 信息学奥赛C++语言:判断正负
  11. 填错银行卡号导致放款失败?小心中招钓鱼网贷
  12. 人物结局 归德侯府_影视里的唐伯虎抱得美人归 历史上的他结局又是什么样呢?...
  13. 第十三:Pytest参数化-@pytest.mark.parametrize装饰器来实现数据驱动测试
  14. c语言 error 库,C 库函数
  15. 清除每隔5000毫秒请求一次接口的定时器(需求:每当我手动核销电子码,页面上的显示数据要实时更新到)...
  16. 安卓rom制作教程_刹那 刷机教程20-1三星S10N10等系列韩版国行安卓9升级10详细步骤...
  17. 学习笔记2 光伏MPPT算法
  18. getbook netty实战_Netty 实战(精髓)简介(Netty in Action)
  19. 随笔--你该如何利用自己的“暗时间”?
  20. MySQL中全局变量、会话变量、用户变量和局部变量的区别

热门文章

  1. 小白总结Transformer模型要点
  2. 专访孙睿 :能做自己,去做自己想做的,是件挺幸福的事儿
  3. s7200液位控制程序_s7-200 温度PID控制
  4. python二叉树中序遍历迭代法
  5. 石墨文档基于K8S的Go微服务实践(上篇)
  6. Mac GitKraken7.0以下版本无法登陆问题解决
  7. 支持M1和Intel:E3D三维模型AE插件 mac版(支持ae2022)
  8. 泼辣修图教程:如何通过Polarr Photo为照片增加云雾效果
  9. ai里为什么不能随意放大缩小_AI常见问题解答
  10. 苹果渠道变化不断,应用上架面对审核高发问题该如何解决