Foros Python

Versión completa: PyQt5, pasar variable a una def desde button
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola cracks,
Sé que tiene que ser algo básico que se me escapa pero soy incapaz de pasar una variable n a una función que está relacionada con un QButton...

  1. import sys
  2. import pyodbc
  3. from PyQt5 import uic
  4. from PyQt5.QtWidgets import QMainWindow, QApplication
  5.  
  6. class GUI_tareas(QMainWindow):
  7.     def __init__(self):
  8.         super().__init__()
  9.         uic.loadUi("GUI_tareas.ui", self)
  10.         self.boton_actualizar_1.clicked.connect(self.fn_actualizar)#QUIERO PASAR n=1
  11.         self.boton_actualizar_2.clicked.connect(self.fn_actualizar)#QUIERO PASAR n=2
  12.  
  13.     def fn_actualizar(self):
  14.   
  15.         print(n)
  16.  
  17. if __name__ == '__main__':
  18.     app = QApplication(sys.argv)
  19.     GUI = GUI_tareas()
  20.     GUI.show()
  21.     sys.exit(app.exec_())


He probado con fn_actualizar(self, n) y etc pero con diferentes combinaciones siempre me da error...

Gracias de antemano!!!
Hola, lo podés hacer con la función estándar functools.partial():

  1. import sys
  2. import pyodbc
  3. from functools import partial
  4. from PyQt5 import uic
  5. from PyQt5.QtWidgets import QMainWindow, QApplication
  6.  
  7. class GUI_tareas(QMainWindow):
  8. def __init__(self):
  9. super().__init__()
  10. uic.loadUi("GUI_tareas.ui", self)
  11. self.boton_actualizar_1.clicked.connect(partial(self.fn_actualizar, 1))
  12. self.boton_actualizar_2.clicked.connect(partial(self.fn_actualizar, 2))
  13.  
  14. def fn_actualizar(self, n):
  15. print(n)
  16.  
  17. if __name__ == '__main__':
  18. app = QApplication(sys.argv)
  19. GUI = GUI_tareas()
  20. GUI.show()
  21. sys.exit(app.exec_())


Saludos!
Muchas Gracias Francisco!!!!!
Lo he incorporado y va de cine!!!!

Eres un crack!!
Me alegro! De nada Wink