how to enable an entry widget using button in tkinter

Fragen zu Tkinter.
Antworten
mureed.niazie
User
Beiträge: 18
Registriert: Dienstag 22. März 2022, 14:40

import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk
import scipy.special as scs
import scipy.optimize as sco
import matplotlib.pyplot as plt
import numpy as np

def button_clear():
eps_r_Entry.delete(0, END)
impedanz_Entry.delete(0, END)
aussenleiter_Entry.delete(0, END)
innenleiter_Entry.delete(0, END)

def result_function():
c0 = 299792458
m0 = 4 * np.pi * 1e-7
e0 = 1 / (m0 * c0 ** 2)
z0 = np.sqrt(m0 / e0)

zl = float(impedanz_Var.get())
eps_r = float(eps_r_Var.get())
aus_d = float(aussenleiter_Var.get())

# in_d = float(innenleiter_Var.get())



''''
here i need a button if clicked use the number entered in Entry widget (innenleiter)
if not, take this variable and proceed (in_d = aus_d / (np.e ** (zl * 2 * np.pi * np.sqrt(eps_r) / z0))
'''
in_d = aus_d / (np.e ** (zl * 2 * np.pi * np.sqrt(eps_r) / z0))




r1 = np.sqrt(eps_r) * aus_d / 2
r = np.sqrt(eps_r) * in_d / 2
a = r1 / r
z = z0 / (2 * np.pi * np.sqrt(eps_r)) * np.log(aus_d / in_d)

def wav_num(x):
return ((scs.jn(0, x*a) - scs.jn(2, x*a)) * (scs.yn(0, x) - scs.yn(2, x))
- (scs.yn(0, x*a) - scs.yn(2, x*a)) * (scs.jn(0, x) - scs.jn(2, x)))
x = np.arange(0.1, 1.0, 0.01)
test = wav_num(x)
etsi = sco.brentq(wav_num, 0.1, 1.0)
f_g = etsi * (a + 1) / (2 * np.pi * np.sqrt(m0 * e0) * (r1 + r) * 1e-3) / 1e9

result = round(f_g, 2)
result1 = round(z, 2)
result2 = round(in_d, 2)

Result_label.config(text='f_g : ' + str(result))
Result_label1.config(text='impedanz : ' + str(result1))
Result_label2.config(text='innenleiter D/O : ' + str(result2))

# fig = plt.figure(1)
plt.close()
plt.figure(1)
plt.plot(x, test)
plt.grid(True)
plt.savefig("result.png", dpi=70)

logo = Image.open('result.png')
logo = ImageTk.PhotoImage(logo)
logo_label = tk.Label(image=logo)
logo_label.image = logo
logo_label.grid(row=13, column=8, columnspan=4)

return logo

root = tk.Tk()
root.title("Coax TE Mode")
root.geometry("1400x1080")
root.config(background="#145")
var = DoubleVar()

# generate the window
title = Label(root, text="Coax TE Mode", font=('Helvetica', 22), bg="#145", fg="white")
title.grid(row=0, column=3, padx=20, pady=20)
leerZeile = Label(root, text="", bg="#145", fg="#145")
leerZeile.grid(row=1, column=1)
leerZeile = Label(root, text="", bg="#145", fg="#145")
leerZeile.grid(row=2, column=1)

# Impedanz = Zl (in die gleichung als Z gezeichnet)
impedanz_Label = Label(root, text="Impedanz", font=12, bg="#145", fg="white")
impedanz_Label.grid(row=6, column=0, padx=10, pady=10)
impedanz_Var = DoubleVar()
impedanz_Entry = Entry(root, textvariable=impedanz_Var, width=32, borderwidth=5, )
impedanz_Entry.grid(row=6, column=1, columnspan=4, padx=10, pady=10)

# Innenleiter = d (in die gleichung als d gezeigt)
innenleiter_Label = Label(root, text="Innenleiter", font=12, bg="#145", fg="white")
innenleiter_Label.grid(row=4, column=0, padx=10, pady=10)
innenleiter_Var = DoubleVar()
innenleiter_Entry = Entry(root, textvariable=innenleiter_Var, width=32, borderwidth=5)
innenleiter_Entry.grid(row=4, column=1, columnspan=4, padx=10, pady=10)

# Aussenleiter = D (in die gleichung als D gezeigt)
aussenleiter_Label = Label(root, text="Außenleiter", font=12, bg="#145", fg="white")
aussenleiter_Label.grid(row=5, column=0, padx=10, pady=10)
aussenleiter_Var = DoubleVar()
aussenleiter_Entry = Entry(root, textvariable=aussenleiter_Var, width=32, borderwidth=5)
aussenleiter_Entry.grid(row=5, column=1, columnspan=4, padx=10, pady=10)

# eps_r = in die gleichung als Permittivity dry air 1.000594
eps_r_Label = Label(root, text="eps_r", font=12, bg="#145", fg="white")
eps_r_Label.grid(row=7, column=0, padx=10, pady=10)
eps_r_Var = DoubleVar()
eps_r_Entry = Entry(root, textvariable=eps_r_Var, width=32, borderwidth=5)
eps_r_Entry.grid(row=7, column=1, columnspan=4, padx=10, pady=10)

# Result btn
Result_btn = Button(command=result_function, text="Result", bg="#145", fg="white", font=12)
Result_btn.grid(row=8, column=2, padx=10, pady=10)

# Show Result tkinter root window
Result_label = Label(root, text="", bg="#145", fg="white", font=14)
Result_label.grid(row=10, column=2, columnspan=20, padx=2, pady=2)

Result_label1 = Label(root, text="", bg="#145", fg="white", font=14)
Result_label1.grid(row=11, column=2, columnspan=20, padx=2, pady=2)

Result_label2 = Label(root, text="", bg="#145", fg="white", font=14)
Result_label2.grid(row=12, column=2, columnspan=20, padx=2, pady=2)

# clear btn soll entry fields räumen
plt_btn = Button(text="clear", command=button_clear, bg="#145", fg="white", font=12)
plt_btn.grid(row=8, column=3, padx=10, pady=10)

# Exit
exit_btn = Button(root, text="Exit", bg="#145", fg="white", font=12, command=root.quit)
exit_btn.grid(row=8, column=4, padx=10, pady=10)

root.mainloop()
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte die Code-Tags zur Formatierung deines Codes benutzen. Das ist der </>-Knopf im vollstaendigen Editor.

Und bitte *ausfuehrlich* und *klar* beschreiben, was du machst, und was du erreichen willst, und welche Fehlermeldungen es ggf. gibt. Auch die gehoeren in code-tags.

Zu guter Letzt: nicht einfach ein neues Thema eroeffnen, nur weil es dir mit den Antworten nicht schnell genug geht.
Antworten