PEMROGRAMAN DESKTOP
Jam Terbilang
Disusun Oleh :
Yanuar Aliffio 130411100006
Dosen Pengampu :
Yoga Dwitya Pramudita, S.Kom., M.Cs
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class MyTimer(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('My Digital Clock')
timer = QTimer(self)
self.connect(timer, SIGNAL("timeout()"),
self.updtTime)
self.myTimeDisplay = QLCDNumber(self)
self.myTimeDisplay.setSegmentStyle(QLCDNumber.Fille
d)
self.myTimeDisplay.setDigitCount(8)
self.myTimeDisplay.resize(500,150)
timer.start(1000)
def updtTime(self):
currentTime =
QDateTime.currentDateTime().toString('hh:mm:ss')
self.myTimeDisplay.display(currentTime)
if __name__ == '__main__':
try:
myApp = QApplication(sys.argv)
myWindow = MyTimer()
myWindow.show()
myApp.exec_()
sys.exit(0)
except NameError:
print("Name Error : ", sys.exc_info()[1])
except SystemExit:
print("Closing Window...")
except Exception:
print(sys.exc_info()[1])
Hasil Runningan :
B. Fungsi untuk membuat String terbilang
Untuk membuat fungsi terbilang kita menggunakan if else dimana kita
menginisialisasi utama pada bilangan satuan dan bilangan sebelas. Berikut
potongan codenya :
class konversi(Alarm):
def kalimat(self, w):
kalimat = "";
huruf = ["nol", "satu", "dua", "tiga",
"empat", "lima", "enam", "tuju", "delapan",
"sembilan"];
if str(w)[0] == '1' and str(w)[1] == '0':
kalimat = 'sepuluh'
elif str(w)[0] == '1' and str(w)[1] == '1':
kalimat = 'sebelas'
elif str(w)[0] == '1' and int(str(w)[1]) >=
2:
kalimat = huruf[int(str(w)[1])]+'
belas'
elif int(str(w)[0]) >= 2 and int(str(w)[1])
> 0:
kalimat = huruf[int(str(w)[0])]+' puluh
'+huruf[int(str(w)[1])]
elif int(str(w)[0]) > 1 and str(w)[1] ==
'0':
kalimat = huruf[int(str(w)[0])]+'
puluh'
else:
kalimat = huruf[int(str(w)[1])]
return kalimat
def cekWaktu(self, h, m, s):
if m == 0: return str('Sekarang pukul
'+self.kalimat(h)+' tepat lewat '+self.kalimat(s)+'
detik')
elif m == 15: return str('Sekarang pukul
'+self.kalimat(h)+' lewat seperempat menit
'+self.kalimat(s)+' detik')
elif m == 30: return str('Sekarang pukul
setengah '+self.kalimat(h+1)+' lewat
'+self.kalimat(s)+' detik')
elif m == 45: return str('Sekarang pukul
'+self.kalimat(h+1)+" kurang seperempat lewat
"+self.kalimat(s)+' detik')
else: return str('Sekarang pukul
'+self.kalimat(h)+" lewat "+self.kalimat(m)+' menit
'+self.kalimat(s)+' detik')
C. Full Code
Berikut full code untuk membuat jam digital lengkap dengan setting
alarm dan terbilang dengan menggunakan bahasa pemrograman python :
import sys
import os
from PySide.QtGui import *
from PySide.QtCore import *
from PySide.phonon import *
class Alarm(QWidget):
def __init__(self):
super(Alarm, self).__init__()
self.initUI()
self.konversi = konversi()
self.playMusic()
self.jam = ""
self.menit = ""
self.detik = ""
timer = QTimer(self)
timer.start(1000)
timer.timeout.connect(self.showlcd)
QToolTip.setFont(QFont("Decorative", 8,
QFont.Bold))
def initSet(self):
self.Button1 = QPushButton('Set Alarm', self)
self.Button1.move(200, 150)
self.Button1.clicked.connect(self.evenButton1)
self.Button1.setToolTip('Set Alarm')
self.LabelIcon = QLabel(self)
self.Icon2 = QIcon("assets/Icon2.png");
pixmap = self.Icon2.pixmap(25, 25,
QIcon.Disabled, QIcon.Off)
self.LabelIcon.setPixmap(pixmap)
self.LabelIcon.setToolTip('Alarm Tidak Aktif')
self.LabelIcon.move(345, 150)
self.comboJam = QComboBox(self)
self.comboJam.move(15, 150)
self.comboJam.setFixedWidth(45)
self.comboJam.setFixedHeight(30)
self.comboJam.setToolTip('Set Jam')
for x in range(0, 24):
text = str(x)
if x < 10:
text = '0'+text
self.comboJam.addItem(text)
self.comboMenit = QComboBox(self)
self.comboMenit.setFixedWidth(45)
self.comboMenit.setFixedHeight(30)
self.comboMenit.move(70, 150)
self.comboMenit.setToolTip('Set Menit')
for x in range(0, 61):
text = str(x)
if x < 10:
text = '0'+text
self.comboMenit.addItem(text)
self.comboDetik = QComboBox(self)
self.comboDetik.setFixedWidth(45)
self.comboDetik.setFixedHeight(30)
self.comboDetik.move(125, 150)
self.comboDetik.setToolTip('Set Detik')
for x in range(0, 61):
text = str(x)
if x < 10:
text = '0'+text
self.comboDetik.addItem(text)
self.label = QLabel(self)
self.label.setAlignment(Qt.AlignLeft)
self.label.move(15, 120)
self.label.setFixedWidth(400)
self.label.setFixedHeight(30)
self.label.setText('<h2
style="color:blue;">Alarm belum diseting!</h2>')
def initUI(self):
self.setGeometry(300, 300, 400, 200)
self.setWindowTitle('Digital Clock + Alarm')
self.setToolTip("My Digital Clock")
self.setIcon()
self.initSet()
self.lcd = QLCDNumber(self)
self.lcd.setDigitCount(8)
vbox = QVBoxLayout()
vbox.addWidget(self.lcd)
vbox.addStretch()
self.lcd.setFixedWidth(400)
self.lcd.setFixedHeight(100)
self.setLayout(vbox)
self.show()
def setIcon(self):
appIcon = QIcon("assets/Icon1.png")
self.setWindowIcon(appIcon)
def playMusic(self):
file_path =
os.path.join(os.path.dirname(__file__), 'assets/bunga-
cinta.mp3')
media_src = Phonon.MediaSource(file_path)
self.media_obj = Phonon.MediaObject(self)
self.media_obj.setCurrentSource(media_src)
video_widget = Phonon.VideoWidget(self)
Phonon.createPath(self.media_obj, video_widget)
audio_out =
Phonon.AudioOutput(Phonon.VideoCategory, self)
Phonon.createPath(self.media_obj, audio_out)
def evenButton1(self):
if self.Button1.text() == "Set Alarm":
self.jam = self.comboJam.currentText()
self.menit = self.comboMenit.currentText()
self.detik = self.comboDetik.currentText()
self.comboJam.setCurrentIndex(0)
self.comboMenit.setCurrentIndex(0)
self.comboDetik.setCurrentIndex(0)
self.label.setText('<h2
style="color:blue;">Alarm :
'+str(self.jam+":"+self.menit+":"+self.detik)+'</h2>')
self.Button1.setText("Cancel Alarm")
self.Button1.setToolTip('Batalkan Alarm')
else:
userInfo = QMessageBox.question(self,
'Confirmation', 'Anda yakin akan membatalkan Alarm?',
QMessageBox.Yes | QMessageBox.No)
if userInfo == QMessageBox.Yes:
self.jam = ""
self.menit = ""
self.detik = ""
self.media_obj.stop()
self.Icon2 = QIcon("assets/Icon2.png");
pixmap = self.Icon2.pixmap(25, 25,
QIcon.Disabled, QIcon.Off)
self.LabelIcon.setPixmap(pixmap)
self.LabelIcon.setToolTip('Alarm Tidak
Aktif')
self.Button1.setText("Set Alarm")
self.Button1.setToolTip('Set Alarm')
self.label.setText('<h2
style="color:blue;">Alarm belum diseting!</h2>')
def showlcd(self):
time = QTime.currentTime()
text = time.toString('hh:mm:ss')
if time.toString('hh') == self.jam and
time.toString('mm') == self.menit and
time.toString('ss') == self.detik:
self.label.setText('<h2
style="color:blue;">Sekarang Sudah Jam
'+str(self.jam+":"+self.menit+":"+self.detik)+'</h2>')
Icon2 = QIcon("assets/Icon3.png");
self.media_obj.play()
pixmap = Icon2.pixmap(25, 25, QIcon.Active,
QIcon.On)
self.LabelIcon.setPixmap(pixmap)
self.LabelIcon.setToolTip('Waktu telah tiba
sekarang sudah pukul
'+str(self.jam+":"+self.menit+":"+self.detik))
elif time.toString('mm') > self.menit and
(self.jam != "" and self.menit != ""):
Icon2 = QIcon("assets/Icon1.png");
self.media_obj.stop()
pixmap = Icon2.pixmap(25, 25, QIcon.Active,
QIcon.On)
self.LabelIcon.setPixmap(pixmap)
self.LabelIcon.setToolTip('Alarm aktif')
self.label.setText('<h2
style="color:blue;">Alarm :
'+str(self.jam+":"+self.menit+":"+self.detik)+'</h2>')
self.lcd.display(text)
self.lcd.setToolTip(self.konversi.cekWaktu(time.toStrin
g('hh'),time.toString('mm'),time.toString('ss')))
def main():
app = QApplication(sys.argv)
ex = Alarm()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
class konversi(Alarm):
def kalimat(self, w):
kalimat = "";
huruf = ["nol", "satu", "dua", "tiga", "empat",
"lima", "enam", "tuju", "delapan", "sembilan"];
if str(w)[0] == '1' and str(w)[1] == '0':
kalimat = 'sepuluh'
elif str(w)[0] == '1' and str(w)[1] == '1':
kalimat = 'sebelas'
elif str(w)[0] == '1' and int(str(w)[1]) >= 2:
kalimat = huruf[int(str(w)[1])]+' belas'
elif int(str(w)[0]) >= 2 and int(str(w)[1]) >
0:
kalimat = huruf[int(str(w)[0])]+' puluh
'+huruf[int(str(w)[1])]
elif int(str(w)[0]) > 1 and str(w)[1] == '0':
kalimat = huruf[int(str(w)[0])]+' puluh'
else:
kalimat = huruf[int(str(w)[1])]
return kalimat
def cekWaktu(self, h, m, s):
if m == 0: return str('Sekarang pukul
'+self.kalimat(h)+' tepat lewat '+self.kalimat(s)+'
detik')
elif m == 15: return str('Sekarang pukul
'+self.kalimat(h)+' lewat seperempat menit
'+self.kalimat(s)+' detik')
elif m == 30: return str('Sekarang pukul
setengah '+self.kalimat(h+1)+' lewat '+self.kalimat(s)
+' detik')
elif m == 45: return str('Sekarang pukul
'+self.kalimat(h+1)+" kurang seperempat lewat
"+self.kalimat(s)+' detik')
else: return str('Sekarang pukul
'+self.kalimat(h)+" lewat "+self.kalimat(m)+' menit
'+self.kalimat(s)+' detik')
Hasil Running :