我正在努力通过按钮单击信号传递上下文信息。
这是一个最小的示例,它创建了一个带有多个编号按钮的小部件。单击每个按钮时,消息框应显示相应的数字。
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/
感谢您的任何建议!