PyQt4中按钮图标的调整大小

0 投票
1 回答
2799 浏览
提问于 2025-04-15 17:06

我想在我的 QMainWindow 里放一张图片,这样当你点击这张图片的时候,就会像点击 qpushbutton 一样发出一个信号。我用的是这个:

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

但是问题是,当我调整窗口大小的时候,qpushbutton 会跟着变大变小,但它的图标却不会。

1 个回答

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支持的格式),就可以了。

撰写回答