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...

Código:
import sys
import pyodbc
from PyQt5 import uic
from PyQt5.QtWidgets import QMainWindow, QApplication

class GUI_tareas(QMainWindow):
    def __init__(self):
        super().__init__()
        uic.loadUi("GUI_tareas.ui", self)
        self.boton_actualizar_1.clicked.connect(self.fn_actualizar)#QUIERO PASAR n=1
        self.boton_actualizar_2.clicked.connect(self.fn_actualizar)#QUIERO PASAR n=2

    def fn_actualizar(self):
  
        print(n)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    GUI = GUI_tareas()
    GUI.show()
    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():

Código:
import sys
import pyodbc
from functools import partial
from PyQt5 import uic
from PyQt5.QtWidgets import QMainWindow, QApplication

class GUI_tareas(QMainWindow):
    def __init__(self):
        super().__init__()
        uic.loadUi("GUI_tareas.ui", self)
        self.boton_actualizar_1.clicked.connect(partial(self.fn_actualizar, 1))
        self.boton_actualizar_2.clicked.connect(partial(self.fn_actualizar, 2))

    def fn_actualizar(self, n):
        print(n)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    GUI = GUI_tareas()
    GUI.show()
    sys.exit(app.exec_())

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

Eres un crack!!
Me alegro! De nada Wink