23.03.13 Day30

오윤범·2023년 3월 13일
0
post-custom-banner

QRCode 만들기

1) pip install qrcode

import qrcode
qr_data = 'https://www.python.org'
qr_img=qrcode.make(qr_data)

qr_img.save('./Python_practice/site.png')

QR 인식 시 www.python.org 로 이동

QrCode 생성 APP

Qt Designer 을 사용하여 UI 디자인

# PyQT와 QR을 활용한 앱
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import * #Qt.white 사용하기 위함
import qrcode #qr코드 사용

# QRCode 커스터마이징 클래스
class Image(qrcode.image.base.BaseImage):
    def __init__(self, border, width, box_size) -> None:
        self.border=border
        self.width=width
        self.box_size=box_size
        # size 생성
        size = (width+border*2) * box_size

        self._image = QImage(size,size,QImage.Format_RGB8)
        self._image.fill(Qt.white)

    def pixmap(self):
        return QPixmap.fromImage(self._image)

class qtApp(QWidget):
    def __init__(self):
        super().__init__()
        uic.loadUi('./Python_practice/QrCodeApp.ui',self) #Qt Designer로 만든 ui 사용
        self.setWindowTitle('QrCode 생성앱')
        self.setWindowIcon(QIcon('./Python_practice/qrIcon.png'))

        # 시그널/슬롯
        self.btnQrGen.clicked.connect(self.btnQrGenClicked)
        # 엔터 쳤을때 만들어지게 하기
        self.txtQrData.returnPressed.connect(self.btnQrGenClicked)

    #QR생성하기 버튼 클릭 함수
    def btnQrGenClicked(self):
        data = self.txtQrData.text()

        if data=='': 
            QMessageBox.warning(self,'경고','데이터를 입력하세요') 
            return
        else : 
            qr_img=qrcode.make(data)
            qr_img.save('./Python_practice/site.png')

            img=QPixmap('./Python_practice/site.png')
            self.lblQrCode.setPixmap(QPixmap(img).scaledToWidth(300))



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

QR 링크 연결 시 작성한 url로 연결됨

내 컴퓨터 정보 출력 앱

Qt Designer을 사용하여 UI 디자인

# 컴퓨터 정보 출력 앱 
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import * 
>
import psutil
import socket
import requests
import re
>
class qtApp(QWidget):
    def __init__(self):
        super().__init__()
        uic.loadUi('./Python_practice/comInfo.ui',self) #Qt Designer로 만든 ui 사용
        self.setWindowTitle('내 컴퓨터 정보')
        self.setWindowIcon(QIcon('./Python_practice/cominfo.png'))
>
        self.initInfo()
        #새로고침 버튼
        self.btnRefresh.clicked.connect(self.btnRefreshClicked)
    >
    def btnRefreshClicked(self):
        self.initInfo()
>
    def initInfo(self):
        cpu=psutil.cpu_freq()
        cpu_ghz=round(cpu.current / 1000, 2) # 1000으로 나누고 두번째 자리에서 반올림
        self.lblCPU.setText(f'{cpu_ghz:.2f} GHz')
>
        core=psutil.cpu_count(logical=False)
        logical=psutil.cpu_count(logical=True)
        self.lblCore.setText(f'{core} 개 / 논리프로세서 {logical} 개')
>
        memory=psutil.virtual_memory()
        mem_total=round(memory.total / 1024**3)
        self.lblMemory.setText(f'{mem_total} GB')
>
        disks=psutil.disk_partitions()
        for disk in disks:
            if disk.fstype == 'NTFS':
                du = psutil.disk_usage(disk.mountpoint)
                du_total = round(du.total / 1024**3)
                msg=f'{disk.mountpoint} {disk.fstype} - {du_total} GB'
>
                self.lblDisk.setText(msg)
                break
        >
        in_addr = socket.socket(socket.AF_INET , socket.SOCK_STREAM)
        in_addr.connect(('www.google.com',443))
        self.lblInnerNet.setText(in_addr.getsockname()[0])
>
        req = requests.get('http://ipconfig.kr')
        out_addr=req.text[req.text.find('<font color=red>')+17:req.text.find('</font><br>')]
        self.lblExtraNet.setText(out_addr)
>
        net_stat = psutil.net_io_counters()
        sent=round(net_stat.bytes_sent / 1024 **2 ,1)
        recv=round(net_stat.bytes_sent / 1024 **2 ,1)
        self.lblNetStat.setText(f'송신 - {sent} MB / 수신 - {recv} MB')
>
if __name__=='__main__':
    app=QApplication(sys.argv)
    ex=qtApp()
    ex.show()
    sys.exit(app.exec_())

post-custom-banner

0개의 댓글