Qt 单击按钮图标即可更改

Qt 单击按钮图标即可更改,qt,button,user-interface,pyside,python-3.3,Qt,Button,User Interface,Pyside,Python 3.3,我正在尝试制作一个GUI应用程序,用于更改右键单击按钮上的图标! 这是我的简单代码: import sys from PySide.QtCore import * from PySide.QtGui import * class Ui_MainWindow(QMainWindow): def __init__(self): super().__init__() self.setupUi() def setupUi(self):

我正在尝试制作一个GUI应用程序,用于更改右键单击按钮上的图标! 这是我的简单代码:

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class Ui_MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi()

    def setupUi(self):
        widget = QWidget()
        layout = QGridLayout()
        self.buttons = list()

        for x in range(3):
            row = list()
            for y in range(3):
                button = QPushButton(QIcon('Empty-Cell.png'), '{},{}'.format(x, y))
                button.clicked.connect(self.button_click)
                row.append(button)
                layout.addWidget(button, x, y)
            self.buttons.append(row)

        widget.setLayout(layout)
        self.setCentralWidget(widget)

    def button_click(self):
        # Change icon HERE!

def main():
    app = QApplication(sys.argv)
    ui = Ui_MainWindow()
    ui.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()
这里是图像:

我已经试了好几个小时了,但我还是做不到,有什么想法吗? 如果可能的话,我还想使用图像小部件,而不是按钮、标签或其他东西


谢谢大家!

您可以使用
QObject::sender
获取单击的按钮

def button_click(self):
    test_pixmap = QPixmap(16, 16)
    test_pixmap.fill(Qt.red)
    self.sender().setIcon(QIcon(test_pixmap))

好吧,它起作用了!有没有办法让小部件图像可以点击,而不是使用按钮?你说的小部件图像是什么意思?通过在任何小部件上安装事件过滤器,您可以获取该小部件的单击事件(例如,可以显示pixmap的
QLabel
)。即调用
self.label.installEventFilter(self)
并实现主窗口类的
eventFilter
方法。