본문 바로가기
GUI 프로젝트/저울 연결하기 (시리얼통신) (Tkinter)

[파이썬 저울 연결] 12. GUI 만들기 #5. exe 만들어보기(컴파일)

by 만다린망고 2022. 1. 12.
반응형

지난시간까지 만든 코드는 아래와 같다. 

 

import tkinter as tk
from numpy import product

#윈도우 생성
root=tk.Tk()

#전체 이름
root.title('무게를 이용한 검수')


#창 크기 +붙은 부분은 좌상단 떨어진 위치
root.geometry("600x400+100+100")

#창 크기 조절 가능 여부 (디폴트 True)
root.resizable(True,True)


lab00=tk.Label(root,text="현재 무게",
font=('Arial 32 bold'),bg='black',fg="red",width=8,height=1)

lab00.grid(row=0,column=0,padx=10)

#######################################
import serial
import re

ser = serial.Serial(port='COM8', baudrate=9600, bytesize=serial.EIGHTBITS,
                    parity=serial.PARITY_NONE, timeout=None)

while(True):
    ser.close()
    ser.open()
    #값 불러오기
    res=ser.readline()
    #문자열로 변환
    res=str(res)
    #숫자 부분 추출, 추출 결과는 ['숫자'] 형태
    res=re.findall("\d+.\d+",res)
    #문자열 추출

    if len(res)==0 :
        res="set0"
    else :
        res=res[0]
        #실수로 변환
        res=float(res)

    #제품 별 무게
    if 36 <= res <=38 :
        company="AMOS"
        product="Glue_Stick"
        mycol="orange"
    elif 7 <= res <= 8 : 
        company="Monami"
        product="Name_Pan"
        mycol="blue"
    elif 5 <= res <= 6 : 
        company="Monami"
        product="Ball_pan"
        mycol="gray"
    else :
        company="NA"
        product="NA"
        mycol="black"

    #Fixed Label
    lab10=tk.Label(root,text="회사",font=('Arial 32 bold'),bg='black',fg="red",width=8)
    lab10.grid(row=1,column=0,padx=10,pady=20)

    lab20=tk.Label(root,text="제품명",font=('Arial 32 bold'),bg='black',fg="red",width=8)
    lab20.grid(row=2,column=0,padx=10,pady=20)

    #Non-Fixed Label
    lab01=tk.Label(root,text=res,font=('Arial 32 bold'),bg="white",fg='black',width=8)
    lab01.grid(row=0,column=1,padx=10,pady=20) #이렇게 .grid 따로 입력 해야 .destroy() 명령어 적용가능

    lab11=tk.Label(root,text=company,font=('Arial 32 bold'),bg='white',fg=mycol,width=8)
    lab11.grid(row=1,column=1,padx=10,pady=20)

    lab21=tk.Label(root,text=product,font=('Arial 32 bold'),bg='white',fg=mycol,width=12)
    lab21.grid(row=2,column=1,padx=10,pady=10)

    root.update() 

    lab01.destroy()

root.mainloop()

 

GUI 만든김에 exe 파일로도 만들어보고싶어서 찾아봤다. 먼저 주의사항 하나! 이것 때문에 시간을 꽤 썼는데, 내 경우는 경로에 한글이 있으면 계속 실패했다. 또 root.mainloop() 가 마지막줄에 있어야 한다. root 는 tk.TK() 로 생성된 윈도우다. 각자가 정한 이름일 거다. 

 

모든 작업은 cmd 창에서 한다. 단축키는 윈도우+R 누른 뒤에 나오는 실행창에 cmd 입력하면 된다. 

 

먼저 cmd 창에서 pyinstaller 패키지를 설치한다. 

 

pip install pyinstaller

 

이제 우리가 exe 로 만들고 싶어하는 py 파일이 있는 폴더로 이동한다. 아래와 같이 하면된다. 

 

cd 경로

 

만약 다른 드라이브에 있다면 먼저 해당 드라이브로 이동해야 하는데, E드라이브를 예로 들면 E: 라고 입력하면 된다. 

 

경로로 이동했으면 아래 명령어를 입력한다. 내 파일 이름이 tkinter_ex 인거고, 본인 파일 입력해야 한다. 

 

pyinstaller tkinter_ex.py

 

꽤 기다리면 아래와 같이 완료되었다고 알려준다. 

 

 

같은 경로에 아래 세 폴더가 생성된다. 

 

 

exe 파일은 dist에 들어있다. 

 

 

뭐가 엄청 많다. 실행 잘 되고, 까만 창이 같이 뜬다. 

 

 

까만창 없애는 법과, 뭐가 많이 안생기게 하는 법은 다음시간에. 

반응형

댓글