Stopwatch Python Tkinter versi 4

BelajarPython - Assalamualaikum wr. wb.

Jumpa lagi sahabat python.. Pada kesempatan kali ini saya akan mengajak kalian untuk membuat aplikasi stopwatch nih.. Seperti apa? Langsung saja yuk di simak...

Pengenalan aplikasi yang akan kita buat.

Aplikasi yang kita buat kali ini adalah aplikasi stopwatch pada umumnya.. Dan saya rasa tidak ada yang sepesial juga.. hehe

Aplikasi ini saya posting dengan berbagai versi.. Dengan penambahan fitur di tiap versinya.. Jika kalian ingin melihat semua versi nya, KLIK DISINI ya...

Kali ini, saya akan memberikan versi keempat. Dimana pada versi ini saya akan mengupdate mini layar di versi sebelumnya.  Dan tentu saja layar nya tidak bisa di edit lagi seperti versi sebelumnya ya.

Rincian Lengkap Aplikasi Stopwatch Tkinter Versi 4.0

Aplikasi ini menggunakan library Tkinter.. Jadi, untuk menjalankannya, kalian tidak perlu install library tambahan.... Dan berikut rincian lengkap versi ini..

Nama: mn-StopWatch 4.0
Versi: 4.0 || versi awal.
Platform: Python 3.x  || Install.
Modul: Tkinter.
Baris Code: +-92 baris.
Penambahan: +-15 baris.
Terdiri dari: 1 class dan 11 metode.
Fitur: Update Layar
Kelemahan: mungkin ada bug. Laporkan jika ada.
syarat menjalankan: Python 3.x, dan editor teks / IDE.
Cara menjalankan: install python 3, copy paste code program pada editor/IDE, simpan dalam file python(ekstensi ‘.py’), lalu jalankan.

Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu.. sehingga, nantinya kita cukup klik dua kali saja untuk menjalankan aplikasi ini... tanpa perlu repot - repot membuka nya di IDLE atau IDE python.. nah seperti apa caranya? cukup mudah kok.. dan saya juga sudah membuatkan tutorialnya.. untuk kalian yang menggunakan windows, KALIAN BISA KLIK DISINI ya temen - temen.. atau jika pada link pertama terlalu rumit, KALIAN BISA MENCOBA CARA INI ya.... dan bagi pengguna linux ? tenang saja.. bisa juga kok membuat file executable nya.. untuk melihat tutorialnya, KALIAN BISA KLIK DISINI temen - temen...

Code program aplikasi StopWatch Tkinter versi 2.0

Nah lalu seperti apa code program versi ini ? Oke, Berikut saya berikan code program nya ya...


from tkinter import *
import time

class StopWatch(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self._start = 0.0
        self.waktuSekarang = 0.0
        self.sedangBerjalan = False
        self.waktuString = StringVar()
        self.textStart= StringVar()
        self.textStart.set('Start')
        parent.configure(background='light blue')
        parent.title('stopwatch')
        self.buatTeks()
        self.buatKolom()
        self.buatTombol()
        self.posisi=1

    def buatTeks(self):
        self.teks = Label(self, textvariable=self.waktuString,font="Verdana 19 bold", bg='light blue', fg='blue')
        self.aturWaktu(self.waktuSekarang)
        self.teks.grid(row=0, column=0)

    def perbarui(self):
        self.waktuSekarang = time.time() - self._start
        self.aturWaktu(self.waktuSekarang)
        self._timer = self.after(50, self.perbarui)

    def aturWaktu(self, waktu):
        menit = int(waktu / 60)
        detik = int(waktu - menit * 60.0)
        jam = int((waktu - menit * 60.0 - detik) * 100)
        self.waktuString.set('%02d:%02d:%02d' % (menit, detik, jam))

    def Start(self):
        if not self.sedangBerjalan and self.textStart.get() == 'Start' :
            self.textStart.set('Cetak')
            self._start = time.time() - self.waktuSekarang
            self.perbarui()
            self.sedangBerjalan = True
        elif self.sedangBerjalan and self.textStart.get() == 'Cetak' :
            self.setKolom(str(self.posisi)+ ". " + self.waktuString.get()+"\n")
            self.posisi+=1

    def pause(self):
        if self.sedangBerjalan:
            self.textStart.set('Start')
            self.after_cancel(self._timer)
            self.waktuSekarang = time.time() - self._start
            self.aturWaktu(self.waktuSekarang)
            self.sedangBerjalan = False

    def Reset(self):
        self._start = time.time()
        self.waktuSekarang = 0.0
        self.aturWaktu(self.waktuSekarang)
        self.kolom.config(state=NORMAL)
        self.kolom.delete('1.0',END)
        self.kolom.configure(state=DISABLED)

    def buatKolom(self):
        self.kolom = Text(height=12, width=30, bg='blue', fg='white')
        self.scrollBar()
        self.kolom.grid(row=1,column=0,columnspan=4,pady=4)
        self.kolom.configure(state=DISABLED)

    def setKolom(self, nilai):
        self.kolom.config(state=NORMAL)
        self.kolom.insert(END,nilai)
        self.kolom.configure(state=DISABLED)

    def scrollBar(self):
        scroll = Scrollbar()
        scroll.grid(row=1, column=5, rowspan=1, sticky=N+S+W)
        scroll.config(command=self.kolom.yview)
        self.kolom.config(yscrollcommand=scroll.set)

    def buatTombol(self):
        Button(textvariable=self.textStart, command=self.Start).grid(row=2, column=0)
        Button(text='Pause', command=self.pause).grid(row=2, column=1)
        Button(text='Reset', command=self.Reset).grid(row=2, column=2)
        Button(text='Quit', command=self.quit).grid(row=2, column=3)

def main():
    root = Tk()
    sw = StopWatch(root)
    sw.grid(row=0,column=0, columnspan=4)
    root.mainloop()

if __name__ == '__main__':
    main()


Dan berikut contoh screenshoot dari mini aplikasi kali ini...


Penjelasan code program Aplikasi StopWatch Tkinter versi 2.0

Sekarang saya akan mencoba untuk menjelaskan code program yang sudah saya bagikan di atas tadi.. Agar kalian lebih mudah untuk memahaminya.. Oke, Langsung saja..
[NOTE : Teks berwarna MERAH pada penjelasan adalah Code tambahan yang tidak ada di versi sebelumnyaDan yang Berwarna BIRU akan di hapus di versi berikutnya. Jika Code berwarna MERAH dan komentar berwarna BIRU maka merupakan code baru dan akan di hapus di versi berikutnya]

from tkinter import *  //mengimpor semua class ‘Tkinter’
import time  //mengimport class ‘Time’

class StopWatch(Frame):  //class ‘StopWatch’ dan meng inheritence class ‘Frame’
    def __init__(self, parent):  //membuat construktor dari class ‘StopWatch’
        Frame.__init__(self, parent) //menjalankan konstruktor class parent (Frame)
        self._start = 0.0  //membuat variabel
        self.waktuSekarang = 0.0  //inisialisasi variabel untuk memperbarui waktu
        self.sedangBerjalan = False   //inisialisasi variabel ‘sedangBerjalan’ (False = stopwatch tidak berjalan. True=Stopwatch berjalan)
        self.waktuString = StringVar()  //insiialisasi class stringvar (untuk memperbarui teks angka stopwatch)
        self.textStart= StringVar()  //inisialisasi variabel dan class StringVar. Variabel ini digunakan untuk teks tombol ‘start/resume/pause’
        self.textStart.set('Start')  //mengubah isi teks ‘textStart’ menjadi ‘start’
        parent.configure(background='light blue')  //mengubah warna window menjadi biru
        parent.title('stopwatch')  //mengubah judul window
        self.buatTeks()  //menjalankan metode ‘buatTeks’
        self.buatKolom()  //menjalankan metode ‘buatKolom
        self.buatTombol()  //menjalankan metode ‘buatTombol’
        self.posisi=1  //inisialisasi ‘posisi’ (urutan pencetakan)

    def buatTeks(self):  //metode ‘buatTeks’
        self.teks = Label(self, textvariable=self.waktuString,font="Verdana 19 bold", bg='light blue', fg='blue')  //membuat label dengan settingan dan ukuran yang sudah saya tentukan. Ini untuk menampilkan angka angka stopwatch
        self.aturWaktu(self.waktuSekarang)  //menjalankan metode ‘aturWaktu’ dengan memasukkan nilai variabel ‘waktuSekarang’ sebagai parameter
        self.teks.grid(row=0, column=0)  //memasukkan teks angka stopwatch kedalam window

    def perbarui(self):  //metode perbarui waktu
        self.waktuSekarang = time.time() - self._start  //mendpatkan waktu sekarang (waktu stopwatch)
        self.aturWaktu(self.waktuSekarang)  //menjalankan metode ‘aturWaktu’ dengan memasukkan nilai variabel ‘waktuSekarang’ sebagai parameter
        self._timer = self.after(50, self.perbarui)  //digunakan untuk memanggil metode ‘perbarui’ lagi setelah/setiap 50 mili detik

    def aturWaktu(self, waktu):  //metode ‘aturWaktu’
        menit = int(waktu / 60)  //mendapatkan waktu dalam menit
        detik = int(waktu - menit * 60.0)  //mendapatkan waktu dalam detik
        jam = int((waktu - menit * 60.0 - detik) * 100)   //mendapatkan waktu dalam mili detik
        self.waktuString.set('%02d:%02d:%02d' % (menit, detik, jam))  //menggabungkan angka menit, detik dan mili detik dan di masukkan ke dalam ‘WaktuString’

    def Start(self):  //metode ‘start’
        if not self.sedangBerjalan and (self.textStart.get() == 'Start' or self.textStart.get()=='Resume') :  //memastikan stopwatch tidak berjalan dan teks tombolnya adalah ‘Start’ atau ‘Resume’
            self.textStart.set('cETAK')   //mengubah teks tombol menjadi ‘Pause’
            self._start = time.time() - self.waktuSekarang  //mendapatkan nilai stop watch
            self.perbarui()  //menjalankan metode perbarui
            self.sedangBerjalan = True  //mengubah variabel menajdi true. (menandakan stopwatch berjalan)
        elif self.sedangBerjalan and self.textStart.get() == 'Pause' :  //mengecek apakah stopwatch berjalan dan teks tombolnya adalah ‘Pause’
            self.setKolom(str(self.posisi)+ ". " + self.waktuString.get()+"\n")  //memasukkan nilai stopwach ke layar (menjalankan metode setKolom)
            self.posisi+=1  //menambah nilai ‘posisi’ (uruatan cetak)

    def pause(self):   //metode ‘pause’
        if self.sedangBerjalan:  //memastikan stopwatch berjalan (bernilai True)
            self.after_cancel(self._timer)  //menjalankan metode ‘after_cancel’ (bawaan)  untuk pause timer
            self.waktuSekarang = time.time() - self._start  //mendapatkan waktu stopwatch
            self.aturWaktu(self.waktuSekarang)  //menjalankan metode ‘aturWaktu’ 
            self.sedangBerjalan = False  //mengubah variabel ‘sedangBerjalan’ menjadi false (menandakan stopwatch berhenti)

    def Reset(self):  //metode ‘Reset’
        self._start = time.time()  //mendapatkan waktu stopwatch
        self.waktuSekarang = 0.0  //mereset waktu
        self.aturWaktu(self.waktuSekarang)  //menjalankan metode ‘aturWaktu’ dengan memasukkan ‘waktuSekarang’ sebagai parameter
        self.kolom.config(state=NORMAL)  //membuat layar agar bisa di edit
        self.kolom.delete('1.0',END)  //menghapus semua isi di kolom teks (mini layar)
        self.kolom.configure(state=DISABLED)  //membuat layar tidak bisa di edit

    def buatKolom(self):  //metode buatKolom
        self.kolom = Text(height=12, width=30, bg='blue', fg='white')  //membuat kolom teks untuk layar dengan beberapa settingan
        self.scrollBar()  //menjalankan metode ‘scrollBar’
        self.kolom.grid(row=1,column=0,columnspan=4,pady=4)  //memasukkan layar ke window
        self.kolom.configure(state=DISABLED)  //membuat layar tidak bisa di edit

    def setKolom(self, nilai):   //metode ‘setkolom’ (untuk memasukkan nilai ke layar)
        self.kolom.config(state=NORMAL)  //membuat layar agar bisa di edit
        self.kolom.insert(END,nilai)  //memasukkan nilai ke dalam layar
        self.kolom.configure(state=DISABLED)  //membuat layar tidak bisa di edit

    def scrollBar(self):  //metode ‘scrollBar’
        scroll = Scrollbar()  //inisialisasi scrollbar
        scroll.grid(row=1, column=5, rowspan=1, sticky=N+S+W)  //memasukkan scrollbar ke window
        scroll.config(command=self.kolom.yview)  //menghubungkan scrollbar ke layar
        self.kolom.config(yscrollcommand=scroll.set)   //mengaktifkan perintah scrollbar di layar

    def buatTombol(self):  //metode buat tombol
        Button(textvariable=self.textStart, command=self.Start).grid(row=2, column=0)  //membuat tombol ‘start atau resume atau pause’ dan memasukkan ke dalm window
        Button(text='Pause', command=self.pause).grid(row=2, column=1)  //membuat tombol pause
        Button(text='Reset', command=self.Reset).grid(row=2, column=1)  //membuat tombol ‘Reset’ yang akan menjalankan metode ‘Reset’ ketika di klik dan langsung di masukkan ke window
        Button(text='Quit', command=self.quit).grid(row=2, column=2)  //membuat tombol ‘Quit’ yang akan menutup aplikasi  ketika di klik dan langsung di masukkan ke window

def main():  //metode main
    root = Tk()  //menjalankan window tkinter
    sw = StopWatch(root)  //menjalankan class ‘stopWatch’
    sw.grid(row=0,column=0, columnspan=4)  //memasukkan frame class ‘StopWatch’ ke window
    root.mainloop()  //agar tidak langsung close

if __name__ == '__main__':   //code yang di jalankan pertama kali

    main()  //menjalankan metode ‘main’


Nah itu dia temen - temen penjelasan code programnya.. Mohon maaf apabila ada penjelasan yang kurang jelas, atau bahkan ada kekeliruan... Mohon kasi pembenaran atau pendapat kalian di kolom komentar ya... Biar kita bisa belajar bersama..

Oke terimakasih dan sampai di sini dulu ya... Jangan lupa untuk membaca versi yang lain... Biar ilmunya nambah.. Hehe.. Temikasih sekali lagi dan sekian...

Wassalamualaikum wr. wb.

Previous
Next Post »
Thanks for your comment