2016-10-30 11 views
0

Ich möchte ein Bild laden Wenn ich auf eine Schaltfläche klicke, erscheint nur ein kleines Pixel des Bildes.Python PyQt5: Bild lädt nicht

Es sieht wie folgt aus:

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)  

Aber Seltsamer, wenn ich den Code aus dem Openimage() Funktion in den ersten Zeilen des init() funtion platzieren wird das Bild vollständig angezeigt.

Was soll ich tun, um das gesamte Bild mit der Funktion openImage() zu laden?

Antwort

1

Es ist generell eine schlechte Idee, Widgets mit absoluten Werten zu positionieren. Sie sollten immer Layouts verwenden, wann immer dies möglich ist. Der Grund, warum das Bild nicht angezeigt wird, liegt darin, dass Sie das Label an eine Position hinter der Gruppen-Box verschieben. Stattdessen sollten Sie das Etikett in ein Layout innerhalb der Gruppen-Box:

10 setzen