изменение размера значков кнопок в pyqt4

Я хочу сделать изображение в своем QMainWindow, поэтому, когда вы нажимаете на него, у вас появляется сигнал, переводящийся как qpushbutton. Я использую это:

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

Но проблема в том, что когда я изменяю размер окна qpushbutton, размер тоже изменяется, но не его значок,


person brou1986    schedule 16.12.2009    source источник


Ответы (1)


Qt не будет растягивать ваш образ за вас — и так будет лучше всего. Я рекомендую сохранить кнопку постоянного размера, добавив в макет растяжки, удерживающие ее. Кнопка с изменяемым размером визуально не очень привлекательна, и в любом случае она редко встречается в графических интерфейсах.

Чтобы сделать кликабельное изображение, вот самый простой код, который я могу придумать:

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

Просто замените image.png на имя файла изображения (допустимый формат QPixmap), и все готово.

person Eli Bendersky    schedule 16.12.2009
comment
поблагодарить мистера Элибена; но это не то, что я хочу создать кликабельное изображение с функцией подключения (), чтобы вы могли отправить сигнал в один слот (этот слот меняет изображение), спасибо - person brou1986; 16.12.2009