geekdoc-python-zh/docs/pythonbasics/094.md

1.7 KiB
Raw Permalink Blame History

PyQt 网格

原文: https://pythonbasics.org/PyQt-grid/

PyQt QGridLayout是另一种布局。通常,您可以使用.move(x, y)来定位小部件(按钮,标签等)。 网格不是这样。

它以 AxB 形式放置小部件。 其中A 是列数B 是行数。 与您在 Excel 中看到的类似。

QGridLayoutPyQt5.QtWidgets的一部分。

示例

QGridLayout

您可以使用单行代码创建QGridLayout或网格:

grid = QGridLayout()

告诉窗口使用网格:

win.setLayout(grid)

可以使用以下工具将小部件添加到网格:

grid.addWidget(widget,col,row)

pyqt grid

网格示例

下面的代码创建一个包含一组按钮的布局。 它通过使用嵌套的 for 循环添加一组按钮。

创建网格的关键部分是:

grid = QGridLayout()

for i in range(0,5):
   for j in range(0,5):
       grid.addWidget(QPushButton(str(i)+str(j)),i,j)

win.setLayout(grid)

其余代码仅创建窗口。 但是复制和粘贴很容易。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

def window():
   app = QApplication(sys.argv)
   win = QWidget()
   grid = QGridLayout()

   for i in range(0,5):
      for j in range(0,5):
         grid.addWidget(QPushButton(str(i)+str(j)),i,j)

   win.setLayout(grid)
   win.setWindowTitle("PyQt Grid Example")
   win.setGeometry(50,50,200,200)
   win.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   window()

下载示例