将上下文信息传递给 PySide6 中的插槽

问题描述

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

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

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/

感谢您的建议!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)