1

我正在努力通过按钮单击信号传递上下文信息。

这是一个最小的示例,它创建了一个带有多个编号按钮的小部件。单击每个按钮时,消息框应显示相应的数字。

import sys
from PySide6 import QtCore, QtWidgets, QtGui

class Gui(QtWidgets.QWidget):
    def __init__(self, parent=None, n_buttons=9):
        super(Gui, self).__init__(parent)
        self._mainLayout = QtWidgets.QVBoxLayout()
        self.setLayout(self._mainLayout)
        for n in range(n_buttons):
            btn = QtWidgets.QPushButton(str(n))
            self._mainLayout.addWidget(btn)
            btn.clicked.connect(
                lambda val=n: self.showMsg(val)
            )

    def showMsg(self, message):
        msg = QtWidgets.QMessageBox()
        msg.setText(str(message))
        msg.setStandardButtons(QtWidgets.QMessageBox.Ok)
        msg.exec()

def main():
    app = QtWidgets.QApplication([])
    view = Gui()
    view.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

相反,无论我单击哪个按钮,消息框都会显示“False”。

我已经尝试使用 lambda 函数实现信号,遵循此处的解释:https ://www.learnpyqt.com/tutorials/transmitting-extra-data-qt-signals/

感谢您的任何建议!

4

0 回答 0