import tkinter as tk
from tkinter import ttk, messagebox
import math
import sys
class Window(tk.Toplevel):
"""Derékszögű háromszög magyarázó rajzok."""
def __init__(self, parent):
super().__init__(parent)
self.geometry('640x500')
self.title('Trigonometria')
self.configure(bg='#9ACD32')
# képek keret
self.frame_kep = ttk.Frame(self, style='Top.TFrame')
self.frame_kep.pack(padx=0, pady=(5, 0))
self.kep_tk1 = tk.PhotoImage(file='images/dupla1.png')
self.label_kep1 = ttk.Label(self.frame_kep,
image=self.kep_tk1, relief='raised')
self.label_kep1.pack()
self.kep_tk2 = tk.PhotoImage(file='images/magasság1.png')
self.label_kep2 = ttk.Label(self.frame_kep,
image=self.kep_tk2, relief='raised')
self.label_kep2.pack(side='left')
self.kep_tk3 = tk.PhotoImage(file='images/köréírható_kör1.png')
self.label_kep3 = ttk.Label(self.frame_kep,
image=self.kep_tk3, relief='raised')
self.label_kep3.pack(side='left')
ttk.Button(self,
text='Bezár',
command=self.destroy).pack(side='bottom',
padx=(0, 300), pady=5)
class Szamolas:
"""Derékszögű háromszög (C = 90°) számításai."""
@staticmethod
def b_befogo_es_a_befogo(b_befogo, a_befogo):
c = math.hypot(a_befogo, b_befogo)
alfa = math.degrees(math.atan2(a_befogo, b_befogo))
beta = 90.0 - alfa
return c, alfa, beta
@staticmethod
def a_befogo_es_atfogo_c(a_befogo, c):
b = math.sqrt(c ** 2 - a_befogo ** 2)
alfa = math.degrees(math.asin(a_befogo / c))
beta = 90.0 - alfa
return b, alfa, beta
@staticmethod
def b_befogo_es_atfogo_c(b_befogo, c):
a = math.sqrt(c ** 2 - b_befogo ** 2)
beta = math.degrees(math.asin(b_befogo / c))
alfa = 90.0 - beta
return a, alfa, beta
@staticmethod
def beta_szog_es_atfogo_c(beta, c):
b = c * math.sin(math.radians(beta))
a = c * math.cos(math.radians(beta))
alfa = 90.0 - beta
return b, a, alfa
@staticmethod
def beta_szog_es_b_befogo(beta, b):
c = b / math.sin(math.radians(beta))
a = b / math.tan(math.radians(beta))
alfa = 90.0 - beta
return c, a, alfa
@staticmethod
def beta_szog_es_a_befogo(beta, a):
c = a / math.cos(math.radians(beta))
b = a * math.tan(math.radians(beta))
alfa = 90.0 - beta
return c, b, alfa
@staticmethod
def alfa_szog_es_atfogo_c(alfa, c):
a = c * math.sin(math.radians(alfa))
b = c * math.cos(math.radians(alfa))
beta = 90.0 - alfa
return b, a, beta
@staticmethod
def alfa_szog_es_a_befogo(alfa, a):
c = a / math.sin(math.radians(alfa))
b = a / math.tan(math.radians(alfa))
beta = 90.0 - alfa
return c, b, beta
@staticmethod
def alfa_szog_es_b_befogo(alfa, b):
c = b / math.cos(math.radians(alfa))
a = b * math.tan(math.radians(alfa))
beta = 90.0 - alfa
return c, a, beta
@staticmethod
def kerulet_terulet_magassag(a, b, c):
"""Kerület=a+b+c, Terület=(a*b)/2,
Magasság a c átfogóhoz: m꜀ = (a*b)/c"""
kerulet = a + b + c
terulet = (a * b) / 2
# A magasságtételt m꜀ = (a*b) / c
magassag = (a * b) / c
return kerulet, terulet, magassag
class Rajz(tk.Canvas):
"""Derékszögű háromszög magyarázó rajzok."""
def __init__(self, container):
super().__init__(container)
self.configure(bg='#2B547E', width=600, height=170)
self.create_text(
280, 85,
text=f"A PONTOS ÉS HIBA MENTES SZÁMOLÁSHOZ KÉT ADAT MEGADÁSA SZÜKSÉGES!\n"
f"\ta oldal = befogó, b oldal = befogó, c oldal = átfogó\n"
f"\tα = alfa szög = 90°, β = béta szög, γ = gamma szög\n"
f"\tc > b, c > a, b > a, b = a, b < a\n"
f"\tK = a + b + c, T = (a * b) / 2, m\uA700 = (a * b) / c\n"
f"\tHáromszög köré írható kör: O pont = ((xA + xB) / 2, (yA + yB) / 2),\n"
f"\tez a c átfogó felezőpontja és R = c / 2 a kör sugara.",
font='NotoSansMath 11',
fill='white')
self.create_line(10, 26, 550, 26, fill='#FF8040', width=2)
class HaromszogSzamolo(ttk.Frame):
"""Derékszögű háromszöghöz widgetek és információk és
metódusok."""
def __init__(self, container):
super().__init__(container,
width=600, height=400,
style='keret.TFrame')
# A Számolás osztály példányosítás
self.szamol = Szamolas()
self.befogo_a = None
self.befogo_b = None
self.atfogo_c = None
self.alfa = None
self.beta = None
self.gamma = "90\U000000B0"
self.max_szam = 999999999
self.max_szog = 89
self.terulet = 0
self.kerulet = 0
self.magassag = 0
self.bevitt_adatok_szama = 0
# színek
self.bg_color = '#2B547E'
self.fg_color = 'white'
stilus = ttk.Style()
stilus.theme_use('alt')
stilus.configure('keret.TFrame',
background=self.bg_color)
stilus.configure('widget.TFrame',
background=self.bg_color)
stilus.configure('Top.TFrame',
background='#9ACD32')
stilus.configure('TButton',
background='#DC143C',
foreground=self.fg_color,
font='NotoSansMath 11')
stilus.map('TButton',
foreground=[('pressed', 'green'),
('active', 'black')],
background=[('pressed', 'black'),
('active', 'green')])
stilus.configure('TEntry',
fieldbackground='#00FFFF')
# Treeview fejléc stílus
stilus.configure("Treeview.Heading",
bordercolor='yellow',
borderwidth=2,
font=('Arial', 11),
background='#2B3856',
foreground=self.fg_color,
relief="ridge")
stilus.map("Treeview.Heading",
# Ha az egér a Fejlécre kerül (active),
# legyen világosabb
background=[('active', '#2B547E')]
)
# táblázat stílus
stilus.configure("Treeview",
# EZ a táblázat adatmezőjének színe,
# már ami látszik:
fieldbackground='lightblue',
font=('Arial', 11),
rowheight=23,
# Az általános háttér is (pl. ha nincs elég sor)
background = 'lightgreen',
foreground = 'black')
stilus.map("Treeview",
# Ha a sor KI VAN JELÖLVE (selected)
background=[('selected', '#2B3856')],
foreground=[('selected', 'white')])
self._szovegmezok()
def _szovegmezok(self):
""""""
# Label-ek és az Enry-k kerete
self.frame1 = ttk.Frame(self, style='widget.TFrame')
self.frame1.pack(fill='x', padx=0, pady=(10, 5))
# Első oszlop,
label_a = ttk.Label(self.frame1, text='a oldal befogó',
background=self.bg_color,
foreground=self.fg_color,
font='NotoSansMath 11',
justify='left')
label_a.grid(row=0, column=0, padx=(20, 0), pady=2, sticky='w')
label_b = ttk.Label(self.frame1, text='b oldal befogo',
background=self.bg_color,
foreground=self.fg_color,
font='NotoSansMath 11')
label_b.grid(row=1, column=0, padx=(20, 0), pady=2, sticky='w')
label_c = ttk.Label(self.frame1, text='c oldal átfogo',
background=self.bg_color,
foreground=self.fg_color,
font='NotoSansMath 11')
label_c.grid(row=2, column=0, padx=(20, 0), pady=2, sticky='w')
# Második oszlop
self.a_befogo_entry = ttk.Entry(self.frame1, width=10)
self.a_befogo_entry.grid(row=0, column=1, padx=5, pady=2)
self.b_befogo_entry = ttk.Entry(self.frame1, width=10)
self.b_befogo_entry.grid(row=1, column=1, padx=5, pady=2)
self.c_atfogo_entry = ttk.Entry(self.frame1, width=10)
self.c_atfogo_entry.grid(row=2, column=1, padx=5, pady=2)
# harmadik oszlop
label_alfa = ttk.Label(self.frame1, text=' alfa szög',
background=self.bg_color,
foreground=self.fg_color,
font='NotoSansMath 11',
justify='right')
label_alfa.grid(row=0, column=2, padx=5, pady=2, sticky='e')
label_beta = ttk.Label(self.frame1, text=' béta szög',
background=self.bg_color,
foreground=self.fg_color,
font='NotoSansMath 11',
justify='right')
label_beta.grid(row=1, column=2, padx=5, pady=2, sticky='e')
label_gamma = ttk.Label(self.frame1, text='gamma szög',
background=self.bg_color,
foreground=self.fg_color,
font='NotoSansMath 11',
justify='right')
label_gamma.grid(row=2, column=2, padx=5, pady=2, sticky='e')
# negyedik oszlop
self.alfa_entry = ttk.Entry(self.frame1, width=10)
self.alfa_entry.grid(row=0, column=3, padx=5, pady=2)
self.beta_entry = ttk.Entry(self.frame1, width=10)
self.beta_entry.grid(row=1, column=3, padx=5, pady=2)
self.gamma_entry = ttk.Entry(self.frame1, width=10)
self.gamma_entry.insert(0, self.gamma)
self.gamma_entry.grid(row=2, column=3, padx=5, pady=2)
self.gamma_entry.configure(state='disabled')
# Ötödik oszlop
self.label_T = ttk.Label(
self.frame1,
text=f' Terület: {self.terulet:.1f}',
background='#00FFFF', width=15,
foreground='black',
font='NotoSansMath 11',
justify='left', relief="ridge")
self.label_T.grid(row=0, column=4,
padx=(25, 0), pady=2,
sticky='w')
self.label_K = ttk.Label(
self.frame1, text=f' Kerület: {self.kerulet:.1f}',
background='#00FFFF', width=15,
foreground='black',
font='NotoSansMath 11',
justify='left', relief="ridge")
self.label_K.grid(row=1, column=4, padx=(25, 0),
pady=2, sticky='w')
self.label_m = ttk.Label(
self.frame1, text=f' m\uA700 = {self.magassag:.1f}',
background='#00FFFF', width=15,
foreground='black',
font='NotoSansMath 11',
justify='left', relief="ridge")
self.label_m.grid(row=2, column=4,
padx=(25, 0), pady=2, sticky='w')
# Treeview (Táblázat) létrehozása
# A táblázat oszlopazonosítói:
oszlopok = ("Sor", "Adatbe", "Hianyzo", "Szamitas")
tree = ttk.Treeview(self, columns=oszlopok, show="headings")
# Oszlopfejlécek beállítása
tree.heading("Sor", text="Sor")
tree.heading("Adatbe", text="Bevitel")
tree.heading("Hianyzo", text="Hiányzó adatok")
tree.heading("Szamitas", text="Számítás módszere")
# Oszlop paraméterek és szélesség beállítása
tree.column("Sor", width=30, anchor="center")
tree.column("Adatbe", width=70, anchor="center")
tree.column("Hianyzo", width=180, anchor="w")
# A legszélesebb oszlop a képletek miatt:
tree.column("Szamitas", width=305, anchor="w")
adatok = [
("1.", "a és b", "c átfogó; alfa, béta szög",
"Pitagorasz-tétel: c = sqrt(a^2 + b^2)"),
("2.", "b és c", "a befogó; alfa, béta szög",
"Pitagorasz-tétel: a = sqrt(c^2 - b^2)"),
("3.", "c és a", "b befogó; alfa, béta szög",
"Pitagorasz-tétel: b = sqrt(c^2 - a^2)"),
("4.", "c és β", "b befogó, a befogó, α szög",
"Szögfüggvények: b = c * sin(β); a = c * cos(β)"),
("5.", "c és α", "a befogó, b befogó, β szög",
"Szögfüggvények: a = c * sin(α); b = c * cos(α)"),
("6.", "b és β", "a befogó, c átfogó, α szög",
"Szögfüggvények: c = b / sin(β); a = b / tan(β)"),
("7.", "a és β", "b befogó, c átfogó, α szög",
"Szögfüggvények: c = a / cos(β); b = a * tan(β)"),
("8.", "b és α", "a befogó, c átfogó, β szög",
"Szögfüggvények: c = b / cos(α); a = b * tan(α)"),
("9.", "a és α", "b befogó, c átfogó, β szög",
"Szögfüggvények: c = a / sin(α); b = a / tan(α)"),
]
# Adatok beillesztése a táblázatba
for i, adatsor in enumerate(adatok, start=1):
tag = 'paros' if i % 2 == 0 else 'paratlan'
tree.insert(parent='', index='end',
values=adatsor, tags=(tag,))
tree.pack(padx=0, pady=10, fill='both', expand=True)
# Kattintható legalsó üres sor
tree.insert(parent='', index='end', values=('', ''), tags=())
# Alternáló sorok színezése (jobb olvashatóságért)
tree.tag_configure('paratlan', background='#D1D0CE')
tree.tag_configure('paros', background='#E5E4E2')
# Gombok kerete
self.frame2 = ttk.Frame(self, style='widget.TFrame')
self.frame2.pack(padx=0, pady=0)
self.button1 = ttk.Button(self.frame2, text='Számol',
command=self.szamolas_indito)
self.button1.grid(row=0, column=0, padx=2, pady=2, sticky="ew")
self.button2 = ttk.Button(self.frame2, text='Törlés',
command=self.torles_frissites)
self.button2.grid(row=0, column=1, padx=2, pady=2, sticky="ew")
self.button3 = ttk.Button(self.frame2, text='Kilépés',
command=sys.exit)
self.button3.grid(row=0, column=2, padx=2, pady=2, sticky="ew")
self.button1 = ttk.Button(self.frame2, text='Háromszög',
command=self.open_window)
self.button1.grid(row=0, column=3, padx=2, pady=2, sticky="ew")
def befogo_befogo_ellenor(self):
"""A beírt adatok helyeségének az ellenőrzése és az átfogó számítása.
Visszatér: True, ha sikeres volt a számítás, False, ha hiba történt.
"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
befogo_b = self.b_befogo_entry.get()
befogo_a = self.a_befogo_entry.get()
try:
befogo_b = float(befogo_b)
befogo_a = float(befogo_a)
if (0 < befogo_b <= self.max_szam and
0 < befogo_a <= self.max_szam):
self.befogo_b = befogo_b
self.befogo_a = befogo_a
else:
self.hiba_uzenet(befogo_b, befogo_a)
return False
except ValueError:
self.hiba_uzenet(befogo_b, befogo_a)
# A metódus megállítása
return False
# Ha idáig eljutott, az adatok érvényesek,
# kiszámoljuk az átfogót
self.atfogo_c, self.alfa, self.beta = self.szamol.b_befogo_es_a_befogo(
self.befogo_a, self.befogo_b)
# Az eredmények megjelenítése
self.c_atfogo_entry.insert(0, f"{self.atfogo_c:.1f}")
self.alfa_entry.insert(0, f"{self.alfa:.1f}")
self.beta_entry.insert(0, f"{self.beta:.1f}")
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
else:
return False
def bbefogo_atfogo_ellenor(self):
"""A b_befogó és az c_átfogó ellenőrzése,
az a_befogó és a hiányzó szögek kiszámítása"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
befogo_b = self.b_befogo_entry.get()
atfogo_c = self.c_atfogo_entry.get()
try:
befogo_b = float(befogo_b)
atfogo_c = float(atfogo_c)
if (0 < befogo_b <= self.max_szam and
0 < atfogo_c <= self.max_szam
and atfogo_c > befogo_b):
self.befogo_b = befogo_b
self.atfogo_c = atfogo_c
else:
self.hiba_uzenet(befogo_b, atfogo_c)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(befogo_b, atfogo_c)
# A metódus megállítása
return False
# Statikus metódus hívás
self.befogo_a, self.alfa, self.beta = self.szamol.b_befogo_es_atfogo_c(
self.befogo_b, self.atfogo_c)
# Az eredmények megjelenítése
self.a_befogo_entry.insert(0, f"{self.befogo_a:.1f}")
self.alfa_entry.insert(0, f"{self.alfa:.1f}")
self.beta_entry.insert(0, f"{self.beta:.1f}")
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
else:
return False
def abefogo_atfogo_ellenor(self):
"""A a_befogó és a c_átfogó ellenőrzése,
a b_befogó és a hiányzó szögek kiszámítása
"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
befogo_a = self.a_befogo_entry.get()
atfogo_c = self.c_atfogo_entry.get()
try:
befogo_a = float(befogo_a)
atfogo_c = float(atfogo_c)
if (0 < befogo_a <= self.max_szam and
0 < atfogo_c <= self.max_szam
and atfogo_c > befogo_a):
self.befogo_a = befogo_a
self.atfogo_c = atfogo_c
else:
self.hiba_uzenet(befogo_a, atfogo_c)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(befogo_a, atfogo_c)
# A metódus megállítása
return False
# Eredmény: b befogó, alfa szög, béta szög
self.befogo_b, self.alfa, self.beta = self.szamol.a_befogo_es_atfogo_c(
self.befogo_a, self.atfogo_c)
# Az eredmények megjelenítése
self.b_befogo_entry.insert(0, f"{self.befogo_b:.1f}")
self.alfa_entry.insert(0, f"{self.alfa:.1f}")
self.beta_entry.insert(0, f"{self.beta:.1f}")
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
else:
return False
def betaszog_atfogo_ellenor(self):
"""A beírt adatok helyeségének az ellenőrzése és a hiányzó adatok
számítása.
Visszatér: True, ha sikeres volt a számítás, False, ha hiba történt.
"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
beta_szog = self.beta_entry.get()
atfogo_c = self.c_atfogo_entry.get()
try:
beta_szog = float(beta_szog)
atfogo_c = float(atfogo_c)
if 0 < beta_szog <= self.max_szog and 0 < atfogo_c <= self.max_szam:
self.beta = beta_szog
self.atfogo_c = atfogo_c
else:
self.hiba_uzenet(beta_szog, atfogo_c)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(beta_szog, atfogo_c)
# A metódus megállítása
return False
# három adatot kapunk: b oldal, a oldal, alfa szög fokban
self.befogo_b, self.befogo_a, self.alfa = self.szamol.beta_szog_es_atfogo_c(
self.beta, self.atfogo_c)
# Eredmény megjelenítő
self.b_befogo_entry.insert(0, f"{self.befogo_b:.1f}")
self.a_befogo_entry.insert(0, f'{self.befogo_a:.1f}')
self.alfa_entry.insert(0, f'{self.alfa:.1f}')
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
def betaszog_bbefogo_ellenor(self):
""""""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
beta_szog = self.beta_entry.get()
befogo_b = self.b_befogo_entry.get()
try:
beta_szog = float(beta_szog)
befogo_b = float(befogo_b)
if 0 < beta_szog <= self.max_szog and 0 < befogo_b <= self.max_szam:
self.beta = beta_szog
self.befogo_b = befogo_b
else:
self.hiba_uzenet(beta_szog, befogo_b)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(beta_szog, befogo_b)
# A metódus megállítása
return False
# három adatot kapunk: a oldal, c oldal, alfa szög fokban
self.atfogo_c, self.befogo_a, self.alfa = self.szamol.beta_szog_es_b_befogo(
self.beta, self.befogo_b)
self.c_atfogo_entry.insert(0, f"{self.atfogo_c:.1f}")
self.a_befogo_entry.insert(0, f'{self.befogo_a:.1f}')
self.alfa_entry.insert(0, f'{self.alfa:.1f}')
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
def betaszog_abefogo_ellenor(self):
"""Bevitt adatok ellenőrzése, eredmény kiírása"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
beta_szog = self.beta_entry.get()
befogo_a = self.a_befogo_entry.get()
try:
beta_szog = float(beta_szog)
befogo_a = float(befogo_a)
if 0 < beta_szog <= self.max_szog and 0 < befogo_a <= self.max_szam:
self.beta = beta_szog
self.befogo_a = befogo_a
else:
self.hiba_uzenet(beta_szog, befogo_a)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(beta_szog, befogo_a)
# A metódus megállítása
return False
# három adatot kapunk: a oldal, c oldal, alfa szög fokban
self.atfogo_c, self.befogo_b, self.alfa = self.szamol.beta_szog_es_a_befogo(
self.beta, self.befogo_a)
# Adatok megjelenítése
self.c_atfogo_entry.insert(0, f"{self.atfogo_c:.1f}")
self.b_befogo_entry.insert(0, f'{self.befogo_b:.1f}')
self.alfa_entry.insert(0, f'{self.alfa:.1f}')
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
def alfaszog_atfogo_ellenor(self):
"""A bevitt adatok helyességének az ellenőrzése,
majd eredmény megjelenítés.
"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
alfa_szog = self.alfa_entry.get()
atfogo_c = self.c_atfogo_entry.get()
try:
alfa_szog = float(alfa_szog)
atfogo_c = float(atfogo_c)
if 0 < alfa_szog <= self.max_szog and 0 < atfogo_c <= self.max_szam:
self.alfa = alfa_szog
self.atfogo_c = atfogo_c
else:
self.hiba_uzenet(alfa_szog, atfogo_c)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(alfa_szog, atfogo_c)
# A metódus megállítása
return False
# három adatot kapunk: b oldal, a oldal, béta szög fokban
self.befogo_b, self.befogo_a, self.beta = self.szamol.alfa_szog_es_atfogo_c(
self.alfa, self.atfogo_c)
# Eredmény megjelenítés
self.b_befogo_entry.insert(0, f"{self.befogo_b:.1f}")
self.a_befogo_entry.insert(0, f'{self.befogo_a:.1f}')
self.beta_entry.insert(0, f'{self.beta:.1f}')
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
def alfaszog_bbefogo_ellenor(self):
""""""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
alfa_szog = self.alfa_entry.get()
befogo_b = self.b_befogo_entry.get()
try:
alfa_szog = float(alfa_szog)
befogo_b = float(befogo_b)
if 0 < alfa_szog <= self.max_szog and 0 < befogo_b <= self.max_szam:
self.alfa = alfa_szog
self.befogo_b = befogo_b
else:
self.hiba_uzenet(alfa_szog, befogo_b)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(alfa_szog, befogo_b)
# A metódus megállítása
return False
# három adatot kapunk: a oldal, c oldal, gamma szög fokban
self.atfogo_c, self.befogo_a, self.beta = self.szamol.alfa_szog_es_b_befogo(
self.alfa, self.befogo_b)
self.c_atfogo_entry.insert(0, f"{self.atfogo_c:.1f}")
self.a_befogo_entry.insert(0, f'{self.befogo_a:.1f}')
self.beta_entry.insert(0, f'{self.beta:.1f}')
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
def alfaszog_abefogo_ellenor(self):
"""Adat elenőrzés és eredmény megjelenítés.
"""
# A bevitt adatok darabszámának az ellenőrzése.
darab_adat = self.adat_mennyiseg_ellenor()
if darab_adat == 2:
# Bevitt adatok lekérése
alfa_szog = self.alfa_entry.get()
befogo_a = self.a_befogo_entry.get()
try:
alfa_szog = float(alfa_szog)
befogo_a = float(befogo_a)
if 0 < alfa_szog <= self.max_szog and 0 < befogo_a <= self.max_szam:
self.alfa = alfa_szog
self.befogo_a = befogo_a
else:
self.hiba_uzenet(alfa_szog, befogo_a)
# A metódus kilép
return False
except ValueError:
self.hiba_uzenet(alfa_szog, befogo_a)
# A metódus megállítása
return False
# három adatot kapunk: a oldal, b oldal, gamma szög fokban
self.atfogo_c, self.befogo_b, self.beta = self.szamol.alfa_szog_es_a_befogo(
self.alfa, self.befogo_a)
# Eredmények megjelenítése.
self.c_atfogo_entry.insert(0, f"{self.atfogo_c:.1f}")
self.b_befogo_entry.insert(0, f'{self.befogo_b:.1f}')
self.beta_entry.insert(0, f'{self.beta:.1f}')
# Kerület, Terület, magasság számítás
self.ktm_szamito()
return True
def ktm_szamito(self):
"""Kiszámítja Kerületet, Területet, magasságot, és az eredményt megjeleníti"""
self.kerulet, self.terulet, self.magassag = self.szamol.kerulet_terulet_magassag(
self.befogo_a, self.befogo_b, self.atfogo_c)
self.label_K.configure(text=f' Kerület: {self.kerulet:.1f}')
self.label_T.configure(text=f' Terület: {self.terulet:.1f}')
self.label_m.configure(text=f' m\uA700 = {self.magassag:.1f}')
def szamolas_indito(self):
"""Adat bevitel darabszám ellenőrzés.
Optimális két adat!"""
if self.beta_entry.get() != '' and self.alfa_entry.get() != '':
tk.messagebox.showerror('Hiba!',f'Hibás adat bevitel! '
f'Két szöget tilos megadni!')
self.torles_frissites()
else:
if self.b_befogo_entry.get() != '' and self.a_befogo_entry.get() != '':
self.befogo_befogo_ellenor()
elif self.b_befogo_entry.get() != '' and self.c_atfogo_entry.get() != '':
self.bbefogo_atfogo_ellenor()
elif self.a_befogo_entry.get() != '' and self.c_atfogo_entry.get() != '':
self.abefogo_atfogo_ellenor()
elif self.beta_entry.get() != '' and self.c_atfogo_entry.get() != '':
self.betaszog_atfogo_ellenor()
elif self.b_befogo_entry.get() != '' and self.beta_entry.get() != '':
self.betaszog_bbefogo_ellenor()
elif self.a_befogo_entry.get() != '' and self.beta_entry.get() != '':
self.betaszog_abefogo_ellenor()
elif self.alfa_entry.get() != '' and self.c_atfogo_entry.get() != '':
self.alfaszog_atfogo_ellenor()
elif self.alfa_entry.get() != '' and self.b_befogo_entry.get() != '':
self.alfaszog_bbefogo_ellenor()
elif self.alfa_entry.get() != '' and self.a_befogo_entry.get() != '':
self.alfaszog_abefogo_ellenor()
else:
self.adat_mennyiseg_ellenor()
def adat_mennyiseg_ellenor(self):
""""""
a1 = self.c_atfogo_entry.get()
a2 = self.b_befogo_entry.get()
a3 = self.a_befogo_entry.get()
a4 = self.beta_entry.get()
a5 = self.alfa_entry.get()
entry_adat_lista = [a1, a2, a3, a4, a5]
for adat in entry_adat_lista:
if adat != '':
self.bevitt_adatok_szama += 1
if self.bevitt_adatok_szama != 2:
tk.messagebox.showerror(
'Mennyiségi hiba!',
f'Kevesebb vagy több mint kétadat bevitel! '
f'Ez {self.bevitt_adatok_szama} darab.')
self.torles_frissites()
return False
else:
return self.bevitt_adatok_szama
def hiba_uzenet(self, adat1, adat2):
"""Közös metódus a hibaüzenet megjelenítésére."""
tk.messagebox.showerror('Hiba', f'{adat1}?, {adat2}?\n '
f'Hibás, vagy nincs adat bevitel!')
# Hibás adatok törlése
self.torles_frissites()
def torles_frissites(self):
"""A beviteli mezők kiürítése."""
self.c_atfogo_entry.delete(0, tk.END)
self.b_befogo_entry.delete(0, tk.END)
self.a_befogo_entry.delete(0, tk.END)
self.alfa_entry.delete(0, tk.END)
self.beta_entry.delete(0, tk.END)
# self.gamma_entry.delete(0, tk.END)
self.befogo_a = None
self.befogo_b = None
self.atfogo_c = None
self.alfa = None
self.beta = None
self.terulet = 0
self.label_T.configure(text=f' Terület: {self.terulet:.1f}')
self.kerulet = 0
self.label_K.configure(text=f' Kerület: {self.kerulet:.1f}')
self.magassag = 0
self.label_m.configure(text=f' m\uA700 = {self.magassag:.1f}')
self.bevitt_adatok_szama = 0
def open_window(self):
window = Window(self)
window.grab_set()
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title('Trigonometria')
self.geometry('602x620+500+50')
self.configure(bg='#2B547E') # #2B547E, #4C787E
rajz = Rajz(self)
rajz.pack(fill='x', padx=5, pady=3)
haromszog_tan = HaromszogSzamolo(self)
haromszog_tan.pack(fill='x', padx=5, pady=(0, 3))
if __name__ == '__main__':
app = App()
app.mainloop()



Nincsenek megjegyzések:
Megjegyzés küldése