In this article we will see how we can get the spin box object by which action was called. Suppose when more than 1 spin box are calling the same action(method), so we don’t know by which spin box action was called. In order to get the spin box by which action is called we have to track the signals emitted by the spin box as actions are called when signals are emitted.
In order to do this we use sender
method with the spin box object.
Syntax : spin_box.sender()
Argument : It takes no argument
Return : It returns QSpinBox object whose signal is emitted
Below is the implementation
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys class Window(QMainWindow): def __init__( self ): super ().__init__() # setting title self .setWindowTitle( "Python " ) # setting geometry self .setGeometry( 100 , 100 , 600 , 400 ) # calling method self .UiComponents() # showing all the widgets self .show() # method for widgets def UiComponents( self ): # creating spin box self .spin = QSpinBox( self ) # setting geometry to spin box self .spin.setGeometry( 100 , 100 , 250 , 40 ) # setting range to the spin box self .spin.setRange( 1 , 999999 ) # setting prefix to spin self .spin.setPrefix( "PREFIX " ) # setting suffix to spin self .spin.setSuffix( " SUFFIX" ) # adding action to the spin box self .spin.valueChanged.connect( self .do_something) # creating another spin box self .spin2 = QSpinBox( self ) # setting geometry self .spin2.setGeometry( 150 , 50 , 100 , 40 ) # adding same action to it self .spin2.valueChanged.connect( self .do_something) # creating a label self .label = QLabel( self ) # making label multi line self .label.setWordWrap( True ) # setting label geometry self .label.setGeometry( 100 , 200 , 250 , 60 ) def do_something( self ): # getting the sender sender = self .spin.sender() # setting text to the spin box self .label.setText( str (sender)) # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App. exec ()) |
Output :