0

我想在使用 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_())

怎么了?我该如何使用这个信号映射器?

4

0 回答 0