Membuat Kalkulator Sederhana Menggunakan Python

Jessi
0

 


Pendahuluan

Dalam proyek kali ini, akan membahas tentang bagaimana cara membuat kalkulator sederhana menggunakan bahasa pemrograman Python dan Tkinter untuk antarmuka pengguna grafis (GUI). Proyek ini saya buat untuk keperluan dokumentasi pekerjaan saya dan sebagai latihan dalam memahami dasar-dasar pembuatan aplikasi GUI dengan Python. Kalkulator ini memiliki fitur dasar seperti penjumlahan, pengurangan, perkalian, dan pembagian, serta fungsi lanjutan seperti akar kuadrat, pangkat, logaritma, dan fungsi trigonometri.

Tujuan Proyek:

  • Memahami Pembuatan GUI dengan Tkinter: Tkinter adalah pustaka standar Python untuk membuat aplikasi desktop berbasis GUI. Dalam proyek ini, saya memanfaatkan Tkinter untuk merancang antarmuka kalkulator yang sederhana namun fungsional.
  • Penggunaan Fungsi Matematika: Kalkulator ini tidak hanya menangani operasi dasar, tetapi juga fungsi matematika lanjutan seperti akar kuadrat, logaritma, dan fungsi trigonometri. Ini memberikan kesempatan untuk mempraktikkan penggunaan pustaka matematika di Python.
  • Validasi Input: Salah satu tantangan dalam proyek ini adalah memastikan bahwa input pengguna valid. Saya menggunakan validasi untuk membatasi karakter yang dapat dimasukkan ke dalam kalkulator.

Proyek ini adalah latihan yang sangat baik untuk pemula yang ingin meningkatkan keterampilan pemrograman Python mereka dan memahami bagaimana membangun aplikasi GUI dengan pustaka Tkinter.

Untuk melihat dan mengunduh kode sumber kalkulator ini, kunjungi repositori GitHub saya.

Persyaratan

Sebelum memulai, pastikan Anda memiliki:

  • Python 3.x: Versi terbaru dari Python, yang dapat diunduh dari python.org.
  • Pustaka Tkinter: Tkinter biasanya sudah termasuk dalam instalasi Python. Jika belum terinstal, Anda dapat menginstalnya melalui manajer paket Python seperti pip.

Instalasi

Untuk menjalankan kalkulator ini, ikuti langkah-langkah berikut:

  1. Clone repositori ke mesin lokal Anda:
    git clone https://github.com/JessicaAurelClarista/python-calculator.git
  2. Navigasi ke direktori proyek:
    cd python-calculator
  3. Jalankan skrip Python:
    python kalkulator.py

Keterangan Kode

1. Mengimpor Pustaka
import tkinter as tk # Mengimpor pustaka Tkinter untuk membuat GUI from math import sqrt, sin, cos, tan, log # Mengimpor fungsi matematika yang akan digunakan
  • Tkinter: Pustaka standar Python untuk membuat antarmuka grafis. Di sini, kita menggunakan Tkinter untuk merancang antarmuka kalkulator.
  • math: Modul Python yang menyediakan fungsi matematika seperti akar kuadrat (sqrt), sinus (sin), kosinus (cos), tangen (tan), dan logaritma (log).
2. Kelas Calculator
class Calculator: def __init__(self, root): self.root = root self.root.title("Kalkulator Python") # Menetapkan judul jendela self.expression = "" # Menyimpan ekspresi matematika yang sedang dibangun
  • __init__: Konstruktor kelas yang menyiapkan jendela aplikasi dan menginisialisasi variabel expression untuk menyimpan ekspresi matematika.
3. Membuat Widget Entry
self.entry = tk.Entry(root, width=40, borderwidth=5, font=('Arial', 14), justify='right') self.entry.grid(row=0, column=0, columnspan=5, padx=10, pady=10) self.entry.bind("<Key>", self.validate_keypress) # Mengikat fungsi validasi ke input keyboard
  • Entry Widget: Komponen GUI untuk menampilkan ekspresi matematika dan hasil perhitungan.
  • bind("<Key>", self.validate_keypress): Menghubungkan event keypress ke fungsi validate_keypress untuk memastikan input yang dimasukkan valid.
4. Membuat Tombol
button_labels = [ '7', '8', '9', '/', 'C', # Baris pertama tombol '4', '5', '6', '*', 'sqrt', # Baris kedua tombol '1', '2', '3', '-', '^', # Baris ketiga tombol '0', '.', '=', '+', 'log', # Baris keempat tombol '(', ')', 'sin', 'cos', 'tan', # Baris kelima tombol 'DEL' # Tombol hapus satu karakter ]
  • button_labels: Daftar label untuk setiap tombol pada kalkulator. Ini mencakup tombol untuk operasi dasar dan lanjutan.
row = 1 # Baris awal untuk penempatan tombol col = 0 # Kolom awal untuk penempatan tombol for label in button_labels: button = tk.Button(root, text=label, padx=20, pady=20, font=('Arial', 12)) if label not in ['C', '=', 'sqrt', 'log', 'sin', 'cos', 'tan', 'DEL']: button.config(command=lambda l=label: self.on_button_click(l)) # Mengatur fungsi tombol biasa elif label == 'C': button.config(command=self.on_clear) # Fungsi tombol Clear elif label == '=': button.config(command=self.on_equal) # Fungsi tombol sama dengan elif label == 'DEL': button.config(command=self.on_backspace) # Fungsi tombol Backspace else: button.config(command=lambda l=label: self.on_function_click(l)) # Fungsi tombol fungsi matematika khusus button.grid(row=row, column=col, padx=5, pady=5, sticky='nsew') # Menempatkan tombol di grid col += 1 if col > 4: # Pindah ke baris berikutnya jika kolom melebihi 4 col = 0 row += 1
  • Membuat dan Menempatkan Tombol: Tombol-tombol ditambahkan ke grid dan dikonfigurasi dengan fungsi yang sesuai. Tombol-tombol khusus seperti C, = dan DEL memiliki fungsi spesifik yang terikat padanya.
5. Fungsi Validasi Input
def validate_keypress(self, event): valid_keys = "0123456789+-*/().^" # Karakter yang diizinkan if event.char in valid_keys: return True # Mengizinkan karakter yang valid elif event.keysym in ('Return', 'BackSpace'): return True # Mengizinkan tombol Enter dan BackSpace else: return "break" # Menghentikan input karakter yang tidak valid
  • validate_keypress: Memastikan hanya karakter yang valid yang dapat dimasukkan ke dalam entry widget.
6. Fungsi Tombol
def on_button_click(self, char): self.expression += str(char) # Menambahkan karakter ke ekspresi self.entry.delete(0, tk.END) # Menghapus isi entry self.entry.insert(tk.END, self.expression) # Menampilkan ekspresi yang diperbarui
  • on_button_click: Menambahkan karakter ke ekspresi dan memperbarui tampilan entry widget.
def on_function_click(self, func): if func == 'sqrt': self.expression += 'sqrt(' # Menambahkan 'sqrt(' ke ekspresi elif func == 'log': self.expression += 'log(' # Menambahkan 'log(' ke ekspresi elif func == 'sin': self.expression += 'sin(' # Menambahkan 'sin(' ke ekspresi elif func == 'cos': self.expression += 'cos(' # Menambahkan 'cos(' ke ekspresi elif func == 'tan': self.expression += 'tan(' # Menambahkan 'tan(' ke ekspresi self.entry.delete(0, tk.END) # Menghapus isi entry self.entry.insert(tk.END, self.expression) # Menampilkan ekspresi yang diperbarui
  • on_function_click: Menambahkan fungsi matematika khusus (seperti sqrt, log, sin, cos, tan) ke ekspresi.

def on_clear(self): self.expression = "" # Mengosongkan ekspresi self.entry.delete(0, tk.END) # Menghapus isi entry
  • on_clear: Menghapus seluruh ekspresi yang sedang dibangun.
def on_backspace(self): self.expression = self.expression[:-1] # Menghapus karakter terakhir dari ekspresi self.entry.delete(0, tk.END) # Menghapus isi entry self.entry.insert(tk.END, self.expression) # Menampilkan ekspresi yang diperbarui
  • on_backspace: Menghapus karakter terakhir dari ekspresi.
def on_equal(self): try: self.expression = self.expression.replace('^', '**') # Mengganti '^' dengan '**' untuk eksponen result = eval(self.expression) # Mengevaluasi ekspresi matematika self.entry.delete(0, tk.END) # Menghapus isi entry self.entry.insert(tk.END, str(result)) # Menampilkan hasil self.expression = str(result) # Menyimpan hasil sebagai ekspresi baru except Exception as e: self.entry.delete(0, tk.END) # Menghapus isi entry self.entry.insert(tk.END, "Error") # Menampilkan pesan error self.expression = "" # Mengosongkan ekspresi
  • on_equal: Mengevaluasi ekspresi matematika dan menampilkan hasil. Jika ada kesalahan dalam evaluasi, menampilkan pesan error.
7. Menjalankan Aplikasi
if __name__ == "__main__": root = tk.Tk() # Membuat instance Tkinter calculator = Calculator(root) # Membuat instance kalkulator root.mainloop() # Memulai loop utama Tkinter
  • root.mainloop(): Memulai loop utama Tkinter yang menjaga jendela aplikasi tetap terbuka dan responsif.

Kesimpulan

Dengan mengikuti panduan ini, Anda dapat membuat kalkulator sederhana menggunakan Python dan Tkinter. Proyek ini memberikan pemahaman dasar tentang pembuatan GUI dan penerapan fungsi matematika dalam aplikasi. Selamat mencoba, dan semoga Anda mendapatkan pengalaman berharga dari proyek ini!

Posting Komentar

0 Komentar

Posting Komentar (0)
3/related/default