2009-12-16 6 views
0

Je veux faire l'image dans mon QMainWindow donc quand vous cliquez dessus vous avez un signal traduisant comme qpushbutton J'utilise ceci:redimensionnement des icônes dans pyqt4

self.quit=QtGui.QPushButton(self) 
self.quit.setIcon(QtGui.QIcon('images/9.bmp')) 

Mais le problème est whene redimensionner la fenêtre qpushbutton redimensionné aussi mais pas son icône,

Répondre

1

Qt ne va pas étirer votre image pour vous - et c'est le meilleur de cette façon. Je recommande de garder le bouton poussoir d'une taille constante en ajoutant des rallonges à la mise en page qui le tient. Un bouton poussoir redimensionnable n'est pas très attrayant visuellement, et est rare dans les interfaces graphiques, de toute façon.

Pour faire une image cliquable, voici le code plus simple que je peux penser à:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 


class ImageLabel(QLabel): 
    def __init__(self, image, parent=None): 
     super(ImageLabel, self).__init__(parent) 
     self.setPixmap(image) 

    def mousePressEvent(self, event): 
     print 'I was pressed'  


class AppForm(QMainWindow): 
    def __init__(self, parent=None): 
     QMainWindow.__init__(self, parent) 

     self.create_main_frame()  

    def create_main_frame(self): 
     name_label = QLabel("Here's a clickable image:") 
     img_label = ImageLabel(QPixmap('image.png')) 

     vbox = QVBoxLayout() 
     vbox.addWidget(name_label) 
     vbox.addWidget(img_label) 

     main_frame = QWidget() 
     main_frame.setLayout(vbox) 
     self.setCentralWidget(main_frame) 


if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    form = AppForm() 
    form.show() 
    app.exec_() 

Il suffit de remplacer image.png avec votre nom de fichier d'image (format acceptable par QPixmap) et vous êtes fixés.

+0

remercier M. eliben; mais ce n'est pas ce que je veux créer une image cliquable avec fonction connect() que vous pouvez envoyer un signal à un slot (cet emplacement change l'image) thx – brou1986