изменение размера значков кнопок в pyqt4 - PullRequest
0 голосов
/ 16 декабря 2009

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

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

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

1 Ответ

1 голос
/ 16 декабря 2009

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), и все готово.

...