Python İle Kendi Hesap Makinamı Yaptım

4 İşlem yapabilen basit bir hesap makinası yapmaya çalıştım. Öncelikle program 2 kısımdan oluşuyor

  1. Kısım Gui yani arayüz (Burayı anlatmayacağım kullanıcının kendi isteğine göre tasarım sağlayacağı için sadece indirme linkini vereceğim)
  2. Kısım ise kodlama kısmı girilen değerlerin nerede nasıl işlem gördüğünü anlatacağım.

1. Kısım

Yaptığım arayüz tasarımını indirmek için buraya

2. Kısım

Bu kısımda girilen değerlerin işlem görme evrelerinin kodlama ksımını anlatacağım. Haydi baslayalım ;


import sys
from PyQt5.QtCore import QSize
from PyQt5.QtGui import  QColor
from PyQt5.QtWidgets import QMainWindow,QApplication,QGraphicsDropShadowEffect,QSizeGrip

# Arayüz dahil etme
from calculate import *


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


        self.show()



if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec_())

Yukarıda yazılan kodu bir python dosyasına kopyalıp aynı dizine indirdiğiniz arayüz dosyasını (calculate.py) ekleyip programı çalıştırdığımızda 1. kısımdaki (Arayüz) fotoğraf karşımıza çıkar. Arayüz üzerinde ne kadar işlem yapmaya çalışsak ta hiç bir değişiklik olmadığını fark edeceksiniz . Çünkü arayüzde bulunan butonlara yapacağı işlemleri atamadık.

import sys
from PyQt5.QtCore import QSize
from PyQt5.QtGui import  QColor
from PyQt5.QtWidgets import QMainWindow,QApplication,QGraphicsDropShadowEffect,QSizeGrip

# Arayüz dahil etme
from calculate import *



class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        
        self.text = ""

    
    ## CLİCKED BUTTON ==> Arayüzdeki butonlara basılması durumları
        self.ui.pushButton.clicked.connect(self.Button)
        self.ui.pushButton_2.clicked.connect(self.Button)
        self.ui.pushButton_3.clicked.connect(self.Button)
        self.ui.pushButton_4.clicked.connect(self.Button)
        self.ui.pushButton_5.clicked.connect(self.Button)
        self.ui.pushButton_6.clicked.connect(self.Button)
        self.ui.pushButton_7.clicked.connect(self.Button)
        self.ui.pushButton_8.clicked.connect(self.Button)
        self.ui.pushButton_9.clicked.connect(self.Button)
        self.ui.pushButton_10.clicked.connect(self.Button)
        self.ui.pushButton_11.clicked.connect(self.Button)
        self.ui.pushButton_12.clicked.connect(self.Button)
        self.ui.pushButton_13.clicked.connect(self.Button)
        self.ui.pushButton_14.clicked.connect(self.Button)
        self.ui.pushButton_15.clicked.connect(self.Button)
        self.ui.pushButton_16.clicked.connect(self.Button)
        self.ui.pushButton_17.clicked.connect(self.Button)
        self.ui.pushButton_18.clicked.connect(self.Button)
        self.ui.pushButton_19.clicked.connect(self.Button)
        self.ui.pushButton_20.clicked.connect(self.Button)
    ## ==> END ##

    ## SHOW ==> Arayüz gösterme
        self.show()
    ## ==> END ##

Arayzümüze eklediğimiz butunları yapacağı işlemi belirlemek için bütün butonları bir fonksiyona bağladık self.ui.(tanımlanacak buton).clicked.connect(self.(Gidilecek fonksiyon)).

def Button(self):
         # GET BT CLICKED ==> Hangi butona basıldığını bulma
        btnWidget = self.sender()

        if btnWidget.text() =="AC":
            self.text = ""
            self.ui.label_2.setText("0")
        elif btnWidget.text() =="=":
            self.islem()
        elif btnWidget.text() =="+/-":
            a = float(self.text.replace(",","."))
            a *= -1
            self.text = str(a)
                
        else:
            self.text += btnWidget.text()
        
        self.ui.label.setText(self.text)

İf else blokları ile butonların ekrandaki işlevini belirtiyoruz; ‘AC’ butonuna basıldığında ekranda bulunan bütün işlemleri sıfırlar, ‘=’ butonuna basıldığında işlem fonksiyonuna yönlendirdik ,'+/-' butonunan basıldığında o anda ekranda bulunan rakam işaret değitirir.

 def islem(self):
    if not self.text:
        pass
    else :
        try:
            float(self.text)

            self.ui.label_2.setText(self.text)
        except ValueError:
            if "*" in self.text:
                a = self.text.replace(",",".").split("*")
                self.ui.label_2.setText(str(float(a[0])*float(a[1])))
            elif "/" in self.text:
                a = self.text.replace(",",".").split("/")
                self.ui.label_2.setText(str(float(a[0])/float(a[1])))
            
            elif "+" in self.text:
                a = self.text.replace(",",".").split("+")
                self.ui.label_2.setText(str(float(a[0])+float(a[1])))
            elif "-" in self.text:
                a = self.text.replace(",",".").split("-")
                self.ui.label_2.setText(str(float(a[0])-float(a[1])))

Bu kısımda girilen rakamların yapacağı işlemi gerçekleştirir.

 def keyPressEvent(self, event):
    if str(event.key()) =="16777220":
        self.islem()
    elif str(event.key()) =="16777219":
        self.text = self.text[:-1]
        self.ui.label.setText(self.text)
    else:
        self.text += str(event.text())
        self.ui.label.setText(self.text)

Bu kısım klavyeden girilen rakamları ekranda gösterir.

Projeye ait bütün kodlara ulaşmak için buraya