2014-01-25 2 views
0

Я пытаюсь создать приложение графического интерфейса, которое меняет значок правой кнопкой мыши! Это мой простой код:Значок кнопки Изменение на клике

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() 

и здесь изображение:

Link of the GUI Application

Я пытался в течение нескольких часов, но я все еще не в состоянии сделать это, какие идеи? Я хотел бы также использовать Виджет изображения вместо кнопки, метки или чего-либо, если это возможно.

Спасибо!

ответ

0

QObject::sender Чтобы получить нажатую кнопку, вы можете использовать QObject::sender.

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

Ну, это работает! Есть ли способ сделать изображение виджета кликабельным, вместо этого с помощью кнопки? –

+0

Что вы подразумеваете под изображением виджета? Вы можете получать события щелчка любого виджета (например, «QLabel», который может отображать растровые изображения), установив на него фильтр событий. То есть вызовите 'self.label.installEventFilter (self)' и реализуйте метод eventFilter вашего основного класса окна. –

Смежные вопросы