Python Tkinter ile Hesap Makinesi Yapımı

Tkinter ile hesap makinesi yapmak için Tkinter bilgimizin biraz iyi olması lazım. Bir önceki yazımda bundan bahsettim. Eğer Tkinter Kullanımı yazımızı okumadıysanız buraya tıklayarak okuyabilirsiniz.

Tkinter Modülü ile Hesap Makinesi Nasıl Yapılır?

Öncelikle “__future__” sözde modülünü import ediyoruz.
Bunu import etmemizin sebebi Python yorumlayıcılarını dilin yeni özelliklerini kullanmaya zorlaması. Yani eğer derleyecimiz eski bir derleyici ise kodları yeniymiş gibi değerlendirecek.
Şu kodlar sözde modülümüzü import edebiliriz :
 
from __future__ import division
Buradaki division “/” yani bölme işaretinden kaynaklı sorunları çözmek için kullanılacak.
Daha sonra Tkinter modülümüzü import ediyoruz.
from tkinter import *
Daha sonra “depo” isimli bir boş değişken atıyoruz bunu ileride kullanacağız.
depo = “”
Sonrasında penceremizi oluşturuyoruz.
pencere = Tk()
Bu şekilde boş bir pencere oluşturduk.
Penceremizin boyutu değişmesin yani, büyütülsün veya küçültülsün istemiyoruz(programın sağlığı için) bu yüzden “resizable” methodu kullanarak yeniden boyutlanmasını engelleyeceğiz.
pencere.resizable(width=FALSE,height=FALSE)
Şeklinde yeniden büyütme veya küçültmeyi engelledik.
ekran = Entry(width=20)
Kodları ile “entry” methodunu kullanarak kullanıcıdan veri almak için genişliği 20 olan bir kutucuk oluşturuyoruz.
ekran.grid(row=0, column=0, columnspan=3, ipady=4)
Kodları ile “grid” methodu kullanarak kutucuğumuzda birkaç değişiklik yaptık.
İlk parametre olan row ögemizin yerleştirileceği satırı belirtmek için kullanılır(0 ile ilk satıra yerleştirdik) , ikinci parametre olan column ögenin yerleşeceği sütun numarası (varsayılan olarak 0) , üçüncü parametre olan columnspan ögenin kaç sütun kaplayacağı , dördüncü parametre olan pady ögenin diğer ögelerle arasındaki boşluğu belirtmek için.
 
def hesapla(tus):
Adı “hesapla” olan ve “tus” adlı bir parametre içeren bir fonksiyon oluşturduk.
global depo
kodu ile daha önce tanımladığımız boş değişken olan depoya erişiyoruz.
if tus in “0123456789”:
    ekran.insert(END,tus)
    depo = depo + tus
Kodları ile eğer yazdığımız sayı yukardakilerden biriyse daha önceden “ekran” adı ile oluşturduğumuz input bölümüne yazmasını sağlıyoruz. Ve yazdığımız değer olusturduğumuz depo değişkenine ekleniyor. Eğer bu kod programımızdan çıkarılırsa ekrana hiçbir ifade yazdırılamayacak.
if tus in “+-×/”:
    depo = depo + tus
    ekran.delete(0,END)
Kodları ile yapacağımız işlemi yapmamızı sağlayacak olan tuşlara basınca ekrana ilk yazdırılan sayının silinmesini istedik yani , 2+2 işlemini yapmak istiyorsak ekrana öncelikle 2 yazarız sonra artı tuşuna basarız yukarıdaki kod bloğu sayesinde artı tuşuna basınca ilk yazdığımız sayı silinecek boş bir ekran gözükecek.
if tus == “=”:
    ekran.delete(0,END)
Bu kod bloğu ile “=” tuşuna tıklandığında ekrandaki değerler silinecek.
hesap = eval(depo,{“__builtins__”:None},{})
depo = str(hesap)
ekran.insert(END,depo)
Kodu ile sonucumuzun ekrana gösterilmesini sağladık ilk satırdaki “__builtins__” ile yerleşik değere sahip tüm tanımlayıcılara erişim sağladık. Bu modülle ilgili daha fazla bilgi istiyorsanız Python’un kendi websitesine göz atabilirsiniz.
Eğer yukarıdaki kod olmazsa yaptığımız işlem ekrana yansıtılmaz.
 
if tus == “C”:
    ekran.delete(0,END)
    depo = “”
Yukarıdaki kodlarımız ile eğer kullanıcı “C” değerine tıklarsa ekrandaki tüm yazılar silinecek ve en başta tanımladığımız depo değişkeni tekrar boş duruma gelicek.
Burdan sonraki kodlar programımızın görünüşü için :
liste = [
    “9”, “8”, “7”, 
    “6”, “5”, “4”, 
    “3”, “2”, “1”, 
    “0”, “+”, “-“, 
    “/”, “*”, “=”, 
    “C”]
 
sira = 1
sutun = 0
 
for i in liste:
    komut = lambda x=i: hesapla(x)
    Button(text=i,
                  width=5,
                  relief=GROOVE,
                  command=komut).grid(row=sira,
                                                             column=sutun)

    sutun += 1

    if sutun > 2:

        sutun = 0

        sira += 1

mainloop()

Bu kodlar ile öncelikle liste isimli değişkenimizin içine sayıların ve sembollerin nasıl gözükeceğini belirttik. Daha sonra sütün ve sıra ayarlamalarını yaptık. Bu kodların çıktısı şu şekilde :

Python Tkinter ile Hesap Makinesi Yapma

Kodların tamamına erişmek için buraya tıklayabilirsiniz.

Tkinter kullanarak hesap makinemizi oluşturduk dilerseniz kodların işleyiş biçimini özet geçelim :

Öncelikle bir pencere oluşturduk ve hesaplama işlemlerini yapabilmek için depo isimli bir boş değişken tanımladık . Hesapla isimli fonksiyona tanımladığımız özellik sayesinde  tıkladığımız tuşlar depo isimli boş değişkenin içine kaydediliyor. Ve işlemler orada gerçekleştiriliyor.

Bugünlük bu kadar diğer derslere devam etmeyi unutmayın 🙂

Yorum yapın