📅  最后修改于: 2023-12-03 15:03:58.484000             🧑  作者: Mango
在PyQt5中,QSpinBox是一个常用的控件,它允许用户输入数字并从中选择。当用户更改该部件中的值时,它会发出valueChanged()信号。
有时候,您可能需要知道哪个QSpinBox发出了valueChanged()信号。这可以通过获取信号的发送者和索引值来实现。本文将介绍如何获取发送者信号索引值。
以下是获取QSpinBox发送者信号索引值的步骤:
spinbox = QSpinBox()
spinbox.valueChanged.connect(self.on_value_changed)
def on_value_changed(self, value):
sender = self.sender()
index = sender.signals.index('valueChanged')
def on_value_changed(self, value):
sender = self.sender()
index = sender.signals.index('valueChanged')
print('Sender:', sender)
print('Index:', index)
下面是一个完整的示例,演示如何获取QSpinBox发送者信号索引值:
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
spinbox1 = QSpinBox()
spinbox2 = QSpinBox()
vbox = QVBoxLayout()
vbox.addWidget(spinbox1)
vbox.addWidget(spinbox2)
self.setLayout(vbox)
spinbox1.valueChanged.connect(self.on_value_changed)
spinbox2.valueChanged.connect(self.on_value_changed)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QSpinBox')
self.show()
def on_value_changed(self, value):
sender = self.sender()
index = sender.signals.index('valueChanged')
print('Sender:', sender)
print('Index:', index)
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
运行此示例后,您将看到:
在示例中,我们创建了两个QSpinBox部件并将它们连接到同一个槽函数上。当您更改任何一个QSpinBox的值时,它都会发出valueChanged()信号,然后我们可以看到它是哪一个QSpinBox部件发出信号的,并获取这个信号的索引值。