我想在使用 clicked.connect() 按下按钮时调用一个方法。方法应该只是在单击的按钮内输出文本。
import sys
from PyQt5.QtCore import QSize, QSignalMapper
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QGridLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setMinimumSize(QSize(300, 200))
grid = QGridLayout()
buttons = []
positions = [(i,j) for i in range(10) for j in range(5)]
print('\npostions: ', positions)
for i in range(200):
buttons.append('Button '+str(i))
signalMapper = QSignalMapper(self)
i = 0
for position, buttons in zip(positions, buttons):
print('\npostion, buttons: ', position, buttons)
button = QPushButton(buttons, self)
signalMapper.setMapping(button, buttons)
button.clicked.connect(signalMapper.map)
grid.addWidget(button, *position)
signalMapper.mapped.connect(self.getResults)
print('\nsignalMapper.map:', signalMapper.map)
widget = QWidget()
widget.setLayout(grid)
self.setCentralWidget(widget)
单击按钮时应调用此方法。
def getResults(self, button):
signals = MainWindow.button.text()
print('\nsignals:\n', signals)
这是我的主要方法。
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setStyle('Fusion')
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
怎么了?我该如何使用这个信号映射器?