Я пытаюсь создать подформу для чтения файлов внутри программы. У меня есть несколько кнопок, которые в основном повторяют один и тот же процесс в разных файлах.Вызов той же функции в pyqt при нажатии любой кнопки
Кнопка вызывает функцию «loadfiles». Параметры, переданные с использованием лямбда-функции, в «loadfiles» - это строка и метка.
self.btnPts.clicked.connect(lambda: self.loadfiles("PtsFile",self.label))
self.btnIll.clicked.connect(lambda: self.loadfiles("IllFile",self.label_2))
self.btnSigIll.clicked.connect(lambda: self.loadfiles("SigIll",self.label_3))
self.btn.clicked.connect(lambda: self.loadfiles("FutureFile",self.label_4)
Есть ли способ, что я могу сгруппировать все кнопки вместе и сжать эти заявления в одно заявление (что-то похожее на события в Excel VBA).
Могу ли я добавить кнопки в список, а затем привязать к нему «clicked.connect», чтобы он вызывал мою функцию evertime.
(я начал кодирования в Python только 2 недели назад, и это мой первый раз здесь. Поэтому, пожалуйста, дайте мне знать, если информация, представленная в этом вопросе достаточно.)
Update . .
Я смог выполнить эту работу, используя частичные функции. Как я уже упоминал в моем вопросе выше, я хотел передать конкретную строку и связанный ярлык функции, когда была нажата кнопка. И я хотел сделать это менее взвешенно.
Я использовал словарь для хранения своих кнопок и используемых меток в качестве ключей. Затем я использовал цикл for для итерации через словарь.
кнопки = {self.btnPts: self.label, self.btnIll: self.label_2, self.btnSigIll: self.label_3, self.btn: self.label_4}
for button in buttons:
button.clicked.connect(partial(self.loadfiles,button.objectName(),buttons[button]))
Кредит: Я был способный проделать свой путь через этот ответ. Connecting slots and signals in PyQt4 in a loop
Так вы просто хотите иметь одну кнопку или хотите иметь несколько кнопок, которые все делают одинаково? – miindlek
Привет, у меня есть несколько кнопок. Я хочу вызвать ту же функцию. –
И что? Это сработало? – miindlek