Python 如何在QGridLayout中动态创建Qpushbutton?
我正试图用python(PYQT5)编写一个程序,并满足以下要求: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
- 用户可以按下一个按钮,在屏幕上创建另一个按钮
- 用户决定屏幕上将显示多少个按钮
- 屏幕最多只能包含4列
- 当用户第五次按下“添加”按钮时,程序自动需要将按钮放在下一行(第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。