오늘해본것은 PyQt에서 QPushButton을 클릭했을때 이미지를 띄우는프로그램을 만들어 보겠습니다.

 

일단 명령프롬프트 (CMD)창에 pip를 이용해 설치해야합니다.

pip install numpy
pip install matplotlib
pip install opencv-python
pip install opencv-contrib-python
pip install opencv-python-headless

를 설치해주어야 합니다.

설치가 완료되었다면 

import cv2

를 해주시면 됩니다.

import sys
import cv2
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Main(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 조직도 버튼
        btn3 = QPushButton('GPIO Pin View')
        btn3.setToolTip('GPIO조직도')
        btn3.clicked.connect(self.GPIO)

        hbox = QHBoxLayout()
        hbox.addWidget(btn3)

        self.setLayout(hbox)
        # 타이틀
        self.setWindowIcon(QIcon('raspberry.png'))
        self.setWindowTitle('raspberry')
        #창 크기,좌표
        self.setGeometry(1000, 150, 300, 200)
        self.show()

    def GPIO(self):
        img = cv2.imread('rasp.png');  # 이미지 불러오기
        cv2.imshow("GPIO PIN", img);  # 이미지 보여주기 (윈도우창 이름, 불러온 이미지)

        k = cv2.waitKey(0)  # 키보드 눌림 대기
        if k == 27:  # ESC키
            cv2.destroyAllWindows();
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Main()
    sys.exit(app.exec_())

전체 소스코드입니다.

 

이미지는 제가 하던프로젝트에서 사용하던 라즈베리파이GPIO핀을 연결해준 이미지를 가져왔습니다.

실행시화면입니다.

버튼을 눌렀을떄 나오는 화면입니다.

눌렀을때 나오는 창의 크기는 이미지의 크기와 동일합니다.

기능 설명

1. 버튼 클릭시 QDialog를 띄운다.

2. QDialog에서 선택한 파일(txt, c, cpp되는것 확인)의 내용을 가져와서 띄움

 

소스코드

from PyQt5.QtWidgets import QWidget, QPushButton, QFileDialog, QApplication, QLabel, QTextEdit, QVBoxLayout
import sys

class Main(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        #불러오기 버튼
        btn1 = QPushButton('불러오기')
        btn1.clicked.connect(self.load_btn)

        lbl1 = QLabel('Text')
        #불러온 텍스트를 표시할 창
        self.te = QTextEdit()

        vbox = QVBoxLayout() #세로로정령
        vbox.addWidget(btn1)
        vbox.addWidget(lbl1)
        vbox.addWidget(self.te)


        self.setGeometry(1000, 150, 800, 700)
        self.setWindowTitle('TxTLoad')
        self.setLayout(vbox)
        self.show()

    def load_btn(self):
        fname = QFileDialog.getOpenFileName(self, './')

        if fname[0]:
            f = open(fname[0], 'r')

            with f:
                data = f.read()
                self.te.clear()
                self.te.setPlainText(data)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Main()
    sys.exit(app.exec_())

코드 설명

불러오기 버튼을 누르면 

이렇게 QFileDialog가 뜨는데 txt파일을 선택하면

이런식으로 안에있던 내용이 불러와지는것을 확인할 수 있습니다.

제가 해봤을땐 txt, c, cpp파일들은 텍스트가 불러와진것으로 확인했습니다

+ Recent posts