2017-06-09 2 views
0

私はカスタムPyQt5ボタンを作成しようとしていますが、それをQMainWindowオブジェクトに表示する際に問題が発生しています。ここで私がしようとしているコードです:カスタムPyQt5イメージボタンの作成

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?

答えて

0

あなたのPicButtonへのQPixmap、あなたがそれを移動しようとしている場合は、あなたが親を渡す場合は、それは父親に相対的な位置に配置されますが、描かれない場所を教えてください。

問題を解決するには、変更する必要があります。

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

へ:

btn = PicButton(QPixmap('/home/user/Desktop/Untitled.png'), self) 
関連する問題