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

[파이썬 저울 연결] 20. GUI 만들기 #12. 리스트 라벨 원래 코드에 적용하기

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

라벨을 리스트에 계속 담고 한번에 지워줬다. 

 

 

 

물건을 치우면 사라진다. 

 

 

코드는 아래와 같다 .

 

import tkinter as tk
from numpy import product

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

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


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

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

#Fixed Label
lab00=tk.Label(root,text="현재 무게",font=('Arial 32 bold'),bg='black',fg="white",width=8,height=1)
lab00.grid(row=0,column=0,padx=10)

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

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



#시리얼 데이터 받아오기
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)

    #현재무게
    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() 명령어 적용가능

    #제품 별 무게
    import pandas as pd
    df1=pd.read_csv("경로/ex_weight.csv",encoding='CP949')

    company =''
    product =''
    mycol='black'

    j=1

    #라벨리스트 생성
    labels=[]

    for i in list(df1.index) :
        if df1.loc[i,"최소"] <= res <= df1.loc[i,"최대"] :
            company=df1.loc[i,"회사"]
            product=df1.loc[i,"제품"]
            mycol='red'

            #non-fixed label
            lab11=tk.Label(root,text=company,font=('Arial 32 bold'),bg='white',fg=mycol,width=8)
            lab11.grid(row=1,column=j,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=j,padx=10,pady=10)
            
            labels.append(lab11) #리스트에 라벨추가
            labels.append(lab21) #리스트에 라벨추가
            
            j=j+1

    root.update() 

    lab01.destroy()

    for i in labels : 
       i.destroy()

root.mainloop()
반응형

댓글