본문 바로가기

연습 프로젝트/python

22.11.18 PO 계산기

의류쪽에서 일을하다 보니, 오더 수량에 따른 원사 발주 계산이 항상 귀찮은 작업이다.

매번 엑셀파일에 일일이 계산하다보니, 파일 여기저기에 지저분한 흔적들이 남게되고,

그렇다고 발주서마다 매번 파일을 열어 계산하자니 이것또한 나름 귀찮은 일이다.

 

지난번 배운 GUI를 떠올리며, 복습도 할겸 수량 계산기를 만들어 보았다.

이름하여 Autocal... 말은 거창하지만 사실 별거 없다.

따로 실행 버튼을 만들기보단 엔터키를 입력했을때 함수가 작동하게 이벤트 설정을 해두었다.

전체 5개의 프레임을 설정 하였고, 다 만들어 놓고보니, 여기저기 손볼때가 많아서, 자잘한 코드 수정만 30분 넘게 걸린것 같다.

사용한 라이브러리는 tkinter 하나이다. 화

면을 가득 채우기 위해 각 프레임 fill 옵션은 "both"인데, 정렬을 위해 PO_1과 PO_2 프레임만 fill 옵션값을 'y'로 설정해 두었다. expend= 옵션값도 두 프레임만 False로 설정해 두었는데, fill 옵션으로 인해 True로 설정하면, 가로로는 늘어나지 않기 때문에 False로 설정해 두었다.

e1부터 시작했었는데, 하다보니 e1_txt Entry가 삭제되었다.... 그래서 e2 부터 시작이다.

전부 LabelFrame을 이용하여 구역을 나누어 주었고, 해당 프레임을 가득 채워주기 위해 fill 옵션값은 다 "both"로 설정해 주었다. 사용자 임의로 창을 조절할 수 있게 해두었기 때문에, expand 옵션값은 전부 True 로 설정해 주었다,

이제 해당 데이터를 토대로 작동할 함수를 설정해 주면 된다.

나는 엔터키 한방에  PO_1과 PO_2 계산을 실행함과 동시에 합계까지 보여주고 싶어서, 하나의 함수에 다 몰아주었다.

get()으로 받아오는 값들은 전부 문자형이기 때문에, 계산을 위해 각 int() 와 float() 형변환하여 받아와서 변수에 저장해 주었고, 이를 토대로 (오더수량 * 미터당 무게(g) / 1000 (kg 환산) * 피스당 길이(cm) / 100 (mt 환산) * (100 + 로스율) / 100(퍼센트 환산) 을 계산하였는데, 적다보니 나눈기 곱하기 부분을 날리려다가 그냥 귀찮아서 두었다.

그리고 t_weight 에는 계산된 무게값의 소수점 2번째 자리까지, loss는 소수점 첫번째 자리까지만 보여주게 문자 포멧을 셋팅해 주고 최종적으로 해당 t_weight 변수를 label 형태로 화면에 출력되도록 해주었다.

총 3개의 정보를 전달하기에 3개의 레이블을 따로 지정해 주었다.

화면 가운데 보기좋게 출력하기 위해 정렬방향을 left이고, pad 값을 설정해 너무 좌측으로 붙지않게 해주었다.

(생각해보니 pady값은 의미가 없었다.)

의류쪽 일을하다 보면 제일 열받는게, 이 망할 놈들이 야드와 인치 단위를 사용한다는 점이다.

그래서 어쩔수 없이 길이정보와 로스율도 float()을 이용해서 소수로 받아와야 한다.

PO_2 값이 없기때문에 result에는 아무런 정보도 출력되지 않지만, 이걸 다시 if문으로 수정하는건 간단하지만, 딱히 심각한 에러가 생기는것도 아니기에, 그냥 넘어가자.

 

각 py파일과 exe 파일을 첨부해두고, 혹시라도 다음에 써먹을 일이 있을때 사용해보자.

autocal.py
0.00MB
autocal.exe
8.49MB

'연습 프로젝트 > python' 카테고리의 다른 글

22.12.01 로또 번호 추출기 및 당첨확인  (0) 2022.12.01
22.11.30 로또 번호 추출기  (0) 2022.11.30