Python 如何在QGridLayout中动态创建Qpushbutton?

Python 如何在QGridLayout中动态创建Qpushbutton?,python,python-3.x,pyqt,pyqt5,Python,Python 3.x,Pyqt,Pyqt5,我正试图用python(PYQT5)编写一个程序,并满足以下要求: 用户可以按下一个按钮,在屏幕上创建另一个按钮 用户决定屏幕上将显示多少个按钮 屏幕最多只能包含4列 我无法发布我的代码,因为我正试图找出如何编写此程序 这是我在GUI上找到的GUI的图片,基本上我希望我的窗口看起来像这样 我不知道如何规划以下要求: 当用户第五次按下“添加”按钮时,程序自动需要将按钮放在下一行(第2行) 你们有什么想法或方法来解决这个问题吗?获取行和列只是一个divmod import sys from

我正试图用python(PYQT5)编写一个程序,并满足以下要求:

  • 用户可以按下一个按钮,在屏幕上创建另一个按钮
  • 用户决定屏幕上将显示多少个按钮
  • 屏幕最多只能包含4列
我无法发布我的代码,因为我正试图找出如何编写此程序

这是我在GUI上找到的GUI的图片,基本上我希望我的窗口看起来像这样

我不知道如何规划以下要求:

  • 当用户第五次按下“添加”按钮时,程序自动需要将按钮放在下一行(第2行)

你们有什么想法或方法来解决这个问题吗?

获取行和列只是一个divmod

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Template(QWidget):

    def __init__(self):
        super().__init__()
        add_btn = QPushButton('Add')
        add_btn.clicked.connect(self.add_button)
        self.grid = QGridLayout(self)
        self.grid.addWidget(add_btn, 0, 0, 1, 4, Qt.AlignLeft)

    def add_button(self):
        i = self.grid.count() - 1    # Subtract 1 for add_btn
        self.grid.addWidget(QPushButton(f'{i + 1}\nok'), 1 + i // 4, i % 4) # Add 1 to row since add_btn is on first row


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


,谢谢你的回答,它是有效的。你可以再解释一下“添加按钮”方法吗?第一行是网格布局中当前按钮的数量(减去1不包括“添加”按钮)。第二行向网格布局添加一个新按钮。行计算为1+按钮计数楼层除以4,因为您需要4列,而该列是按钮计数模块4。