Я не могу заставить функцию hello выполняться при нажатии любой кнопки.
Так как же я могу подключить QPushButton (s) comboList [] к различным экземплярам метода hello, принадлежащимпроверить объекты в tst [], чтобы функция hello () могла запускаться для разных параметров t?
И, как мы не можем передать аргументы в функцию, используя метод connect () класса QpushButton. Какие могут быть обходные пути для достижения этого (запуск одной и той же функции для разных параметров с использованием множества кнопок), кроме этой реализации с использованием классов?
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QWidget, QScrollArea, QVBoxLayout, QGroupBox, QLabel, QPushButton, QFormLayout
import sys
class test:
def __init__(self, t):
self.to = t
def hello(self):
print('hello',str(self.to))
class Window(QWidget):
def __init__(self, val):
super().__init__()
self.title = "PyQt5 Scroll Bar"
self.top = 200
self.left = 500
self.width = 400
self.height = 300
self.setWindowIcon(QtGui.QIcon("icon.png"))
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
formLayout =QFormLayout()
groupBox = QGroupBox("This Is Group Box")
labelList = []
comboList = []
tst = []
for i in range(val):
labelList.append(QLabel("Label"))
comboList.append(QPushButton(str(i)))
tst.append(test(i))
formLayout.addRow(labelList[i], comboList[i])
comboList[i].clicked.connect(tst[i].hello)# Connect here
groupBox.setLayout(formLayout)
scroll = QScrollArea()
scroll.setWidget(groupBox)
scroll.setWidgetResizable(True)
layout = QVBoxLayout(self)
layout.addWidget(scroll)
self.show()
App = QApplication(sys.argv)
window = Window(1500)
sys.exit(App.exec())