BelajarPython - assalamualaikum wr.wb
Jumpa lagi nih temen - temen pada kesempatan kali ini, saya akan mencoba untuk melanjutkan postingan saya mengenai pembuatan aplikasi yang sudah saya posting sebelumnya yaa... Jadi pada postingan kali ini saya akan mencoba menambahkan fitur baru.. Nah aplikasi apa yang akan saya tambahkan fiturnya kali ini? Untuk mengetahui nya langsung saja kita simak postingan saya kali ini..
Nah agar kalian lebih paham, maka tidak ada salahnya bagi kalian jika kalian melihat versi yang sebelumnya ya... Kalian bisa KLIK DISINI UNTUK MEMBACA VERSI YANG SEBELUMNYA. Atau, kalian juga bisa membaca PERKEMBANGAN TIAP VERSINYA DISINI.
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...
Nah itu dia temen - temen code programya... Cukup panjang juga ya... Hehe. Nah lalu seperti apakah tampilan yang akan di hasilkan dari code program di atas? Yuk langsung saja kita simak di bawah ini...
Tampilan Utama dan alarm belum terpasang.
Saat ingin memasang alarm dan saat alarm terpasang.
Nah itu dia temen - temen tampilannya... Gimana? Cukup jelas ya temen.. Ya saya rasa jelas yaa
sekali lagi saya ingatkan kembali... 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...
Nah itu dia temen - temen penjelasan saya mengenai code program untuk membuat jam analog yang di sertai alarm dan catatan... Semoga penjelasannya jelas ya.. Walaupun panjang.. Hehe
Terakhir kalinya saya ingatkan kembali... 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...
Nah itu dia temen - temen bahasan saya pada postingan kali ini.. Semoga apa yang sudah saya bagikan kali ini dapat bermanfaat bagi kalian... Apabila ada yang ingin kalian tanyakan, kalian bisa menanyakannya pada kolom kokmentar yang ada di bawah ini ya temen - temen.. Terimakasih sudah berkunjung ke blog saya ini.. Mohon maaf atas kurang lebih nya ya... Dan jagan lupa baca tutorial dan materi saya pada postingan kali ini ya temen.. Sekian dulu ya.. Terimakasih...
Wassalamualaikum wr. wb.
Jumpa lagi nih temen - temen pada kesempatan kali ini, saya akan mencoba untuk melanjutkan postingan saya mengenai pembuatan aplikasi yang sudah saya posting sebelumnya yaa... Jadi pada postingan kali ini saya akan mencoba menambahkan fitur baru.. Nah aplikasi apa yang akan saya tambahkan fiturnya kali ini? Untuk mengetahui nya langsung saja kita simak postingan saya kali ini..
Pengenalan Aplikasi yang akan di buat.
Nah pada postingan kali ini saya akan mencoba untuk melanjutkan atau mengupdate aplikasi yang telah saya buat sebelumnya. Yaitu sebuah aplikasi jam analog yang saya beri alarm. Dan pada kali ini saya akan menambahkan satu fitur lagi di aplikasi tersebut. Fitur tersebut adalah sebuah fitur dimana kita bisa menambahkan beberapa catatan disana. Maksudnya, saat alarm berbunyi, maka aplikasi akan menampilkan catatan yang sudah kita buat saat menambahkan alarm. Contoh 7.00 -> waktunya bangun.Nah agar kalian lebih paham, maka tidak ada salahnya bagi kalian jika kalian melihat versi yang sebelumnya ya... Kalian bisa KLIK DISINI UNTUK MEMBACA VERSI YANG SEBELUMNYA. Atau, kalian juga bisa membaca PERKEMBANGAN TIAP VERSINYA DISINI.
Spesifikasi dan Fitur aplikasi jam analog alarm versi 4.
Untuk spesifikasi lengkap dari aplikasi yang akan kita buat kali ini, kalian bisa melihatnya secara lengkap yang ada di bawah ini ya temen - temen..Nama | : Jam analog multiple alarm dengan catatan. |
Versi | : 4. |
Peningkatan fitur | : catatan. |
Platform | : Python 3.x |
Modul | : Tkinter dan pygame. Klik disini untuk tutorial instalasi pygame nya. |
Baris code | : kurang lebih 300 baris code program. |
Fitur | : jam analog, multiple alarm dan catatan. |
Syarat menjalankan | : install python 3.x dan pygame, punya editor atau IDE. |
Cara menjalankan | : install python 3, install pygame, copy dan paste code program pada editor atau IDE, simpan dalam file python, 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 analog multiple alarm dengan catatan.
Nah setelah mengenal aplikasinya, maka it’s time untuk memberikan code programnya. Yuk langsung saja kita simak sama - sama code programnya.. Yuk langsung saja di simak di bawah ini..from tkinter import * from tkinter.ttk import Combobox import time from math import cos,sin,pi import pygame class MyApp(): def __init__(self, root): self.size=300 self.parent=root self.frameAlarm=Frame(root) self.frameJam = Frame(root) self.framePemberitahuan=Frame(root) self.alarmHidup = False self.teksJam = StringVar() self.antrianAlarm = [] self.hidupMati = BooleanVar(False) self.fileMusik = 'hysteria.mp3' self.teksTombolAtur = StringVar(value='atur') self.pemberitahuan='' self.teksTombol = StringVar(value='set') self.buatFrameJam() self.buatJarum() self.buatTeksAngka() self.buatTeks() self.update_clock() def buatTeks(self): self.teks = Label(text="mn-belajarpython.blogspot.com", font="Helvetica 12 bold") self.teks.pack() self.teksPemberitahuan = Label(self.framePemberitahuan, text='Tidak ada alarm terpasang.', bg="white") self.teksPemberitahuan.grid(row=0, column=0) self.tombolAtur= Button(self.framePemberitahuan, textvariable=self.teksTombolAtur, command=self.jendelaPembuatAlarm) self.tombolAtur.grid(row=0, column=1) self.framePemberitahuan.pack() def buatFrameJam(self): root.title("Clock") self.w = Canvas(self.frameJam,width=320, height=320, relief= "sunken", border=10) self.w.pack() self.frameJam.pack() def buatJarum(self): self.w.create_line(0, 0, 0, 0, fill="red", tags="hour", width=3) self.w.create_line(0, 0, 0, 0, fill="black", tags="minute", width=6) self.w.create_line(0, 0, 0, 0, fill="black", tags="second", width=6) def buatTeksAngka(self): Label(self.frameJam, text="12").place(x=160, y=13) Label(self.frameJam, text="11").place(x=80, y=28) Label(self.frameJam, text="10").place(x=31, y=90) Label(self.frameJam, text="9").place(x=11, y=157) Label(self.frameJam, text="8").place(x=31, y=230) Label(self.frameJam, text="7").place(x=80, y=285) Label(self.frameJam, text="6").place(x=160, y=303) Label(self.frameJam, text="5").place(x=240, y=285) Label(self.frameJam, text="4").place(x=291, y=230) Label(self.frameJam, text="3").place(x=310, y=157) Label(self.frameJam, text="2").place(x=291, y=90) Label(self.frameJam, text="1").place(x=240, y=28) def update_clock(self): s=time.localtime()[5] m=time.localtime()[4] h=time.localtime()[3] self.jam = time.strftime("%H", time.localtime()) self.menit = str(int(time.strftime("%M", time.localtime()))-1) detik = time.strftime("%S", time.localtime()) cocok = self.jam + ' : ' + self.menit pygame.init() pygame.mixer.init() if len(self.antrianAlarm): if pygame.mixer.music.get_busy() : if self.pemberitahuan != "waktunya Tanpa Catatan." : self.teksPemberitahuan.config(text= self.pemberitahuan) else : self.teksPemberitahuan.config(text="alarm selanjutnya -> "+self.antrianAlarm[0][0]) if cocok == self.antrianAlarm[0][0] and (detik == '00'): alarm = self.antrianAlarm.pop(0) self.teksTombol.set('stop') self.pemberitahuan = "waktunya "+alarm[1] self.teksTombolAtur.set('stop') self.alarmHidup = True pygame.mixer.music.load(self.fileMusik) pygame.mixer.music.play() else : if pygame.mixer.music.get_busy() : if self.pemberitahuan != "waktunya Tanpa Catatan." : self.teksPemberitahuan.config(text= self.pemberitahuan) else: self.teksPemberitahuan.config(text='Tidak ada alarm terpasang.') if self.alarmHidup and pygame.mixer.music.get_busy() == False: self.perintahSetAlarm() degrees = 6*s angle = degrees*pi*2/360 ox = 165 oy = 165 x = ox + self.size*sin(angle)*0.45 y = oy - self.size*cos(angle)*0.45 self.w.coords("hour", (ox,oy,x,y)) degrees1 = 6*m angle1 = degrees1*pi*2/360 ox1 = 165 oy1 = 165 x1 = ox1 + self.size*sin(angle1)*0.4 y1 = oy1 - self.size*cos(angle1)*0.4 self.w.coords("minute", (ox1,oy1,x1,y1)) degrees2 = 30*h angle2 = degrees2*pi*2/360 ox2 = 165 oy2 = 165 x2 = ox2 + self.size*sin(angle2)*0.2 y2 = oy2 - self.size*cos(angle2)*0.2 self.w.coords("second",(ox2,oy2,x2,y2)) self.parent.after(1000, self.update_clock) def jendelaPembuatAlarm(self): if self.teksTombolAtur.get()=='stop': self.perintahSetAlarm() else : self.windowAlarm = Toplevel(self.parent) self.windowAlarm.wm_title("Mengatur alarm") self.frameHapus = Frame(self.windowAlarm) self.framLayar = Frame(self.windowAlarm) self.frameAlarm = Frame(self.windowAlarm) self.frameNote = Frame(self.windowAlarm) self.layarAlarm() self.scrollBar() self.buatComboBox() self.catatan() self.buatTombol() self.updateLayar() 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.frameNote,textvariable=self.teksTombol,command=self.perintahSetAlarm).grid(row=0,column=2) 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 range(len(self.antrianAlarm)) : if self.antrianAlarm[i][0] == masukan : tidakAda=False if tidakAda : self.tentukanUrutan(angka=masukan) self.updateLayar() else : self.teksTombol.set('set') self.teksTombolAtur.set('atur') 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][0]+' -> '+self.antrianAlarm[i][1]+'\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 : catatan= self.kolomCatatan.get() if catatan == '' or catatan == ' ' or catatan == ' ': catatan = 'Tanpa Catatan' self.antrianAlarm.append([angka, catatan]) jarakJamPositif = [] jarakJamNegatif = [] convertInt = [] antrianBaruPositif = [] antrianBaruNegatif = [] for i in range(len(self.antrianAlarm)) : angka = '' for j in self.antrianAlarm[i][0] : 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 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 catatan(self): Label(self.frameNote, text='Catatan : ').grid(row=0,column=0) self.kolomCatatan = Entry(self.frameNote, width=17) self.kolomCatatan.grid(row=0,column=1) self.frameNote.pack() root = Tk() app = MyApp(root) mainloop()
Nah itu dia temen - temen code programya... Cukup panjang juga ya... Hehe. Nah lalu seperti apakah tampilan yang akan di hasilkan dari code program di atas? Yuk langsung saja kita simak di bawah ini...
Tampilan Utama dan alarm belum terpasang.
Saat ingin memasang alarm dan saat alarm terpasang.
Nah itu dia temen - temen tampilannya... Gimana? Cukup jelas ya temen.. Ya saya rasa jelas yaa
sekali lagi saya ingatkan kembali... 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 analog multiple alarm dengan catatan.
Nah setelah kita tau code program dan tampilannya, maka selanjut nya saya kan mencoba untuk menjelaskan code program yang sudah saya bagikan di atas tadi.. Yuk langsung saja kita simak sama - sama penjelasannya 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 * //code ini digunakan untuk mengimport semua modul tkinter. Yang di tandai dengan tanda bintang.
from tkinter.ttk import Combobox //code ini digunakan untuk mengimport combobox dari tkinter.
import time //code ini digunakan untuk mengimport modul ‘time’ yang di sediakan oleh python. Dan akan saya gunakan untuk mendapatkan waktu di komputer kalian.
from math import cos,sin,pi //code ini digunakan untuk mengimport operasi matematika yang disediakan oleh python. Yaitu cos, sin, pi. Yang akan digunakan untuk memutar jarum jam nantinya.
import pygame //code ini digunakan untuk mengimport modul pygame untuk memutar nada alarm nya. Untuk menginstall Pygame nya, KALIAN BISA KLIIK DISINI.
class MyApp(): //code ini digunakan untukembuat sebbuah class dengan nama “MyApp”.
def __init__(self, root): //code ini digunakan untuk membuat sebuah construktor dari class ‘MyApp’ tadi.. Construktor merupakan sebuah metode yang akan di jalankan pertama kali ketika class tersebbut di panggil.
self.size=300 //code ini digunakan untuk meng inisialisasi variabel ‘size’ Yang akan digunakan untuk menentukan jarak perpindahan jarum jam analog nya.
self.parent=root //code ini digunakan untuk menampung parent atau root dari class ini nantinya.
self.frameJam = Frame(root) //code ini digunakan untukmembuat sebuauah frame atau tempat dari jam analognya.
self.frameAlarm=Frame(root) //digunakan untuk membuat frame alarm atau tombol alarm di window jam analognya.
self.framePemberitahuan=Frame(root) //code ini digunakan untuk membuat frame pemberitahuan alarm selanjutnya yang akan hidup nantinya pada window.
self.alarmHidup = False //code ini digunakan menentukan apakah alarm sedang hidup atau tidak.
self.teksJam = StringVar() //code ini digunakan untuk menampilkan teks jam
self.antrianAlarm = [] //code ini digunakan untuk menampung setiap alarm yang di buat nantinya.
self.hidupMati = BooleanVar(False) //code ini digunakan sebagai nilai penentu apakah alarm hidup atau hidup.
self.fileMusik = 'hysteria.mp3' //code ini digunakan untuk inisialisasi atau penentu musik yang akan kita gunakan sebagai nada alarm nantinya. Silahkan isikan nama dan formatnya saja jika file mp3 nya berada
self.teksTombolAtur = StringVar(value='atur') //code ini digunakan sebagai teks tombol untuk mengatur alarm.
self.pemberitahuan='' //code ini digunakan untuk menampung teks pemberitahuan yang akan di tampilkan.
self.teksTombol = StringVar(value='set') //code ini digunakan sebagai teks dari tombol alarm nya.
self.buatFrameJam() //code ini digunakan untuk memanggil metode dengan nama “buatFrameJam”
self.buatJarum() //code ini digunakan untuk memanggil metode dengan nama “buatJarum”
self.buatTeksAngka() //code ini digunakan untuk memanggil metode dengan nama “buatTeksAngka”
self.buatTeks() //code ini digunakan untuk memanggil metode dengan nama “buatTeks”
self.update_clock() //code ini digunakan untuk memanggil metode dengan nama “update_clock”
def buatTeks(self): //digunakan untuk membuat sebuah metode dengan nama “buatTeks” yang akan digunakan untuk menapilkan teks.
self.teks = Label(text="mn-belajarpython.blogspot.com") //code ini digunakan untuk membuat label atau teks. Yang di simpan ke dalam variabel ‘teks’
self.teks.pack() //digunakan untuk memasukkan teks tadi ke dalam window jamnya.
self.teksPemberitahuan = Label(self.framePemberitahuan, text='Tidak ada alarm terpasang.', bg="white") //code ini digunakan untuk membuat sebuah labrl untuk pemberitahuan. Dengan settingan yang sudah saya atur. Yaitu dengan background putih ya. Silahkan cek screenshoot tampilan untuk melihat hasilnya.
self.teksPemberitahuan.grid(row=0, column=0) //code ini digunakan untuk memasukkan teks pemberitahuan tadi ke dalam window.
self.tombolAtur= Button(self.framePemberitahuan, textvariable=self.teksTombolAtur, command=self.jendelaPembuatAlarm) //code ini digunakan untuk membuat tombol dengan perintah untuk memanggil jendela pengatur alarm nya.
self.tombolAtur.grid(row=0, column=1) //code ini digunakan untuk memasukkan tombol atur ke dalam window.
self.framePemberitahuan.pack() //memasukkan frame yang di tanpung kedalam variabel “framePemberitahuan” ke dalam window.
def buatFrameJam(self): //code ini digunakan untuk membuat sebuah metode dengan nama ‘buatFrameJam” yang tentu saja akan digunakan untuk membuat atau menyetting frame/tempat jam analognya.
root.title("Clock") //code ini digunakan untuk merubah judul windownya.
self.w = Canvas(self.frameJam,width=320, height=320, relief= "sunken", border=10) //code ini digunakna untukmembuat / menginisialisasi canvasnya. Kanvas ini digunakan sebagai tempat jam analognya. Dengan kanvas, kita bisa membuat sebuah garis untuk jarum jamnya.
self.w.pack() //code ini digunakan untuk memasukkan canvas nya ke dalam frame ‘frameJam’ yang telah kita masukkan sebagai parent canvasnya.
self.frameJam.pack() //code ini digunakan untuk memasukkan frame jam nya ke dalam window utama.
def buatJarum(self): //code ini digunakan untuk membuat sebuah metode untuk membuat jarum jamnya.
self.w.create_line(0,0,0,0, fill="red", tags="hour", width=3) //digunakan untuk membuat jarum detik dengan warna merah.
self.w.create_line(0,0,0,0, fill="black", tags="minute", width=6) //digunakan untuk membuat jarum menit dengan warna hitam.
self.w.create_line(0,0,0,0, fill="black", tags="second", width=6) //digunakan untuk membuat jarum jam dengan warna hitam.
def buatTeksAngka(self): //code ini digunakan untuk membuat metode yang akan digunakan untuk membuat angka - angka jam nya.
Label(self.frameJam, text="12").place(x=160, y=13) //digunakan untuk membuat sekaligus memasukkan angka 12 ke dalam window.
Label(self.frameJam, text="11").place(x=80, y=28) //digunakan untuk membuat sekaligus memasukkan angka 11 ke dalam window.
Label(self.frameJam, text="10").place(x=31, y=90) //digunakan untuk membuat sekaligus memasukkan angka 10 ke dalam window.
Label(self.frameJam, text="9").place(x=11, y=157) //digunakan untuk membuat sekaligus memasukkan angka 9 ke dalam window.
Label(self.frameJam, text="8").place(x=31, y=230) //digunakan untuk membuat sekaligus memasukkan angka 8 ke dalam window.
Label(self.frameJam, text="7").place(x=80, y=285) //digunakan untuk membuat sekaligus memasukkan angka 7 ke dalam window.
Label(self.frameJam, text="6").place(x=160, y=303) //digunakan untuk membuat sekaligus memasukkan angka 6 ke dalam window.
Label(self.frameJam, text="5").place(x=240, y=285) //digunakan untuk membuat sekaligus memasukkan angka 5 ke dalam window. Label(self.frameJam, text="4").place(x=291, y=230) //digunakan untuk membuat sekaligus memasukkan angka 4 ke dalam window.
Label(self.frameJam, text="3").place(x=310, y=157) //digunakan untuk membuat sekaligus memasukkan angka 3 ke dalam window.
Label(self.frameJam, text="2").place(x=291, y=90) //digunakan untuk membuat sekaligus memasukkan angka 2 ke dalam window.
Label(self.frameJam, text="1").place(x=240, y=28) //digunakan untuk membuat sekaligus memasukkan angka 1 ke dalam window.
def update_clock(self): //digunakan untuk mengupdate posisi jam sesuai dengan jam terkini pada laptop / komputer anda.
s=time.localtime()[5] //digunakan untuk mendapatkan detik dari waktu komputer. Yang kemudian di tampung kedalam variabel ‘s’.
m=time.localtime()[4] //digunakan untuk mendapatkan menit dari waktu komputer. Yang kemudian di tampung kedalam variabel ‘m’.
h=time.localtime()[3] //digunakan untuk mendapatkan jam dari waktu komputer. Yang kemudian di tampung kedalam variabel ‘h’.
jam = time.strftime("%H", time.localtime()) //code ini digunakan untuk mendapatkan nilai jam di komputer/laptop kalian yang di konvert menjadi string. Dan ditampung ke dalam variabel “jam”.
menit = time.strftime("%M", time.localtime()) //code ini digunakan untuk mendapatkan nilai menit di komputer/laptop kalian yang di konvert menjadi string. Dan ditampung ke dalam variabel “me”.
detik = time.strftime("%S", time.localtime()) //code ini digunakan untuk mendapatkan nilai detik di komputer/laptop kalian yang di konvert menjadi string. Dan ditampung ke dalam variabel “detik”.
cocok = self.jam + ' : ' + self.menit //code ini digunakan untuk menampung format jam dan menit seperti alarm yang terlah di set. Lalu di tampung ke dalam variabel ‘cocok’.
pygame.init() //untuk inisialisasi pygame nya.
pygame.mixer.init() //inisialisasi elemen pemutar musiknya.
if len(self.antrianAlarm): //code ini digunakan untuk mengecek apakah list dalam variabel “antrianAlarm” tidak kosong.
if pygame.mixer.music.get_busy() : //mengecek apakah alarm nyala atau tidak.
if self.pemberitahuan != "waktunya Tanpa Catatan." : //code ini digunakan untuk mengecek apakah variabel “pemberitahuan” bernilai “Waktunya tanpa catatan”
self.teksPemberitahuan.config(text= self.pemberitahuan) //digunakan untuk mengubah teks dari pemberitahuan menjadi nilai “yang ada pada variabel ‘pemberitahuan’.
else : //code yang akan di jalankan ketika if tidak memenuhi kondisi.
self.teksPemberitahuan.config(text="alarm selanjutnya -> "+self.antrianAlarm[0][0]) //code ini digunakan untuk mengubah teks pemberitahuan menjadi alarm yang akan berbunyi selanjutnya.
if cocok == self.antrianAlarm[0][0] and (detik == '00'): //code ini menyeleksi apakahjam terkini yang di tammpung kedalam variabel ‘cocok’ sama dengan alarm terdekat di dalam antrian alarm dan apakah detiknya sama dengan 0.
alarm = self.antrianAlarm.pop(0) //untuk mengeluarkan antrian terdepan alarm di dalam variabel antrian alarm.
self.teksTombol.set('stop') //code ini digunakan untuk mengubah tombol untuk mengatur alarm menjadi “stop”.
self.pemberitahuan = "waktunya "+alarm[1] //code ini dgunakan untuk menampilkan catatan sesuai dengan alarm yang dibuat sebelumnya.
self.teksTombolAtur.set('stop') //mengubah tombol untuk mengatur alarm nya menjadi “stop’.
self.alarmHidup = True //mengubah nilai dalam variabel “alarm hidup” menjadi true yang artinya alarm sedang hidup.
self.teksTombolAtur.set('stop') //code ini digunakan untuk mengubah tombol untuk mengatur alarm menjadi “stop”.
pygame.mixer.music.load(self.fileMusik) //untuk memuat file yang dimaksud. Yang lokasinya berada pada variabel “fileMusik”.
pygame.mixer.music.play() //code ini digunakan untuk memutar musik yang sudah di mmuat sebelumnya.
else : //code ini akan dijalankan ketika antrian alarm kosong.
if pygame.mixer.music.get_busy() : //mengecek apakah alarm sedang berbunyi atau tidak
if self.pemberitahuan != "waktunya Tanpa Catatan." : //code ini digunakan untuk mengecek apakah variabel “pemberitahuan” bernilai “Waktunya tanpa catatan”
self.teksPemberitahuan.config(text= self.pemberitahuan) //code ini digunakan untuk mengubah teks pemberitahuan.
else: //dijalankan jika alarm tidak sedang berbunyi atau ketika if di atas tidak memenuhi kondisi.
self.teksPemberitahuan.config(text='Tidak ada alarm terpasang.') //code ini digunakan untuk mengubah teks pemberitahuan menjadi “tidak ada alarm terpasang”.
if self.alarmHidup and pygame.mixer.music.get_busy()==False : //code ini digunakan untuk mengecek apakah “alarmHidup” berinilai true. Yang menandakan alarem dudah terpasang. Dan apakah musik sudah selesai.
self.perintahSetAlarm() //code ini digunakan untuk memanggil metode dengan nama “perintahSetAlrm”.
degrees = 6*s
angle = degrees*pi*2/360
ox = 165
oy = 165
x = ox + self.size*sin(angle)*0.45
y = oy - self.size*cos(angle)*0.45
self.w.coords("hour", (ox,oy,x,y))
//code diatas digunakan untuk mendapatkan nilai yang tepat dari jarum detik. Dengan menghitung dari berbagai elemen seperti yang ada di atas. Di mana code terakhir merupakan perintah untuk memindahkan jarum detik sesuai koordinat yang telah di peroleh setelah menghitungnya.
degrees1 = 6*m
angle1 = degrees1*pi*2/360
ox1 = 165
oy1 = 165
x1 = ox1 + self.size*sin(angle1)*0.4
y1 = oy1 - self.size*cos(angle1)*0.4
self.w.coords("minute", (ox1,oy1,x1,y1))
//code diatas digunakan untuk mendapatkan nilai yang tepat dari jarum menit. Dengan menghitung dari berbagai elemen seperti yang ada di atas. Di mana code terakhir merupakan perintah untuk memindahkan jarum menit sesuai koordinat yang telah di peroleh setelah menghitungnya
degrees2 = 30*h
angle2 = degrees2*pi*2/360
ox2 = 165
oy2 = 165
x2 = ox2 + self.size*sin(angle2)*0.2
y2 = oy2 - self.size*cos(angle2)*0.2
self.w.coords("second",(ox2,oy2,x2,y2))
//code diatas digunakan untuk mendapatkan nilai yang tepat dari jarum jam. Dengan menghitung dari berbagai elemen seperti yang ada di atas. Di mana code terakhir merupakan perintah untuk memindahkan jarum jam sesuai koordinat yang telah di peroleh setelah menghitungnya
self.parent.after(1000, self.update_clock) //code ini digunakan agar metode ‘update_clock’ akn selalu di jalankan selama 1000 milidetik sekali setelah program di jalankan.
def jendelaPembuatAlarm(self): //code ini digunakan untuk membuat metode baru yang akan digunakan untuk membuat window baru untuk mengatur alarm.
if self.teksTombolAtur.get()=='stop': //code ini digunakan untuk mengecek apakah teks tombol untuk memanggil metode ini teks nya adalah “stop”.
self.perintahSetAlarm() //code ini digunakan untuk memanggil metode dengan nama “perintahSetAlarm”.
else : //code ini akan di jalankan ketika teks dari tombol untukmemanggil metode ini tidak sama dengan ‘stop’.
self.windowAlarm = Toplevel(self.parent) //code ini digunakn untuk membuat window baru. Dan kemudian di tampung ke dalam variabel “windowAlarm”
self.windowAlarm.wm_title("Mengatur alarm") //code ini digunakan untuk mengubah window alarm tadi dengan judul “mengatur alarm”
self.frameHapus = Frame(self.windowAlarm) //code ini digunakan untuk membuat frame baru yang akan digunakan untuk meletakkan tombol hapus. Yang di simpan ke dalam variabel “frameHapus”.
self.framLayar = Frame(self.windowAlarm) //code ini digunakan untuk membuat frame baru yang akan digunakan untuk meletakkan layar untuk menampilkan alarmnya. Yang di simpan ke dalam variabel “framlayar”.
self.frameAlarm = Frame(self.windowAlarm) //code ini digunakan untuk membuat frame baru yang akan digunakan untuk meletakkan elemen - elemen untuk membuat alarm. Yang di simpan ke dalam variabel “frameAlarm”.
self.frameNote = Frame(self.windowAlarm) //digunakan untuk membuat farame atau tempat untuk meletakkan kolom untuk memasukkan catatan.
self.layarAlarm() //code ini digunnakan untuk memanggil metode dengan nama “layarAlarm”.
self.scrollBar() //code ini digunnakan untuk memanggil metode dengan nama “scrollBar”.
self.buatComboBox() //code ini digunnakan untuk memanggil metode dengan nama “buatComboBox”.
self.catatan() //digunakan untuk memanggil metode dengan nama “catatan”
self.buatTombol() //code ini digunnakan untuk memanggil metode dengan nama “layarTombol”.
self.updateLayar() //code ini digunnakan untuk memanggil metode dengan nama “updateLayar”.
def buatComboBox(self): //code ini digunakan untuk membuat sebuah metode dengan nama “buatComboBox”. Yang tentu saja akan digunakan untuk membuat Combobox.
Label(self.frameAlarm, text='Jam : ').grid(row=0, column=0) //code ini digunakan untuk membuat label atau teks yang langsung dimasukkan ke dalam window.
self.alarmJam = StringVar() //ini sialisasi variabel “alrmJam”.
self.comboJam = Combobox(self.frameAlarm, textvariable=self.alarmJam, state='readonly', width=2) //code ini digunakan untuk membuat sebuah combobox. Dengan settingan yang sudah saya tentukan di dalamnya. Yaitu “self.frameAlarm” sebagai tempat framenya. “texvareable=self.alarmJam” sebagai variabel yang menampung nilai yang terpilih. “state=’readonly’” agar tidak bisa di edit.
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', '24') //untuk memasukkan angka2 ini sebagai item dari combobox yg sudah kita bua tadi.
self.comboJam.current(0) //untuk memilih item pertama sebagai nilai default dari combobox nya.
self.comboJam.grid(row=0, column=1) //code ini digunakan untuk memasukkan combobox di dalam “combojam” ke dalam window.
Label(self.frameAlarm, text=' Menit : ').grid(row=0, column=2) //code ini digunakan untuk membuat label atau teks dengan isi “Menit :”. Yang langsung di masukkan ke dalam window.
self.alarmMenit = StringVar() //code ini digunakan untuk menginisialisasi variabel “alarmMenit”.
self.comboMenit = Combobox(self.frameAlarm, textvariable=self.alarmMenit, state='readonly', width=2) //code ini digunakan untuk membuat comboBox. Dengan settingan “self.frameAlarm” sebagai tempat di dalam window. “textvariable=self.alarmMenit” yang di gunakan untuk mendapatkan nilai yang terpilih. “state=’readonly’” agar comboBox nya tidak bisa di edit. “width=2” yang artinya lebarnya sebesar 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') //code ini digunakan untuk memasukkan angka2 tersebut sebagi item dari combobox dalam variable “comboMenit”.
self.comboMenit.current(0) //code ini digunakan untuk mengatur item pertama sebagai nilai default.
self.comboMenit.grid(row=0, column=3) //code ini digunakan untuk memasukan combobox nya ke dalam window.
self.frameAlarm.pack(pady=6) //digunakan untuk memberikan jarak di bawah frame “frameAlarm”.
def buatTombol(self): //code ini digunakan membuat sebuah metode dengan nama”buatTombol”. Yang akan digunakan untuk membuat sebuah tombol.
self.tombolSet = Button(self.frameAlarm, textvariable=self.teksTombol, command=self.perintahSetAlarm).grid(
row=0, column=4) //code ini digunakan untuk membuat serta memasukkan tombol kedalam window. Dengan perintah ketika di klik akan menjalankan metode “perintahSetAlarm”
self.kolomHapus = Entry(self.frameHapus, width=5) //code ini digunakan untuk membuat kolom untuk memasukkan nomer untuk di hapus.
self.kolomHapus.grid(row=0,column=0) //code ini digunakan untuk memasukkan kolom tersebut ke dalam window.
self.tombolSet = Button(self.frameHapus, text='Hapus', command=self.perintahHapus).grid(row=0, column=1) //code ini digunakan untuk membuat tombol untuk perintah hapusnya. Yang kemudian langsung saya masukkan ke dalam window.
self.frameHapus.pack() //code ini digunakan untuk memasukkan frame tempat kolom dan tombol hapus ke dalam window.
def perintahSetAlarm(self): //code ini digunakan untuk membuat metode dengan nama “perintahSetAlarm”.
if self.teksTombol.get() == 'set': //digunakan untuk mengecek teks tombol nya. Apakah nilainya sama dengan ‘set’ atu tidak.
masukan = self.comboJam.get()+' : '+self.comboMenit.get() //code ini digunakan untuk mengambil data dari combobox untuk menentukan alarm nya. Yang kemudian di satukan lalu di simpan ke dalam variabel “masukan”.
tidakAda = True //meng inisialisasi variabel “tidakAda” yang saya beri nilai True.
for i in range(len(self.antrianAlarm)) :
if self.antrianAlarm[i][0] == masukan :
tidakAda=False
//code perulangan di atas digunakan untuk mengecek apakah ada yang sama atau tidak.
if tidakAda : //mengecek apakah ada antrian yang sama dengan alarm baru yang akan di masukkan.
self.tentukanUrutan(angka=masukan) //code ini digunakan untuk memasukkan alarm ke dalam antrian alarm yang sekaligus mengurutkannya Dari yang terdekat.
self.updateLayar() //code ini digunakan untuk memanggil sebuah metode dengan nama “updateLayar”
else: //kondisi yang akan di jalankan ketika “if self.teksTombol.get()==’set’ :” bernilai false. Yang artinya, teks tombolnya bukan ‘set’.
self.teksTombol.set('set')
self.teksTombolAtur.set('atur')
self.alarmHidup=False //code ini digunakan untuk mengubah nilai variabel “alarmHidup” menjadi False. Yang artinya alarm kita matikan.
try: //digunakan untuk mencoba sebuah code program.
pygame.mixer.music.stop() //code ini digunakan untuk menghentikan musik atau nada alarmnya.
except: //code ini digunakan untuk menjalankan code program ketika code program “try” terjadi error.
pass //digunakan agar kita di perbolehkan untuk tidak menjalankan code program.
def layarAlarm(self): //code ini merupkan sebuah metode sebagai tempat untuk membuat sebuah layar untuk menampilkan informasi alarm - alarm yang telah di buat.
self.layar = Text(self.framLayar, height=5, width=35, state=DISABLED) //code ini digunakan untuk membuat layar alarm nya dengan settingan yang sudah di buat. Yaitu “self.frameLayar” merupakan tempat penempatan layarnya. “height=5 dan width=5” merupakan settingan ukuran lebar dan tinggi. Dan “state=DISABLED” digunakan agar tidak bisa di edit.
self.layar.grid(row=0,column=0) //code ini digunakan untuk memsukkan layar ke dalam frame dengan variabel “framLayar”.
self.framLayar.pack() //code ini digunakan untuk memasukkan frame pada variabel “framLayar” ke dalam window.
def updateLayar(self): //code ini digunakan untuk membuat metode dengan fungsi untuk mengupdate layar alarm nya.
masukan='' //inisialisasi atau membuat sebuah variabel “ masukan” dengan nilai kosong.
for i in range(len(self.antrianAlarm)) : //perulangan sebanyak alarm yang telah di buat. Atau yang ada di dalam antrian alarm
masukan += str(i+1)+". "+ self.antrianAlarm[i][0]+'\n' //code ini digunakan untuk menggabungkan semua alarm yang ada pada antrian alarm. Dan kita tampung ke dalam variabel “masukan”.
self.layar.config(state=NORMAL) //code ini digunakan untuk membuat layar agar bisa di edit.
self.layar.delete('1.0',END) //code ini digunakan untuk menghapus semua isi layar.
self.layar.insert(END, masukan) //code ini digunakan untuk memasukkan antrian alarm yang sudah kita gabungkan tadi. Dan kita tampung ke dalam variabel “masukan”.
self.layar.config(state=DISABLED) //code ini digunakan untuk membuat layar tidak bisa di edit.
def perintahHapus(self): //code ini digunakan untuk membuat metode yang akan digunakan untuk menghapus sebuah alarm yang telah terpasang..
try: //digunakan untuk mencoba code di bawah.
for i in range(len(self.antrianAlarm)) : //code ini digunakan untuk melakukan perulangan sebanyak antrian alarm.
if int(self.kolomHapus.get())-1 == i : //code ini digunakan untuk mengambildata dari “kolomHapus” yang merupakan tempat memasukkan angka sesuai urutan alarm yang ingin kita hapus. Sekaligus mengecek apakah angka yang dimasukkan ada pada antrian.
self.antrianAlarm.pop(i) //membuang alarm yang di hapus dari antrian.
self.updateLayar() //code ini digunakan untuk memanggil sebuah metode dengan nama “updateLayar”.
break //code ini digunakan untuk menghentikan perulangan apabila sudah ada yang cocok.
except : //code yang akan di jalan kan ketika terdapat error pada code program “try” di atas.
pass //agar tidak melakukan perintah apapun.
def tentukanUrutan(self, angka=0): //code ini dogimalam untuk membuat sebuah metode yang akan digunakan untuk memasukkan alarm baru yang sekaligus mengurutkannya dari alarm terdekat hingga ter jauh.
if angka != 0 : //code ini digunakan untuk mengecek apakah amgka tidak bernilai nol.
catatan= self.kolomCatatan.get() //digunakan untuk mengambil catatan dari kolom.
if catatan == '' or catatan == ' ' or catatan == ' ': //mengecek apakah user tidak memberikan catatan.
catatan = 'Tanpa Catatan' //mengganti catatan menjadi “tanpa catatan” jika user tidak memberikan catatan.
self.antrianAlarm.append([angka, catatan]) //code omo digunakan untuk memasukkan alarm dan catatan ke dalam antrian.
jarakJamPositif = [] //code ini digunakan untuk inisialisasi variabel yang saya isi dengan list kosong.
jarakJamNegatif = [] //inisialisasi variabel dengan isi list kosong.
convertInt = []
antrianBaruPositif = []
antrianBaruNegatif = []
//code di bawah ini merupakah code program yang menggunakan untuk mengurutkan yang terdekat hingga yang terjauh. Saya kesulitan untuk menjelaskannya ya. Jadi mohon maaf saya tidak bisa menjelaskannya lebih jauh. Sekali lagi mohon maaf ya..
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
def scrollBar(self): //metode yang digunakan untuk membuat scrollbar pada layar.
scroll = Scrollbar(self.framLayar) //membuat scrollbar yang di tampung ke dalam variabel “scroll”
scroll.grid(row=0,column=1, sticky=N+S) //memasukkan scrollbar ke window.
scroll.config(command=self.layar.yview) //memberikan perintah untuk menggeser posisi horizontal.
self.layar.config(yscrollcommand=scroll.set) //menghubungkan scrollbar dengan layar.
root = Tk() //code ini digunakan untuk memanggil window dari tkinter yang kemudian di tampung ke dalam variabel ‘root’.
app = MyApp(root) //digunakan untuk memanggil class MyApp yang sudah kita masukkan tadi. Dan memasukkan root sebagai parent.
mainloop() //digunakan agar window yanng kita buat tidak langsung selesai atau langsung close secara otomatis.
Nah itu dia temen - temen penjelasan saya mengenai code program untuk membuat jam analog yang di sertai alarm dan catatan... Semoga penjelasannya jelas ya.. Walaupun panjang.. Hehe
Terakhir kalinya saya ingatkan kembali... 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...
Nah itu dia temen - temen bahasan saya pada postingan kali ini.. Semoga apa yang sudah saya bagikan kali ini dapat bermanfaat bagi kalian... Apabila ada yang ingin kalian tanyakan, kalian bisa menanyakannya pada kolom kokmentar yang ada di bawah ini ya temen - temen.. Terimakasih sudah berkunjung ke blog saya ini.. Mohon maaf atas kurang lebih nya ya... Dan jagan lupa baca tutorial dan materi saya pada postingan kali ini ya temen.. Sekian dulu ya.. Terimakasih...
Wassalamualaikum wr. wb.
ConversionConversion EmoticonEmoticon