이번 포스팅은 파이썬으로 만드는 윈도우 GUI 실행파일 만들기 입니다.
저도 tkinter 와 pyinstaller 공부하면서 정리하는 것이라 조금 더 정성을 들인다면,
다양하고 멋진 GUI 결과물을 만들 수 있을 듯 합니다.
예전에 전력, 전압 단위변환 계산식을 엑셀로 만든것이 있는데, 요것을 파이썬으로도 만들어 봤어요.
안테나로 수신되는 일률과 전압 퍼텐셜 관계를 변환하는 것인데,
마지막에 AF[db/m]=E[dbμV/m]-V[dbμV]를 더하면 전기장세기(E)도 구할수 있습니다.
쉽게 예를 들면 이런식이에요.
1[W] = 30 [dBm] = 137 [dBμV] , 0 [dBm] = 0.001[mW] = 107 [dBμV]
변환되는 식을 어떻게 구했냐면,
10·log [mW] = [dBm] ↔ 10·log 10^3·[W] = [dBm] ↔ 10·log 10^3·[V^2/R] = [dBm]
↔ 10·log [V^2] = [dBm] - 10·log 10^3/R ↔ 20·log 10^-6·[μV] = [dBm] - 10·log 10^3/R
↔ 20·log [μV] = [dBm] - 10·log 10^3/R + 20·log 10^6 ↔ [dBμV] = [dBm] + 107
그럼 이렇게 구해진 변환식을 이용하여 파이썬으로 계산하고 GUI를 이용한 소스코드를 작성합니다.
import tkinter as tk
from math import log10
win=tk.Tk()
win.geometry("300x300")
win.title("전력변환기")
def E0_ent(self):
E1.delete(0, tk.END)
change = 10 * log10(float(E0.get())*1000)
E1.insert(tk.END, change)
E4.delete(0, tk.END)
change = change - 10*log10(10**3/float(r.get())) + 20*log10(10**6)
E4.insert(tk.END, change)
def E1_ent(self):
E0.delete(0, tk.END)
change = 10**(float(E1.get())/10)/1000
E0.insert(tk.END, change)
E4.delete(0, tk.END)
change = float(E1.get()) - 10*log10(10**3/float(r.get())) + 20*log10(10**6)
E4.insert(tk.END, change)
def clk() : return
def E4_ent(self):
E0.delete(0, tk.END)
change = 10**(float(E4.get())/10)/1000
E0.insert(tk.END, change)
E1.delete(0, tk.END)
change = float(E4.get()) + 10*log10(10**3/float(r.get())) - 20*log10(10**6)
E1.insert(tk.END, change)
E0.delete(0, tk.END)
change = 10**(change/10)/1000
E0.insert(tk.END, change)
w = tk.StringVar()
dbm = tk.StringVar()
dbuV = tk.StringVar()
r = tk.StringVar()
L0 = tk.Label(win,text="전력[W]").grid(row=0, column=0, sticky='w', padx=10)
E0 = tk.Entry(win, textvariable=w, width=20)
E0.grid(row=0, column=0, padx=100, sticky='w', pady=20) # stycky : n, e, w, s
E0.bind("<Return>", E0_ent)
L1 = tk.Label(win,text="전력[dBm]").grid(row=1, column=0, sticky='w', padx=10)
E1 = tk.Entry(win, textvariable=dbm, width=20)
E1.grid(row=1, column=0, padx=100, sticky='w', pady=20)
E1.bind("<Return>", E1_ent)
R2 = tk.Radiobutton(win, text="50[Ω]", variable = r, value=50, command=clk)
R2.grid(row=2, column=0, columnspan=3)
R2.select()
R3 = tk.Radiobutton(win, text="75[Ω]", variable = r, value=75, command=clk)
R3.grid(row=3, column=0)
L4 = tk.Label(win,text="전압[dBuV]").grid(row=4, column=0, sticky='w', padx=10)
E4 = tk.Entry(win, textvariable=dbuV, width=20)
E4.grid(row=4, column=0, padx=100, sticky='w', pady=20)
E4.bind("<Return>", E4_ent)
L5 = tk.Label(win,text="[!] 값을 입력한 후 엔터를 누르면 값이 변환됩니다.").place(x=10,y=275)
win.mainloop()
마지막으로 윈도우 커맨드에서 소스코드 경로에 가서
pyinstaller -w -F w2dbuV.py
다 실행이되면, 해당경로 밑에 dist폴더 아래 실행파일이 똬악!
내컴퓨터에서는 실행 잘 되는데, 다른 곳도 잘 되겠져?!ㅎㅎ
추가로 정리는 못했지만 자유공간 전파손실 모델(Friis) 계산식 포함 엑셀자료와 파이썬 실행파일도 첨부합니다!
'파이썬' 카테고리의 다른 글
파이썬으로 별 이름표 붙이기(별주석) (0) | 2022.06.14 |
---|---|
GPIB를 이용한 네트워크 분석기 활용 (0) | 2022.05.08 |
파이썬으로 별자리판 만들기(1) (0) | 2021.01.15 |
구면삼각법과 적도좌표계 (0) | 2020.04.01 |
이심률과 기하학 (0) | 2020.02.09 |