📜  PyQt5 QSpinBox - 获取发送者信号索引值(1)

📅  最后修改于: 2023-12-03 15:03:58.484000             🧑  作者: Mango

PyQt5 QSpinBox - 获取发送者信号索引值

在PyQt5中,QSpinBox是一个常用的控件,它允许用户输入数字并从中选择。当用户更改该部件中的值时,它会发出valueChanged()信号。

有时候,您可能需要知道哪个QSpinBox发出了valueChanged()信号。这可以通过获取信号的发送者和索引值来实现。本文将介绍如何获取发送者信号索引值。

步骤

以下是获取QSpinBox发送者信号索引值的步骤:

  1. 首先,我们需要创建QSpinBox部件,并将其与valueChanged()信号连接。以下是示例代码:
spinbox = QSpinBox()
spinbox.valueChanged.connect(self.on_value_changed)
  1. 然后,我们需要将on_value_changed()方法定义为槽函数,以处理valueChanged()信号。在此方法中,我们可以获取发送者和信号索引值。以下是示例代码:
def on_value_changed(self, value):
    sender = self.sender()
    index = sender.signals.index('valueChanged')
  1. 最后,我们可以在on_value_changed()方法中打印出发送者及其信号索引值,以确保我们已正确获取它们。以下是示例代码:
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部件并将它们连接到同一个槽函数上。当您更改任何一个QSpinBox的值时,它都会发出valueChanged()信号,然后我们可以看到它是哪一个QSpinBox部件发出信号的,并获取这个信号的索引值。