Python PyQt5:图像无法加载

时间:2016-10-30 14:57:43

标签: python image pyqt5 pixmap

我想加载图片如果我点击一个按钮,但只显示图像的一个小像素。

看起来像是:

enter image description here

class MyWindow(QWidget):
    def __init__(self):
        super().__init__() 
        self.resize(1000, 1000)
        self.setWindowTitle("MyWindow")
        self.setWindowIcon(QIcon("myIcon.ico"))
        self.setMaximumSize(width, height)
        self.setMinimumSize(1000, 1000)

        self.canvas = QGroupBox(self)
        self.canvas.setStyleSheet("QGroupBox { border: 1px solid #9F9B9B}")
        self.canvas.move(350, 30)
        self.canvas.resize(210, 220)

        self.bImage = QPushButton("Load Image", self)
        self.bImage.move(150, 207)
        self.bImage.clicked.connect(self.openImage)

        self.show()      

    def openImage(self):                    
        self.label = QLabel(self)
        self.preview = QPixmap("image.png")
        self.label.setPixmap(self.preview)
        self.label.move(350, 30)     

但奇怪的是,如果我将openImage()函数中的代码放入 init ()函数的第一行,图像将完全显示。

如何通过openImage()函数加载整个图像?

1 个答案:

答案 0 :(得分:1)

尝试使用绝对值定位窗口小部件通常是个坏主意。您应该始终尽可能使用布局。图像未显示的原因是您将标签移动到后面的位置组框。相反,您应该将标签放在里面的组框中:

class MyWindow(QtGui.QWidget):
    def __init__(self):
        ...
        self.canvas = QtGui.QGroupBox(self)
        ...
        self.label = QtGui.QLabel(self)

        layout = QtGui.QVBoxLayout(self.canvas)
        layout.addWidget(self.label)
        ...    

    def openImage(self):
        self.preview = QtGui.QPixmap("image.png")
        self.label.setPixmap(self.preview)