Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 007] PyQt5 라벨(QLabel)생성하기 - 이미지파일(PNG)출력하기 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 007] PyQt5 라벨(QLabel)생성하기 - 이미지파일(PNG)출력하기

Appia 2020. 6. 17. 06:59
반응형

파이썬[Python GUI, PyQt5 Tutorial 007] PyQt5 라벨(QLabel)생성하기 - 

이미지파일(PNG)출력하기

 

앞선 포스팅은 라벨(QLabel)에 텍스트를 출력하고 변경하는 방법에 대해서 살펴봤습니다. 그럼, 이번에는 텍스트가 이미지를 출력하는 방법에 대해서 살펴보고자 합니다. 물론 텍스트만 이용하면 매우 간단했지만, 이 부분에서는 추가적인 메소드와 QPixmap 클래스가 별도로 사용이 됩니다. 먼저, 다음 코드를 살펴보겠습니다. 

<example>

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
 
from PyQt5.QtGui import QPixmap
 
 
class QtGUI(QWidget):
 
    def __init__(self):
    
        super().__init__()
        
        self.setWindowTitle("Appia Qt GUI")
        
        self.resize(700700)
 
 
        #라벨 생성
        
        label1 = QLabel(self)
        
        label1.move(10,10)
 
 
        #이미지 관련 클래스 생성 및 이미지 불러오기 
        
        pixmap = QPixmap('D:\Image\i2.png')
    
    
        #이미지 관련 클래스와 라벨 연결 
        label1.setPixmap(pixmap)
 
        self.show()
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
    
    ex = QtGUI()
    
    app.exec_()
cs

 

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. 

 

이미지을 라벨에 출력하는 예제 실행 결과 

그럼 위의 코드를 간단히 살펴보겠습니다. 

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
 
from PyQt5.QtGui import QPixmap
cs

앞선 포스팅에서 사용했던 모듈에 클래스 외에도 PyQt5.QtGui에서 QPixmap을 통해서 이미지를 불러올 수 있게 합니다. 

 

        #라벨 생성
        
        label1 = QLabel(self)
        
        label1.move(10,10)
 
 
        #이미지 관련 클래스 생성 및 이미지 불러오기 
        
        pixmap = QPixmap('D:\Image\i2.png')
    
    
        #이미지 관련 클래스와 라벨 연결 
 
        label1.setPixmap(pixmap)
 
        self.show()
cs

 

위에서 순서와 같이 먼저, 라벨(QLabel)을 생성하고, QPixmap을 통해서 이미지를 불러옵니다. 그런 후에 이 부분을 라벨에 연결합니다. 

 

그럼, 위에서 몇가지를 추가하여 조금 더 효율적으로 보이도록 해보겠습니다. 먼저, 위에서는 위젯의 크기를 지정하고, 거기에 사이즈를 맞추는 형태였습니다. 그럼 이번에는 그림에 사이즈 맞게 자동으로 위젯을 조정되도록 하겠습니다. 

 

위에 코드에서 먼저 다음 부분을 삭제하겠습니다. 

self.resize(700700)
cs

 

그런 후에 Class QtGUI 부분을 다음과 같이 수정하겠습니다. 

>class QtGUI(QWidget):
 
    def __init__(self):
    
        super().__init__()
        
        self.setWindowTitle("Appia Qt GUI")
 
 
        #라벨 생성
        
        label1 = QLabel(self)
        
        label1.move(10,10)
        
 
        #이미지 관련 클래스 생성 및 이미지 불러오기
        
        pixmap = QPixmap('D:\Image\i2.png')
 
 
        #이미지 관련 클래스와 라벨 연결
        
        label1.setPixmap(pixmap)
 
        self.resize(pixmap.width()+20,pixmap.height()+20)
 
        self.show()
cs

위의 코드에서 보이는 부분은 기존 코드와 크게 차이는 없지만, 앞서서 말한 resize부분을 삭제했고, 다음과 같은 부분을 추가하였습니다. 

self.resize(pixmap.width()+20,pixmap.height()+20)
cs

원래라면 pixmap.width(), pixmap.height()를 그대로 사용해도 되지만, 처음에 라벨을 10씩 이동한 점도 있고, 각각의 마진을 두는 것이 좋을 것 같아서 다음과 같이 +20을 추가하였습니다.

 

그럼, 결과를 한번 살펴보겠습니다.  

이미지을 라벨에 출력하는 개선 코드를 실행한 결과 

최초에 실행했던 코드의 결과에 비해서 상당히 많이 깔끔해진 느낌입니다. 이와 같은 방법으로 사용해도 도움이 될 것 같습니다. 이번에는 그림의 크기를 1/2로 줄여보도록 하겠습니다. 

        #이미지 관련 클래스 생성 및 이미지 불러오기
        
        pixmap = QPixmap('D:\Image\i2.png')
 
        pixmap =pixmap.scaled(int(pixmap.width()/2),int(pixmap.height()/2))
cs

위의 부분에서 pixmap.scaled(pixmap.width()/2,pixmap.height()/2)이 부분을 통해서 기존에 크기에서 2배로 줄이도록 합니다. 단 반드시 이를 통해서 기존 pixmap 또는 별도의 변수를 생성하여 할당 해주셔야 합니다. 그럼 위의 부분을 수정하여 실행한 결과는 다음과 같습니다. 

이번 포스팅은 파이썬[Python GUI, PyQt5 Tutorial 007] PyQt5 라벨(QLabel)생성하기 - 이미지파일(PNG)출력하기 라는 주제로 라벨에 이미지를 불려와 출력하는 부분에 대해서 살펴봤습니다. 

 

궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글을 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments