widgets qt pyqt pyside qpushbutton

pyqt widgets



PySide: ¿Cómo obtener el objeto QPushButton cliqueado en la ranura en la que hizo clic QPushButton? (3)

Soy nuevo en PySide. Quiero obtener el obj de QPushButton (como usarlo para obtener su texto) en su ranura cliqueada.

button = QtGui.QPushButton("start go") button.clicked.connect(self.buttonClick) def buttonClick(self): ... # How can I get the button object? # print button.text() how to get the text : ''start go'' ?

¡Gracias!


Por lo general, la mayoría de los widgets se crearán en el código de configuración para la ventana principal. Es una buena idea agregar siempre estos widgets como atributos de la ventana principal para que se pueda acceder fácilmente más adelante:

class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None) super(MainWindow, self).__init__(parent) ... self.button = QtGui.QPushButton("start go") self.button.clicked.connect(self.buttonClick) ... def buttonClick(self): print(self.button.text())

Si tiene muchos botones que usan el mismo controlador, puede agregar los botones a un QButtonGroup y conectar el controlador a su botón . Esta señal puede enviar el botón presionado o un identificador que usted mismo especifica.

También existe la posibilidad de usar self.sender() para obtener una referencia al objeto que envió la señal. Sin embargo, esto a veces se considera una mala práctica, porque socava en primer lugar la razón principal del uso de señales (para más información, consulte las advertencias en los documentos del remitente ).


Puede usar self.sender() para determinar el objeto que inició la señal.

En su código, algo similar a esto debería funcionar.

button = QtGui.QPushButton("start go") button.clicked.connect(self.buttonClick) def buttonClick(self): print self.sender().text()


Esto es lo que hice para resolver el problema:

button = QtGui.QPushButton("start go") button.clicked.connect(lambda: self.buttonClick(button)) def buttonClick(self, button): print button.text()