【问题标题】:Creating Custom PyQt5 image-button创建自定义 PyQt5 图像按钮
【发布时间】:2017-06-09 08:44:57
【问题描述】:

我正在尝试创建一个自定义 PyQt5 按钮,但在 QMainWindow 对象中显示它时遇到问题。这是我正在尝试的代码:

import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QMainWindow

class PicButton(QAbstractButton):
    def __init__(self, pixmap, parent=None):
        super(PicButton, self).__init__(parent)
        self.pixmap = pixmap

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(event.rect(), self.pixmap)

    def sizeHint(self):
        return self.pixmap.size()

class App(QMainWindow):
    def __init__(self):
        super().__init__()
        self.left = 0
        self.top = 0
        self.width = 800
        self.height = 800
        self.initUI()

    def initUI(self):
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.setAutoFillBackground(True)
        p = self.palette()
        p.setColor(self.backgroundRole(), Qt.white)
        self.setPalette(p)
        btn = PicButton('/home/user/Desktop/Untitled.png')
        btn.move(0, 0)
        btn.resize(80,80)
        self.show()


app = QApplication(sys.argv)
window = App()

如果您只使用 window = Widget() 并将按钮对象放入其中,则该按钮将起作用,如以下答案所示:how code a Image button in PyQt?

【问题讨论】:

    标签: python pyqt pyqt5 qwidget qabstractbutton


    【解决方案1】:

    根据您的代码,您必须将 QPixmap 传递给您的 PicButton,除了它们之外,如果您要移动它应该告诉您在哪里,如果您传递父级,它将相对于父级放置在那个位置,但是不会被绘制。

    要解决问题,你必须改变:

    btn = PicButton('/home/user/Desktop/Untitled.png')
    

    到:

    btn = PicButton(QPixmap('/home/user/Desktop/Untitled.png'), self)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2021-08-05
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2021-12-26
      相关资源
      最近更新 更多