Untitled
unknown
plain_text
a month ago
4.2 kB
10
Indexable
import wx
class Kalk(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = kwds.get("style", 0) | wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.SetSize((400, 400))
self.SetTitle("Prosty Kalkulator")
self.glowny_panel = wx.Panel(self, wx.ID_ANY)
szuflada_glowna = wx.BoxSizer(wx.VERTICAL)
szuflada_gora = wx.BoxSizer(wx.HORIZONTAL)
self.pole_liczba1 = wx.TextCtrl(self.glowny_panel, wx.ID_ANY, "")
szuflada_gora.Add(self.pole_liczba1, 1, wx.EXPAND | wx.ALL, 5)
self.lista_znakow = wx.ComboBox(self.glowny_panel, wx.ID_ANY, choices=["+", "-", "*", "/"], style=wx.CB_DROPDOWN | wx.CB_READONLY)
self.lista_znakow.SetSelection(0)
szuflada_gora.Add(self.lista_znakow, 0, wx.ALL, 5)
self.pole_liczba2 = wx.TextCtrl(self.glowny_panel, wx.ID_ANY, "")
szuflada_gora.Add(self.pole_liczba2, 1, wx.EXPAND | wx.ALL, 5)
szuflada_glowna.Add(szuflada_gora, 0, wx.EXPAND, 0)
szuflada_srodek = wx.BoxSizer(wx.HORIZONTAL)
self.przycisk_licz = wx.Button(self.glowny_panel, wx.ID_ANY, "OBLICZ")
szuflada_srodek.Add(self.przycisk_licz, 1, wx.EXPAND | wx.ALL, 5)
self.pole_wynik = wx.TextCtrl(self.glowny_panel, wx.ID_ANY, "", style=wx.TE_READONLY)
szuflada_srodek.Add(self.pole_wynik, 1, wx.EXPAND | wx.ALL, 5)
szuflada_glowna.Add(szuflada_srodek, 0, wx.EXPAND, 0)
etykieta_pamiec = wx.StaticText(self.glowny_panel, wx.ID_ANY, "Zapisane operacje:")
szuflada_glowna.Add(etykieta_pamiec, 0, wx.LEFT | wx.TOP, 5)
self.pole_pamiec = wx.TextCtrl(self.glowny_panel, wx.ID_ANY, "", style=wx.TE_MULTILINE | wx.TE_READONLY)
szuflada_glowna.Add(self.pole_pamiec, 1, wx.EXPAND | wx.ALL, 5)
self.glowny_panel.SetSizer(szuflada_glowna)
self.Layout()
self.przycisk_licz.Bind(wx.EVT_BUTTON, self.wykonaj_obliczenie)
self.pamiec_dzialan = []
try:
plik = open('zapis.txt', 'tr')
while True:
linia = plik.readline()
if linia:
self.pamiec_dzialan.append(linia.strip())
else:
break
plik.close()
except FileNotFoundError:
pass
self.aktualizuj_pamiec()
def aktualizuj_pamiec(self):
tekst = ""
for linia in self.pamiec_dzialan:
tekst += linia + "\n"
self.pole_pamiec.SetValue(tekst)
def wykonaj_obliczenie(self, event):
try:
zmienna_a = float(self.pole_liczba1.GetValue())
zmienna_b = float(self.pole_liczba2.GetValue())
except ValueError:
wx.MessageBox("Bledne dane!")
return
znak = self.lista_znakow.GetValue()
rezultat = 0
if znak == "+":
rezultat = zmienna_a + zmienna_b
elif znak == "-":
rezultat = zmienna_a - zmienna_b
elif znak == "*":
rezultat = zmienna_a * zmienna_b
elif znak == "/":
if zmienna_b == 0:
wx.MessageBox("Blad dzielenia!")
return
rezultat = zmienna_a / zmienna_b
self.pole_wynik.SetValue(str(rezultat))
operacja = str(zmienna_a) + " " + znak + " " + str(zmienna_b) + " = " + str(rezultat)
self.pamiec_dzialan.append(operacja)
while len(self.pamiec_dzialan) > 10:
self.pamiec_dzialan.pop(0)
self.aktualizuj_pamiec()
try:
plik = open('zapis.txt', 'tw')
for linia in self.pamiec_dzialan:
plik.write(linia + '\n')
plik.close()
except Exception:
pass
class AplikacjaKalk(wx.App):
def OnInit(self):
self.okno = Kalk(None, wx.ID_ANY, "")
self.SetTopWindow(self.okno)
self.okno.Show()
return True
if __name__ == "__main__":
uruchom_kalk = AplikacjaKalk(0)
uruchom_kalk.MainLoop()Editor is loading...
Leave a Comment