2016-10-30 6 views
0

Я хочу загрузить изображение. Если я нажму кнопку, но появится только маленький крошечный пиксель изображения.Python PyQt5: Изображение не загружается

Похоже, что:

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() в первых строках инициализации() Funtion изображение будет полностью отображается.

Что мне нужно сделать, чтобы загрузить все изображение с помощью функции openImage()?

ответ

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^