Die Aufgabe ist es eine Tool zu entwickeln, mit dem man Winkeleinheiten umrechnen kann.
Zwar habe ich ein UI basteln können (und das für meine Begriffe einigermaßen robust) und die Berechnung für die ersten drei habe ich auch fertig, aber ich bekomme es nicht hin, wie ich nun die berechneten wert1 und wert2 in die jeweils anderen Felder schreiben kann.
Ferner: ich musste einen Standartwert setzen, da mir bei einem leeren Eingabefeld mein Tool um die Ohren fliegt.
Was noch fehlt: Dass nur bestimmte Zeichen bei der Eingabe zulässig sind (also Ziffern und der Punkt).
Könntet ihr mir Hinweise geben, wie meine nächsten Schritte sind?
VG
Fabian
Code: Alles auswählen
import tkinter as tk
import math
class Anwendung(tk.Frame):
RHO_RAD2GON = math.pi / 200
RHO_RAD2DEG = math.pi / 180
RHO_GON2DEG = 9 / 10
def berechnungsmethode(self, einheit, eingangswert):
if einheit == 'deg':
wert1 = self.deg2gon(eingangswert)
wert2 = self.deg2rad(eingangswert)
elif einheit == 'gon':
wert1 = self.gon2deg(eingangswert)
wert2 = self.gon2rad(eingangswert)
elif einheit == 'rad':
wert1 = self.rad2deg(eingangswert)
wert2 = self.rad2gon(eingangswert)
print(f'Einheit: {einheit}, Wert1: {wert1}, Wert2: {wert2}')
def gon2deg(self, gon):
return gon * self.RHO_GON2DEG
def gon2rad(self, gon):
return gon * self.RHO_RAD2GON
def deg2rad(self, deg):
return deg * self.RHO_RAD2DEG
def deg2gon(self, deg):
return deg / self.RHO_GON2DEG
def rad2gon(self, rad):
return rad / self.RHO_RAD2GON
def rad2deg(self, rad):
return rad / self.RHO_RAD2DEG
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.grid()
self.erzeuge_elemente()
def erzeuge_elemente(self):
einheiten = [
['deg', 'Altgrad:', '°'],
['gon', 'Neugrad:', 'gon'],
['rad', 'Radiant:', '', ],
]
for i, einheit in enumerate(einheiten):
einheit_text = einheit[0]
label_text = einheit[1]
einheit_masseinheit = einheit[2]
tk.Label(self, text=label_text).grid(row=i + 1, column=0)
eingabe_var = tk.StringVar(value='0')
eingabe = tk.Entry(self, textvariable=eingabe_var)
eingabe.grid(row=i + 1, column=1)
tk.Label(self, text=einheit_masseinheit).grid(row=i + 1, column=2)
button_berechnung = tk.Button(self, text='Berechnen!', command=lambda einheit=einheit_text,
eingang=eingabe_var: self.berechnungsmethode(
einheit, float(eingang.get())))
button_berechnung.grid(row=i + 1, column=3)
root = tk.Tk()
root.title('Winkelumrechner')
fenster_breite = 600
fenster_hoehe = 200
bildschirm_breite = root.winfo_screenwidth()
bildschirm_hoehe = root.winfo_screenheight()
fensterposition_x = (bildschirm_breite - fenster_breite) // 2
fensterposition_y = (bildschirm_hoehe - fenster_hoehe) // 2
root.geometry(f'{fenster_breite}x{fenster_hoehe}+{fensterposition_x}+{fensterposition_y}')
anwendung = Anwendung(root)
anwendung.mainloop()