PyQt网格布局(QGridLayout示例)

最常用的布局类是网格布局,此布局将空间划分为行和列。

它是框布局和默认窗口小部件放置的替代方法。

要创建网格布局,我们使用class QGridLayout。网格布局是一个均匀划分的区域,您可以在其中向每个单元格添加小部件。

 

QGridLayout示例

下面的示例将网格添加到PyQt窗口中,它具有几行和几列。

python pyqt网格布局qgridlayout

我们使用for循环来设置网格值,其中的内容在数组名称中。

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

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):   
        grid = QGridLayout()  
        self.setLayout(grid)

        names = ['Cls', 'Bck', '', 'Close', 
        '7', '8', '9', '/',
        '4', '5', '6', '*',
        '1', '2', '3', '-',
        '0', '.', '=', '+',]

        positions = [(i, j) for i in range(5) for j in range(4)]

        for position, name in zip(positions, names):
         if name == '':
          continue
         button = QPushButton(name)
         grid.addWidget(button, *position)

        self.move(300, 150)
        self.setWindowTitle('PyQt window')  
        self.show()

if __name__ == '__main__':
     app = QApplication(sys.argv)
     ex = Example()
     sys.exit(app.exec_())    

在我们的示例中,我们将创建的按钮控件放在网格中。

grid = QGridLayout()  
self.setLayout(grid)

实例化QGridLayout并设置应用程序窗口的布局。

names = ['Cls', 'Bck', '', 'Close', 
 '7', '8', '9', '/',
 '4', '5', '6', '*',
 '1', '2', '3', '-',
 '0', '.' , '=', '+',]

这是稍后使用的按钮标签。

positions = [(i, j) for i in range(5) for j in range(4)]

我们创建了一个网格位置列表。

for position, name in zip(positions, names):
   if name == '':
       continue

   button = QPushButton(name)
   grid.addWidget(button, *position)

创建一个按钮,然后将(addWidget)添加到布局中。

标签

发表评论