본문 바로가기

파이썬

파이썬 GUI 실행파일 만들기(전력변환기)

이번 포스팅은 파이썬으로 만드는 윈도우 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) 계산식 포함 엑셀자료와 파이썬 실행파일도 첨부합니다!

전력변환 및 Friis.xlsx
0.04MB
전력변환기.exe
8.00MB