Langsung ke konten utama

Membuat Kalkulator Sederhana Menggunakan Python

 


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!

Komentar

Postingan populer dari blog ini

Perbedaan Antara Frontend, Backend, dan Full-Stack dalam Pengembangan Web

Pendahuluan Dalam pengembangan web, ada tiga komponen utama yang membentuk sebuah aplikasi atau situs web: frontend , backend , dan full-stack . Keduanya (frontend dan backend) bekerja sama untuk memastikan situs web atau aplikasi berjalan dengan lancar, sementara seorang full-stack developer memiliki kemampuan untuk menangani keduanya. Meskipun ketiganya saling terkait, mereka memiliki peran dan tanggung jawab yang berbeda. Artikel ini akan membahas perbedaan antara frontend, backend, dan full-stack dalam pengembangan web. 1. Apa Itu Frontend? Frontend adalah bagian dari aplikasi atau situs web yang langsung berinteraksi dengan pengguna. Bagian ini bertanggung jawab atas segala yang dilihat dan digunakan oleh pengguna di browser. Teknologi yang Digunakan : HTML (HyperText Markup Language): Untuk struktur halaman. CSS (Cascading Style Sheets): Untuk desain dan tata letak. JavaScript : Untuk interaktivitas dan dinamika. Framework/library yang populer: React , Angular , Vue.js . Tuga...

Orang Bikin Konten Edukasi Tapi View-nya Sepi: Salah Platform atau Salah Kita?

Kenapa konten edukasi sepi view? Artikel ini membahas apakah masalahnya ada di platform atau pada gaya penyampaian kita. Kita semua udah tau: bikin konten itu capek. Apalagi kalau niatnya edukasi—ngumpulin data, riset, nulis script, ngedit, dan mikirin caption. Tapi giliran udah posting? View-nya cuma 3. Dua di antaranya kamu sendiri, satu lagi mungkin sepupu yang nggak sengaja ke-swipe. Apakah Konten Edukasi Memang Kurang Diminati? Jujur aja, sebagian besar orang buka medsos bukan buat belajar. Mereka nyari hiburan, ketawa, atau kabur dari realita. Konten edukasi sering dianggap "berat", apalagi kalau tampilannya kaku, monoton, dan terlalu “sekolahan”. Tapi… itu bukan alasan buat nyerah. Salah Platform atau Salah Gaya Kita? Bisa jadi dua-duanya. Yuk kita kupas: 1. Platform Punya Algoritma Sendiri TikTok dan IG Reels lebih suka konten singkat, engaging, dan cepat nangkep perhatian. Kalau pembuka kamu terlalu datar, al...

Stop Manipulasi Emosi Anak

Guilt-Tripping Anak Pakai Makanan: Antara Kebaikan, Emosi, dan Validasi Murahan 🔥 Guilt-Tripping Anak Pakai Makanan: Antara Kebaikan, Emosi, dan Validasi Murahan 1. Pembukaan Kontekstual Di dunia ini, ada dua jenis orang baik: Yang satu kasih makanan dan lupa. Yang satu lagi kasih makanan, terus ngungkitnya sampai Hari Kiamat. Yang pertama jarang kita temui. Yang kedua? Setiap RT punya. Mereka muncul dalam wujud ibu-ibu tetangga, guru TK, atau tante kepo yang selalu bilang, “Tante dulu sering traktir kamu, kok sekarang kamu gak ramah?” Kedengarannya ringan. Tapi ini bukan sekadar omelan. Ini guilt-tripping —versi halus dari manipulasi emosional, yang makin ngenes karena sering ditujukan ke anak kecil. Dan kita semua pura-pura gak lihat. Karena siapa sih yang mau dibilang jahat ke orang yang suka ngasih makanan? Siapa yang berani buka suara waktu kebaikan dijadikan alat tekan? Padahal, kalau kamu udah mulai ngungkit pemberianmu ke an...