Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
PyQt5, pasar variable a una def desde button
#1
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!!!
Responder
#2
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!
Responder
#3
Muchas Gracias Francisco!!!!!
Lo he incorporado y va de cine!!!!

Eres un crack!!
Responder
#4
Me alegro! De nada Wink
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)