创建自定义 PyQt5 图像按钮
Creating Custom PyQt5 image-button
我正在尝试创建一个自定义 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?
根据你的代码,你必须将一个 QPixmap 传递给你的 PicButton,除了它们之外,如果你要移动它应该告诉你在哪里,如果你传递父级,它将放置在相对于父级的那个位置, 但不会绘制。
要解决问题,您必须更改:
btn = PicButton('/home/user/Desktop/Untitled.png')
至:
btn = PicButton(QPixmap('/home/user/Desktop/Untitled.png'), self)
我正在尝试创建一个自定义 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?
根据你的代码,你必须将一个 QPixmap 传递给你的 PicButton,除了它们之外,如果你要移动它应该告诉你在哪里,如果你传递父级,它将放置在相对于父级的那个位置, 但不会绘制。
要解决问题,您必须更改:
btn = PicButton('/home/user/Desktop/Untitled.png')
至:
btn = PicButton(QPixmap('/home/user/Desktop/Untitled.png'), self)