membuat jam digital versi 3

BelajarPython - Assalamualaikum wr. wb.

Jumpa lagi nih temen - temen.. kesempatan kali ini saya akan mencoba untuk mengajak kalian untuk berkreasi produk lagi.. Setelah sebelumnya saya telah upload mini aplikasi tentang jam yang sama.. Namun sekarang saya akan mencoba untuk menambah fitur dari jam tersebut..  Yaitu multiple alarm.. Let’s check it out temen - temen....

Pengenalan aplikasi yang akan kita buat.

Oke pada sesi ini saya akan mencoba menjelaskan lebih rinci lagi ya.. Jadi, aplikasi yang akan kita buat ini merupakan jam digital.. Namun ada satu fitur menarik disini.. Yaitu multiple alarm.. Dimana kita bisa menambahkan alarm sebanyak yang kita mau.. Gimana.. Menarik kan? Nah sebenarnya, aplikasi ini merupakan pengembangan dari aplikasi sebelumnya.. Dimana hanya bisa membuat satu alarm saja.. Jika kalian tertarik untuk melihatnya, KALIAN BISA KLIK DISINI.

Seperti aplikasi sebelumnya, jam ini akan menampilkan angka-angka saja.. Namun sedikit kerumitan disini.. Yaitu multiple alarm nya.. Dimana kita harus bisa mengurutkan alarm-alarm terdekat dengan waktu terkini.. Yang tentu saja ada algoritma khusus yang saya buat untuk mewujudkan hal tersebut.. Yang tentu saja cukup rumit jika kalian belum terbiasa bergelut dengan algoritma.. Namun, sesulit itukah algoritmanya? Simak sampai akhir ya.. hehe

Oya perlu kalian ketahui sebelum nya ya.. Aplikasi ini merupakan aplikasi jam digital versi ketiga.. Dimana versi pertama saya hanya menampilkan jam saja.. Dan yang kedua saya menambahkan fitur alarm tunggal.. Untuk melihat perkembangan tiap versinya, kalian BISA KLIK DISINI untuk lebih memahaminya.

Spesifikasi dan fitur jam digital + multiple alrm tkinter python.

Oya perlu kalian ketahui lagi.. Untuk membuat mini aplikasi ini, saya menggunakan tkinter... Udah tau tkinter kan? Kalau belum, kalian BISA BELAJAR DISINI YA.. Nah untuk lebih jelasnya, simak penjabaran berikut ini ya temen - temen....

Nama: mn-digital 3
Versi: 3.
Platform: Python 3.x
Modul: Tkinter dan pygame. Klik disini untuk tutorial instalasi pygame nya.
Baris Code: kurang lebih 191 baris code program.
Fitur: jam digital dengan multiple alarm.
syarat menjalankan: install python 3.x, punya editor teks atau IDE.
Cara menjalankan: install python 3, copy dan paste code program pada editor atau 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 loh.. 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 untuk membuat jam digital + multiple alarm tkinter python.

Dan pada sesi ini saya akan langsung memberikan code programnya.. Yuk Silahkan di simak di bawah ini ya temen - temen.. Let’s check it out...


from tkinter import *
import time
from tkinter.ttk import Combobox
import pygame

class Jam:
    def __init__(self, parent):
        self.parent = parent
        self.frameAlarm = Frame(parent)
        self.framLayar = Frame(parent)
        self.frameHapus = Frame(parent)

        self.teksTombol = StringVar(value='set')

        self.fileMusik = 'hysteria.mp3'
        self.antrianAlarm = []
        self.alarmHidup=False

        self.komponen()
        self.layarAlarm()
        self.scrollBar()
        self.buatComboBox()
        self.buatTombol()
        self.perbaui()

    def komponen(self):
        self.teksJam = StringVar()

        layarJam = Frame(self.parent, bd=10)
        layarJam.pack()

        self.jam = Label(layarJam, textvariable=self.teksJam,font=('Helvetica', 40, 'bold'),bg = "light blue",fg="blue")
        self.jam.pack()

        self.teks = Label(text="mn-belajarpython.blogspot.com")
        self.teks.pack()

    def scrollBar(self):
        scroll = Scrollbar(self.framLayar)
        scroll.grid(row=0,column=1, sticky=N+S)
        scroll.config(command=self.layar.yview)
        self.layar.config(yscrollcommand=scroll.set)

    def perbaui(self):
        datJam = time.strftime("%H:%M:%S", time.localtime())

        self.jam = time.strftime("%H", time.localtime())
        self.menit = time.strftime("%M", time.localtime())
        detik = time.strftime("%S", time.localtime())

        cocok = self.jam + ' : ' + self.menit

        if len(self.antrianAlarm) :
            if  cocok == self.antrianAlarm[0] and (detik=='00') :
                self.teksTombol.set('stop')
                self.antrianAlarm.pop(0)
                self.updateLayar()
                self.alarmHidup=True

                pygame.init()
                pygame.mixer.init()
                pygame.mixer.music.load(self.fileMusik)
                pygame.mixer.music.play()

        if self.alarmHidup and pygame.mixer.music.get_busy()==False :
            self.perintahSetAlarm()

        self.teksJam.set(datJam)
        self.timer = self.parent.after(1000, self.perbaui)

    def buatComboBox(self):
        Label(self.frameAlarm, text='Jam : ').grid(row=0,column=0)
        self.alarmJam = StringVar()
        self.comboJam = Combobox(self.frameAlarm, textvariable=self.alarmJam,
                                state='readonly', width=2)
        self.comboJam['values'] = ('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15',
                                     '16','17','18','19','20','21','21','22','23')
        self.comboJam.current(0)
        self.comboJam.grid(row=0,column=1)

        Label(self.frameAlarm, text='  Menit : ').grid(row=0,column=2)
        self.alarmMenit = StringVar()
        self.comboMenit = Combobox(self.frameAlarm, textvariable=self.alarmMenit,
                                state='readonly', width=2)
        self.comboMenit['values'] = ('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15',
                                     '16','17','18','19','20','21','21','22','23','24','25','26','27','28','29','30',
                                     '31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46',
                                      '47','48','49','50','51','52','53','54','55','56','57','58','59')
        self.comboMenit.current(0)
        self.comboMenit.grid(row=0,column=3)

        self.frameAlarm.pack(pady=3)

    def buatTombol(self):
        self.tombolSet = Button(self.frameAlarm,textvariable=self.teksTombol,command=self.perintahSetAlarm).grid(row=0,column=4)
        self.kolomHapus = Entry(self.frameHapus, width=5)
        self.kolomHapus.grid(row=0,column=0)
        self.tombolSet = Button(self.frameHapus, text='Hapus', command=self.perintahHapus).grid(row=0, column=1)

        self.frameHapus.pack()

    def perintahSetAlarm(self):
        if self.teksTombol.get() == 'set' :
            masukan = self.comboJam.get()+' : '+self.comboMenit.get()
            tidakAda = True
            for i in self.antrianAlarm :
                if i == masukan :
                    tidakAda=False
            if tidakAda :
                self.tentukanUrutan(angka=masukan)
            self.updateLayar()
        else :
            self.teksTombol.set('set')
            self.alarmHidup=False
            try :
                pygame.mixer.music.stop()
            except :
                pass

    def layarAlarm(self):
        self.layar = Text(self.framLayar, height=5, width=35, state=DISABLED)
        self.layar.grid(row=0,column=0)
        self.framLayar.pack()

    def updateLayar(self):
        masukan=''
        for i in range(len(self.antrianAlarm)) :
            masukan += str(i+1)+". "+ self.antrianAlarm[i]+'\n'
        self.layar.config(state=NORMAL)
        self.layar.delete('1.0',END)
        self.layar.insert(END, masukan)
        self.layar.config(state=DISABLED)

    def perintahHapus(self):
        try:
            for i in range(len(self.antrianAlarm)) :
                if int(self.kolomHapus.get())-1 == i :
                    self.antrianAlarm.pop(i)
                    self.updateLayar()
                    break
        except :
            pass

    def tentukanUrutan(self, angka=0):
        if angka != 0 :
            self.antrianAlarm.append(angka)
        jarakJamPositif = []
        jarakJamNegatif = []
        convertInt = []
        antrianBaruPositif = []
        antrianBaruNegatif = []

        for i in self.antrianAlarm :
            angka = ''
            for j in i :
                if j != ':' and j != ' ' :
                    angka += j
            convertInt.append(angka)
            jarak = int(self.jam + self.menit) - int(angka)
            jarak *= -1

            if jarak <= 0:
                jarakJamPositif.append(jarak)
            elif jarak > 0 :
                jarakJamNegatif.append(jarak)

        jarakJamPositif.sort()
        jarakJamNegatif.sort()

        for i in jarakJamPositif :
            for j in range(len(convertInt)) :
                jarak = int(self.jam + self.menit) - int(convertInt[j])
                jarak *= -1
                if i == jarak :
                    antrianBaruPositif.append(self.antrianAlarm[j])

        for i in jarakJamNegatif :
            for j in range(len(convertInt)) :
                jarak = int(self.jam + self.menit) - int(convertInt[j])
                jarak *= -1
                if i == jarak :
                    antrianBaruNegatif.append(self.antrianAlarm[j])

        self.antrianAlarm = antrianBaruNegatif+antrianBaruPositif


if __name__ == '__main__':
    root = Tk()
    root.title("jam digital")
    app = Jam(root)
    root.mainloop()



Nah itu dia temen - temen code program nya.. Bila di bandingkan dengan versi sebelumnya, code diatas memiliki penambahan baris yang signifikan.. Dimana sebelumnya tidak lebih dari 100 baris saja.. nah lalu sepertii apa tampilan yang akan di hasilkan dari code program di atas? langsung saja di simak gambar yang ada di bawah ini ya...



Nah itu dia temen - temen hasil dari code program di atas.. Gimana ? Cukup bagus ya.. Hehe...

Saya ingatkan lagi ya... Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. 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...

Penjelasan Code program untuk membuat jam digital.

nah pada bagian ini saya akan mencoba untuk menjelaskan code program yang telah saya bagikan diatas tadi yaa.. Hal ini saya lakukan agar kalian bisa memahami code program untuk membuat code program untuk membuat jam digital ini... Yuk tanpa lama - lama lagi langsung saja kita simak sama - sama penjelasan saya di bawah ini...

[NOTE : Teks yang berwarna merah pada penjelasan merupakan "Code program" yang di tambahkan pada versi kali ini. Dan tidak ada di versi sebelumnya]

from tkinter import *  //digunakan untuk mengimport modul tkinter
import time  //mengimport modul time untuk mendapatkan jam terkini
from tkinter.ttk import Combobox  //digunakan untuk mengimport combbox
import pygame  //digunakan untuk mengimport modul pygame nya

class Jam:  //membuat class dengan nama jam
    def __init__(self, parent):  //merupakan construktor dari class jam.
        self.parent = parent   //menampung nilai yang ada di variabel ‘parent’
        self.frameAlarm = Frame(parent)  //membuat frame atau tempat penempatan komponen pembuat alarm nya.
        self.framLayar = Frame(parent)  //membuat farame yang akan digunakan untuk menempatkan layar.
        self.frameHapus = Frame(parent)  //digunakan untuk menempatkan elemen - elemen untuk  untuk menghapus alarm.

        self.teksTombol = StringVar(value='set')  //digunakan untuk pengubah teks tombol pembuat alarm nya

        self.fileMusik = 'hysteria.mp3'  //code ini merupakan penentu bunyi alarm yang akan di hasilkan nantinya. Silahkan tempatkan file sound alarmnya satu folder dengan file pythonnya. Untuk file sound yang ada di folder sebelumnya, bisa menggunakan ‘../hysteria.mp3’ dan jika ada di sub folder bisa menggunakan ‘./namaFolder/hysteria.mp3’ atau silahkan pelajari tentan pembacaan lokasi file ini terlebih dahulu.
        self.antrianAlarm = []  //digunakan untuk menampunga antrian alarm di versi selanjutnya. 
        self.alarmHidup=False  //penentu alarm hidup atau tidak yang kedua atau pembantu variabel ‘self.hidupMati’

        self.komponen()  //memanggil atau menjalankan metode atau fungsi dengan nama ‘komponen’.
        self.layarAlarm()  //memanggil atau menjalankan metode atau fungsi dengan nama ‘layarAlarm’.
        self.scrollBar()  //memanggil atau menjalankan metode atau fungsi dengan nama ‘scrollBar’.
        self.buatComboBox()  //memanggil atau menjalankan metode atau fungsi dengan nama ‘buatComboBox’.
        self.buatTombol()  //memanggil atau menjalankan metode atau fungsi dengan nama ‘buatTombol’.
        self.perbaui()  //memanggil atau menjalankan metode atau fungsi dengan nama ‘perbarui’.

    def komponen(self):  //merupakan sebuah metode atau fungsi dengan nama komponen yang digunakan untuk menampilkan semua komponennya.
        self.teksJam = StringVar()  //variabel untuk menampilkan angka jam

        layarJam = Frame(self.parent, bd=10)  //membuat sub frame untuk tempat angka jam nya
        layarJam.pack()  //memasukkan frame tempat jam nya ke frame utama.

        self.jam = Label(layarJam, textvariable=self.teksJam,font=('Helvetica', 40, 'bold'),bg = "light blue",fg="blue")  //digunakan untuk menampilkan angka jam dengan settingan yang sudah saya buat. Seperti : font :helvetica tebal dengan ukuran 40. Backround biru cerah dan font biru
        self.jam.pack()  //memasukkan teks jam di atas
        self.teks = Label(text="mn-belajarpython.blogspot.com")  //sebuah teks yang akan saya tampilkan pada window
        self.teks.pack()  //menampilkan teks diatas ke dalam window

    def scrollBar(self):  //digunakan untuk membuat metode atau fungsi dengan nama ‘scrolbar’ yang digunakan untuk membuat scrolbar layar alarm.
        scroll = Scrollbar(self.framLayar)  //digunakan untuk mendefinisikan sebuah scrollbar.
        scroll.grid(row=0,column=1, sticky=N+S)  //digunakan untuk meletakkan scroll pada frame
        scroll.config(command=self.layar.yview)  //mengatur scrollbar untuk perpindahan atas bawah.
        self.layar.config(yscrollcommand=scroll.set)  //digunakan untuk mengaktifkan scrollbar nya

    def perbaui(self):  //metode atau fungsi dengan nama ‘perbarui’. Yang digunakan untuk mengupdate jam. Setiap detik.
        datJam = time.strftime("%H:%M:%S", time.localtime())  //digunakan untuk mengetahui jam, menit dan detik di komputer kita. Dan ditampung ke dalam variabel datjam.

        jam = time.strftime("%H", time.localtime())  //digunakan untuk mengetahui jam di komputer kita. Lalu di tampung ke dalam variabel jam.
        menit = time.strftime("%M", time.localtime())  //digunakan untuk mengetahui menit di komputer kita. Dan disimpan ke dalam variabel menit.
        detik = time.strftime("%S", time.localtime())  //digunakan untuk mengetahui detik di komputer kita. Lalu disimpan ke dalam variabel detik.

        cocok = self.jam + ' : ' + self.menit  //digunakan untuk pencocok alarm nya. Yaitu mengubah waktu terkini  menjadi format yang sama dengan format jam.
        if len(self.antrianAlarm) :
            if  cocok == self.antrianAlarm[0] and (detik=='00') :  //pengecekan apakah ada alarm terpasang atau tidak. Sekaligus mencocokan waktu alarm nya sama atau tidak dengan waktu sekarnag.
                self.teksTombol.set('stop')  //digunakan untuk mengubah teks tombol menjadi ‘stop’.
                self.antrianAlarm.pop(0)  // digunakan untuk membuang antrian alarm.
                self.updateLayar()  //digunakan untuk mengupdate tampilan layar setalah antriannya dikutrangi.
                self.alarmHidup=True  //mengubah nilai variabel alarmHidup menjadi true. Menandakan alarm sedang hidup.
                pygame.init()  //inisialisasi pygame untuk membunyikan alarm.
                pygame.mixer.init()  //inisialisasi pygame untuk membunyikan alarm.
                pygame.mixer.music.load(self.fileMusik)  //digunakan untuk memuat file nada alarm nya. Dengan lokasi yang telah tertampung di self.fileMusik.
                pygame.mixer.music.play()  //digunakan untuk memutar musiknya.

        if self.alarmHidup and pygame.mixer.music.get_busy()==False :  //digunakan untuk mengecek apakah alarm nya sedang berbunyi atau tidak.
            self.perintahSetAlarm()  //memanggil atau menjalankan metode dengan nama ‘perintahSetAlarm’.

        self.teksJam.set(datJam)  //digunakan untuk mengubah tampilan jam menjadi jam terkini pada komputer. Yang sudah di ketahui dan di tampung ke dalam variabel ‘datjam’.
        self.timer = self.parent.after(1000, self.perbaui)  //digunakan untuk memanggil metode perbarui selama 1000 milisecond. Atau selama 1 detik sekali.

    def buatComboBox(self):  //metode dan fungsi dengan nama ‘buatComboBox’ unguk membuat combobox pembuat alarm nya.
        Label(self.frameAlarm, text='Jam : ').grid(row=0,column=0)  //digunakan untuk membuat label. Sekaligus memasukkan ke dalam frame ‘alarm’.
        self.alarmJam = StringVar()  //membuat variabel yang digunakan untuk menampung alarmnya.
        self.comboJam = Combobox(self.frameAlarm, textvariable=self.alarmJam,state='readonly', width=2) self.comboJam['values'] =('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','21','22','23')  //digunakan untuk membuat combobox untuk memeilih jam alarm nya.
        self.comboJam.current(0)  //code ini digunakan untuk menentukan nilai default combobox nya belum terpilih.
        self.comboJam.grid(row=0,column=1)  //digunakan untuk memasukkan combobox jam nya diatas ke dalam frame.

        Label(self.frameAlarm, text='  Menit : ').grid(row=0,column=2)  //digunakan untuk membuat label ‘menit’ kemudian langsung di masukkan ke dalam window.
        self.alarmMenit = StringVar()  //membuat variabel yang akan digunakan untuk menampung nilai menit alarm.
        self.comboMenit = Combobox(self.frameAlarm, textvariable=self.alarmMenit,state='readonly', width=2)self.comboMenit['values'] = ('00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15',
'16','17','18','19','20','21','21','22','23','24','25','26','27','28','29','30',
'31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46',
'47','48','49','50','51','52','53','54','55','56','57','58','59')  //digunakan untuk membuat combobox pemilih detik.
        self.comboMenit.current(0)  //menentukan nilai default comboboxnya di indek 0.
        self.comboMenit.grid(row=0,column=3)  //memasukkan combobox alarm nya pada window.

        self.frameAlarm.pack(pady=3)  //mamasukkan sub-frame tempat alarm nya ke dalam frame utama. Dengan jarak renggang (padding) antar sebelum dan sesudah layar sebanyak 3 satuan.

    def buatTombol(self):  //digunakan untuk membuat metode dengan nama ‘buatTombol’. Yang tentu saja fungsi nya untuk membuat tombol.
        self.tombolSet = Button(self.frameAlarm,textvariable=self.teksTombol,command=self.perintahSetAlarm).grid(row=0,column=4)  //membuat tombol dengan settingan yang sudah saya berikan di dalamnya. Yaitu dengan tempat frame pada sub frame. Yaitu frame alarm, dengan teks tombol yang ada pada variabel ‘self.teksTombol’. Dengan perintah ketika di klik adalah menjalankan metode ‘perintahSetAlarm’.
        self.kolomHapus = Entry(self.frameHapus, width=5)  //membuat sebuah kolom yang akan digunakan untuk menghapus alarm.
        self.kolomHapus.grid(row=0,column=0)  //memasukkan kolom alarm ke dalam sub frame. Yaitu ‘frameHapus’.
        self.tombolSet = Button(self.frameHapus, text='Hapus', command=self.perintahHapus).grid(row=0, column=1)  //digunakan untuk membuat tombol hapus. Dengan perintah ketika di klik, akan menjalankan metode atau fungsi dengan nama ‘perintahHapus’.

        self.frameHapus.pack()  //memasukkan subframe ke window utama.

    def perintahSetAlarm(self):  //membuat metode atau fungsi dengan nama ‘perintahSetAlarm’. Yang berfungsi untuk membuat atau membuat alarm.
        if self.teksTombol.get() == 'set' :  //mengecek apakah teks tombolnya bernilai ‘set’.
            masukan = self.comboJam.get()+' : '+self.comboMenit.get()  //digunakan untuk mengambil angka - angka jam pada combo box.
            tidakAda = True  //inisialisasi boolean. Yang akan digunakan untuk penentu pengecekan.
            for i in self.antrianAlarm :  //melakukan perulangan sebanyak antrian alarm.
                if i == masukan :  //mengecek apakah alarm baru ada yang sama dengan antrian
                    tidakAda=False  //nilai boolean var ‘tidakAda’ diubah menjadi ‘false’ jika alarm baru ada yang sama dengan antrian alarm.
            if tidakAda :  //mengecek apakah variabel ‘tidakAda’ benilai true. Yang artinya sama saja mengecek apakah alarm baru tidak ada yang sama dengan antrian alarm.
                self.tentukanUrutan(angka=masukan)  //memanggil metode dengan nama ‘tentukanUrutan’ dengan memberikan parameter  variabel ‘masukan’.
            self.updateLayar()  //memanggil sebuah metode dengan nama ‘updateLayar’.
        else :  //kondisi jika teks tombol tidak sama dengan ‘set’.
            self.hidupMati.set(False)  //mengubah nilai vaiabel ‘set’ menjdi false. Yang artinya alarm tidak terpasang.
            self.teksTombol.set('set')  //menguah teks tombol menjadi ‘set’.
            self.alarmHidup=False  //digunakan untuk mengubah variabel ‘alarmHidup’ menjadi false. Yang aritnya alarm mati.
            try :  //digunakan untuk mencoba code program.
                pygame.mixer.music.stop()  //digunakan untuk menghentikan sebuah alarm yang sedang berbunya. Atau nada yang berbunyi.
            except :  //kondisi jika code diatas eror.
                Pass  //tidak melakukan apa apa.


    def layarAlarm(self):  //metode dengan nama ‘layarAlarm’ yang digunakna untuk membuat layar alarm.
        self.layar = Text(self.framLayar, height=5, width=35, state=DISABLED)  //digunakan untuk membuat teks area yang saya di disable kan. Sehingga tidak bisa di edit oleh user. Sehingga akan menyerupai layar.
        self.layar.grid(row=0,column=0)  //digunakan untuk memasukan layar ke subframe. Yaitu ‘self.framLayar’. Yang sudah saya sebut pada code sebelumnya. Yaitu sebagai parameter saat mendefinisikan layar.
        self.framLayar.pack()  //digunakan untuk memasukkan subframe ‘framLayar’ ke frame utama.

    def updateLayar(self):  //metode yang digunakan untuk mengupdate layar yang menampilkan antrian alarm.
        masukan=''  //mendefinisikan variabel dengan isi string kosong.
        for i in range(len(self.antrianAlarm)) :  //melakukan perulangan sebanyak antrian alarm.
            masukan += str(i+1)+". "+ self.antrianAlarm[i]+'\n'  //menambah semua antrian alarm ke dalam variabel ‘masukan’.
        self.layar.config(state=NORMAL)  //digunakan untuk menormalkan text area atau layar agar bisa di edit lagi setelah sebelumnya di disable agar tidak bisa di edit.
        self.layar.delete('1.0',END)  //digunakan untuk menghapus seluruh isi text area atau layar penampil antrian alarm.
        self.layar.insert(END, masukan)  //memasukkan antrian alarm terbaru kelayar.
        self.layar.config(state=DISABLED)  //men disable kan lagi text area agar tidak bisa di edit. Sehingga seperti layar.

    def perintahHapus(self):  //metode yang digunakan untuk menghapus sebuah alarm.
        try:  //mencoba beberapa baris code program.
            for i in range(len(self.antrianAlarm)) :  //melakukan perulangan sebanyak antrian alarm.
                if int(self.kolomHapus.get())-1 == i :  //digunakan untuk mencocokan masukan nomer untuk menghapus sebuah alarm.
                    self.antrianAlarm.pop(i)  //menghapus alarm dengan no. urut yang dikehendaki oleh user.
                    self.updateLayar()  //mengupdate layar dengan cara memanggil metode ‘updateLayar’
                    break  //digunakan untuk menghentikan alarm. Jika sudah menemukan urutan alarm yang dimaksud untuk di hapus.
        except :  //digunakan jika percobaan code diatas terjadi error.
            pass  //digunakan agar tidak melakukan apa - apa.

    def tentukanUrutan(self, angka=0):  //metode atau fungsi yang digunakan untuk mengurutkan alarm yang dibuat oleh user. Dengan parameter format alarm.


//code dibawah merupakan algoritma untuk mengurutkan alarm agar alarm terdekat akan  selalu berada di urutan paling atas. Mohon maaf saya tidak bisa menjelaskannya satau persatu. Karena logika tidak bisa saya jelaskan dengan kata- kata. Mohon maaf ya temen - temn..
        if angka != 0 :
            self.antrianAlarm.append(angka)
        jarakJamPositif = []
        jarakJamNegatif = []
        convertInt = []
        antrianBaruPositif = []
        antrianBaruNegatif = []

        for i in self.antrianAlarm :
            angka = ''
            for j in i :
                if j != ':' and j != ' ' :
                    angka += j
            convertInt.append(angka)
            jarak = int(self.jam + self.menit) - int(angka)
            jarak *= -1

            if jarak <= 0:
                jarakJamPositif.append(jarak)
            elif jarak > 0 :
                jarakJamNegatif.append(jarak)

        jarakJamPositif.sort()
        jarakJamNegatif.sort()

        for i in jarakJamPositif :
            for j in range(len(convertInt)) :
                jarak = int(self.jam + self.menit) - int(convertInt[j])
                jarak *= -1
                if i == jarak :
                    antrianBaruPositif.append(self.antrianAlarm[j])

        for i in jarakJamNegatif :
            for j in range(len(convertInt)) :
                jarak = int(self.jam + self.menit) - int(convertInt[j])
                jarak *= -1
                if i == jarak :
                    antrianBaruNegatif.append(self.antrianAlarm[j])

        self.antrianAlarm = antrianBaruNegatif+antrianBaruPositif

if __name__ == '__main__':  //merupakan metode utama. Atau code yang akan di jalankan pertama kali.
    root = Tk()  //digunakan untuk membuat window.
    root.title("jam digital")  //memberikan judl pada window.
    app = Jam(root)  //memanggil class ‘jam’ yang sudah di buat di atas.dengan ‘root’ sebagai parameter.

    root.mainloop()  //digunakan agar window tidak langsung close otomatis saat dijalankan.


nah itu dia temen - temen penjelasan dari code program diatas.. Semoga penjelasan yang sudah saya berikan tadi dapat sedikit membantu penjelasan code program untuk membuat jam digital dengan multiple alarm nya ya...

Terakhir kali saya ingatkan ya... Kalian juga bisa membuat code program ini menjadi file aplikasi loh.. iya file aplikasi seperti "exe" itu loh.. 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...



Dan itu dia temen - temen cara untuk membuat jam digital nya.. Semoga apa yang telah saya sampaikan di atas dapat memberikan manfaat bagi kalian yaa... Dan tentu saja saya harap dapat menjadikan referensi untuk membuat sebuah produk atau untuk belajar python..

Oke sampai deisini dulu ya temen - temen bahasan pada postingan saya kali ini,, jangan lupa baca tutorial menarik lainnya ya.. Dan jangan lupa berkomentar atau berikan masukan atau keritikan kalian ya... Terimakasih.. Sampai jumpa di tutorial yang lainnya ya...

Wassalamualaikum wr.wb.
Previous
Next Post »
Thanks for your comment