Python programlama dili ile geliştirilen bu hesap makinesi uygulaması, hem temel hem de bilimsel hesaplamalar için kullanıcıların ihtiyaçlarını karşılayacak şekilde tasarlanmıştır. Bu uygulama, tkinter kütüphanesi kullanılarak oluşturulmuş olup, kullanıcı dostu arayüzü ve zengin işlevselliği ile dikkat çekmektedir. İster basit matematiksel işlemler, ister karmaşık bilimsel hesaplamalar yapın, bu hesap makinesi size kolaylık sağlar.
Öne Çıkan Özellikler
- Temel ve Bilimsel İşlemler:
- Toplama, çıkarma, çarpma, bölme ve yüzde hesaplama gibi temel işlemler.
- Karekök, üs alma, logaritma, trigonometrik fonksiyonlar (sin, cos, tan) gibi bilimsel işlemler.
- Sabitler (π ve e) ile hızlı hesaplamalar.
- Bellek İşlevleri:
- Belleğe ekle (
M+
), bellekten çıkar (M-
), belleği çağır (MR
) ve belleği temizle (MC
) gibi işlevlerle ara hesaplamalarınızı kaydedebilirsiniz.
- Geçmiş İşlemler:
- Yapılan işlemler otomatik olarak kaydedilir ve son 5 işlem geçmişi ekranda görüntülenir. Bu özellik, kullanıcıların önceki hesaplamalarını kontrol etmesini kolaylaştırır.
- Kullanıcı Dostu Arayüz:
- Butonların düzenli ve ergonomik yerleşimi, kullanıcıların hızlı ve rahat bir şekilde işlem yapmasını sağlar.
- Temiz ve modern tasarım, kullanıcı deneyimini artırır.
- Hata Yönetimi:
- Geçersiz işlemlerde kullanıcıya anlaşılır hata mesajları gösterilir. Bu sayede, yanlış girişlerde bile kullanıcılar bilgilendirilir.
Neden Bu Hesap Makinesi?
Bu hesap makinesi, Python ile yazılmış olması nedeniyle hem hafif hem de esnektir. Açık kaynak kodlu olması, geliştiricilerin kodu inceleyebilmesine ve kendi ihtiyaçlarına göre özelleştirebilmesine olanak tanır. Ayrıca, tkinter kütüphanesi sayesinde herhangi bir ekstra kurulum gerektirmez ve tüm işletim sistemlerinde sorunsuz çalışır.
Kimler Kullanabilir?
- Öğrenciler: Matematik ve bilim derslerinde hızlı hesaplamalar yapmak için ideal.
- Mühendisler ve Bilim İnsanları: Karmaşık bilimsel hesaplamalar için pratik bir çözüm.
- Geliştiriciler: Python ve tkinter kullanarak GUI uygulamaları geliştirmek isteyenler için harika bir örnek.
Nasıl Kullanılır?
- Python’un bilgisayarınızda yüklü olduğundan emin olun.
- Kodu bir
.py
dosyasına kaydedin (örneğin,hesap_makinesi.py
). - Terminal veya komut istemcisinde dosyanın bulunduğu dizine gidin ve
python hesap_makinesi.py
komutunu çalıştırın.
Bu Python hesap makinesi uygulaması, hem günlük hayatta hem de profesyonel işlerde kullanılabilecek güçlü bir araçtır. Basit arayüzü ve zengin işlevselliği ile herkesin ihtiyaçlarını karşılar. Hemen deneyin ve hesaplamalarınızı kolaylaştırın!
import tkinter as tk
from tkinter import messagebox
import math
class BasitHesapMakinesi:
def __init__(self, root):
self.root = root
self.root.title("Hesap Makinesi")
self.root.geometry("500x700")
self.root.configure(bg="#f0f0f0")
self.expression = ""
self.input_text = tk.StringVar()
self.memory = 0 # Bellek değeri
self.history = [] # İşlem geçmişi
# Giriş alanı
self.input_frame = tk.Frame(self.root, width=500, height=50, bd=0, highlightbackground="black", highlightcolor="black", highlightthickness=1)
self.input_frame.pack(side=tk.TOP)
self.input_field = tk.Entry(self.input_frame, font=('arial', 18, 'bold'), textvariable=self.input_text, width=50, bg="#eee", bd=0, justify=tk.RIGHT)
self.input_field.grid(row=0, column=0)
self.input_field.pack(ipady=10)
# Geçmiş alanı
self.history_frame = tk.Frame(self.root, width=500, height=100, bd=0, highlightbackground="black", highlightcolor="black", highlightthickness=1)
self.history_frame.pack(side=tk.TOP)
self.history_label = tk.Label(self.history_frame, text="Geçmiş: ", font=('arial', 12), bg="#f0f0f0", anchor="w")
self.history_label.pack(fill=tk.BOTH, expand=True)
# Butonların olduğu alan
self.buttons_frame = tk.Frame(self.root, width=500, height=550, bg="#f0f0f0")
self.buttons_frame.pack()
# Butonlar
buttons = [
('C', '⌫', '√', 'x²', '/'),
('7', '8', '9', '*', '('),
('4', '5', '6', '-', ')'),
('1', '2', '3', '+', '='),
('0', '.', '%', 'π', 'e'),
('sin', 'cos', 'tan', 'log', 'ln'),
('MC', 'M+', 'M-', 'MR', 'x^y')
]
for row, row_buttons in enumerate(buttons):
for col, button_text in enumerate(row_buttons):
btn = tk.Button(self.buttons_frame, text=button_text, fg="black", width=10, height=3, bd=0, bg="#fff", cursor="hand2",
command=lambda x=button_text: self.tikla(x))
btn.grid(row=row, column=col, padx=5, pady=5)
def tikla(self, item):
if item == '=':
self.hesapla()
elif item == 'C':
self.temizle()
elif item == '⌫':
self.expression = self.expression[:-1]
self.input_text.set(self.expression)
elif item == 'MC':
self.memory = 0
elif item == 'M+':
self.memory += float(self.input_text.get())
elif item == 'M-':
self.memory -= float(self.input_text.get())
elif item == 'MR':
self.input_text.set(str(self.memory))
self.expression = str(self.memory)
elif item == '√':
self.expression = str(math.sqrt(float(self.expression)))
self.input_text.set(self.expression)
elif item == 'x²':
self.expression = str(float(self.expression) ** 2)
self.input_text.set(self.expression)
elif item == 'x^y':
self.expression += '**'
self.input_text.set(self.expression)
elif item == 'log':
self.expression = str(math.log10(float(self.expression)))
self.input_text.set(self.expression)
elif item == 'ln':
self.expression = str(math.log(float(self.expression)))
self.input_text.set(self.expression)
elif item == 'sin':
self.expression = str(math.sin(math.radians(float(self.expression))))
self.input_text.set(self.expression)
elif item == 'cos':
self.expression = str(math.cos(math.radians(float(self.expression))))
self.input_text.set(self.expression)
elif item == 'tan':
self.expression = str(math.tan(math.radians(float(self.expression))))
self.input_text.set(self.expression)
elif item == 'π':
self.expression += str(math.pi)
self.input_text.set(self.expression)
elif item == 'e':
self.expression += str(math.e)
self.input_text.set(self.expression)
elif item == '%':
self.expression += '/100'
self.input_text.set(self.expression)
else:
self.expression += str(item)
self.input_text.set(self.expression)
def temizle(self):
self.expression = ""
self.input_text.set("")
def hesapla(self):
try:
result = str(eval(self.expression))
self.history.append(f"{self.expression} = {result}")
self.update_history()
self.input_text.set(result)
self.expression = result
except Exception as e:
messagebox.showerror("Hata", "Geçersiz İşlem")
self.expression = ""
self.input_text.set("")
def update_history(self):
history_text = "\n".join(self.history[-5:]) # Son 5 işlemi göster
self.history_label.config(text=f"Geçmiş:\n{history_text}")
if __name__ == "__main__":
root = tk.Tk()
hesap_makinesi = BasitHesapMakinesi(root)
root.mainloop()