반응형
어떤 물건을 올렸을 때, 회사와 제품명을 맞추는 코드를 짜고 싶다.
몇 개 물건의 회사명, 제품명, 무게는 아래와 같다.
회사명 | 제품명 | 무게 |
AMOS | Glue_Stick | 36.97 |
Monami | Name_Pan | 7.54 |
Monami | Ball_Pan | 5.71 |
먼저 출력 라벨을 짜보자. 지난시간까지 만든 코드는 아래와 같다.
import tkinter as tk
#윈도우 생성
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)
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() 명령어 적용가능
root.update()
lab01.destroy()
아래와 같이 라벨을 추가해준다.
결과는 아래와 같다.
코드에서 라벨을 변경되는 라벨과 고정라벨로 구분해준다.
이제 if 문을 이용하여 무게가 특정 범위 내에 들어올 경우 특정 값을 출력하도록 만들어준다. 무게 range는 임의로 정해주었다.
변동되는 라벨에서 text와 bg 부분을 변수로 바꿔줍니다.
테스트 결과는 아래와 같습니다.
<오늘 코드 모아보기>
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 프로젝트 > 저울 연결하기 (시리얼통신) (Tkinter)' 카테고리의 다른 글
[파이썬 저울 연결] 13. GUI 만들기 #6. exe 까만창 안뜨게, 파일 하나로 (0) | 2022.01.13 |
---|---|
[파이썬 저울 연결] 12. GUI 만들기 #5. exe 만들어보기(컴파일) (0) | 2022.01.12 |
[파이썬 저울 연결] 10. 오류(_tkinter.TclError: can't invoke "label" command: application has been destroyed) (0) | 2022.01.10 |
[파이썬 저울 연결] 9. GUI 만들기 #3. 실시간 무게 얻기 (0) | 2022.01.10 |
[파이썬 저울 연결] 8. GUI 만들기 #2. 라벨 추가하기 (0) | 2022.01.10 |
댓글