You are on page 1of 106

TECHNICAL REPORT

PRAKTIKUM PEMROGRAMAN DESKTOP

MODUL I

Disusun Oleh :
TGL. PRAKTIKUM : 17 September 2019
NAMA :Dwi Nita Meliana Y.P
NIM :180411100118
KELOMPOK :2
DOSEN :M. Kautsar Sophan,S.Kom., M.MT

LABORATORIUM TEKNOLOGI INFORMASI & APLIKASI


JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK
MODUL I

A. Deskripsi dan Soal Tugas Praktikum


1. Lakukan perubahan pada contoh1, lakukan penentuan ukuran window
2. Lakukan perubahan pada contoh 2, lakukan penentuan ukuran window dan lokasi tombol
3. Coba lakukan grid layout, agar muncul tampilan seperti berikut

B. Jawaban Tugas Praktikum


1. Source code keseleruhan program
No. 1
import sys
from PyQt5.QtWidgets import QApplication,QWidget, QLabel
if __name__=='__main__':
app= QApplication(sys.argv)
form= QWidget()
form.resize(400,200)
form.move(300,300)
form.setWindowTitle('Tugas No.1')

label=QLabel('Hello World')
label.move(165,80)
label.setParent(form)

form.show()
app.exec_()
No. 2
import sys
from PyQt5 import QtWidgets, QtCore
class demowind(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.setGeometry(400, 400, 350, 200)
self.setWindowTitle('Demo window')
self.quit = QtWidgets.QPushButton('Close', self)
self.quit.setGeometry(50, 50, 85, 50)
self.quit.move(130,80)
self.quit.clicked.connect(self.close)
app = QtWidgets.QApplication(sys.argv)
dw = demowind()
dw.show()
sys.exit(app.exec_())

No.3
import sys
from PyQt5.QtWidgets import QApplication, QWidget,
QPushButton, QHBoxLayout, QGroupBox, QDialog, QVBoxLayout,
QGridLayout
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

class App(QDialog):

def __init__(self):
super().__init__()
self.title = 'PyQt5 layout - pythonspot.com'
self.left = 10
self.top = 10
self.width = 320
self.height = 100
self.initUI()

def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left,self.top,self.width,
self.height)
self.createGridLayout()
windowLayout = QVBoxLayout()
windowLayout.addWidget(self.horizontalGroupBox)
self.setLayout(windowLayout)

self.show()

def createGridLayout(self):
self.horizontalGroupBox = QGroupBox("Grid")
layout = QGridLayout()
layout.setColumnStretch(1, 4)
layout.setColumnStretch(2, 4)

layout.addWidget(QPushButton('1'),0,0)
layout.addWidget(QPushButton('2'),0,1)
layout.addWidget(QPushButton('3'),0,2)
layout.addWidget(QPushButton('4'),1,0)
layout.addWidget(QPushButton('5'),1,1)
layout.addWidget(QPushButton('6'),1,2)
layout.addWidget(QPushButton('7'),2,0)
layout.addWidget(QPushButton('8'),2,1)
layout.addWidget(QPushButton('9'),2,2)

self.horizontalGroupBox.setLayout(layout)

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
2. Penjelasan code program
No.1
a. Import sys
Sys merupakan sebuah modul yang perlu diimport ke setiap program yang dibuat
menggunakan PyQt karena kita akan memanggil sys.argv pada saat membuka objek dari
kelas QApplication.
b. Baris kode kedua akan mengimpor kelas QApplication, Qwidget, dan Qlabel. Kelas-
kelas tersebut didefinisikan didalam modul QtWidgets yang berada dalam paket PyQt5.
c. Baris kode ketiga berguna untuk membuat objek(instance) dari
kelas QApplication. Setiap program yang ditulis menggunakan PyQt harus memiliki
objek tersebut.
d. Baris kode keempat berguna untuk membuat objek dari kelas QWidget, dalam contoh
tsb objek diperankan sebagai form utama dari program yang kita buat.
e. Metode resize() pada kelas QWidget, berguna untuk mengubah ukuran form, dapat
dimodifikasi sesuai yang diinginkan.
f. Metode move() pada kelas QWidget(dan kelas-kelas kontrol yang lain). Berguna
untuk menentukan posisi atau koordinat form pada saat ditampilkan.
g. Kode baris kedelapan berguna untuk menentukan judul form.

h. Tiga baris kode diatas berguna untuk membuat label dan menempatkannya kedalam
form pada koordinasi (55, 40). setParent() menentukan bahwa parent dari
komponen label adalah form.
i. Baris kode diatas berguna untuk menampilkan form beserta kontrol-kontrol yang ada
didalmanya.
j. Kode pada baris terakhir merupakan pengulan utama dari aplikasi (main loop). Form
akan ditampilakn secara terus menerus sampai ada tindakan dari user.

No. 2
a. Import sys: Sys merupakan sebuah modul yang perlu diimport ke setiap program yang
dibuat menggunakan PyQt karena kita akan memanggil sys.argv pada saat membuka
objek dari kelas QApplication.
b. Baris kode kedua akan mengimpor kelas Qwidget, dan QtCore. Kelas-kelas tersebut
didefinisikan didalam modul QtWidgets yang berada dalam paket PyQt5.
k. Kode baris keenam berguna untuk menentukan posisi atau koordinat form pada saat
ditampilkan.
c. Kode baris ketujuh berguna untuk membuat judul window
d. Kode baris ke- 8 hingga 11 digunakan untuk membuat butthon dan mengatur letak
button.
e. Baris kode ke-12 berguna untuk membuat objek(instance) dari
kelas QApplication. Setiap program yang ditulis menggunakan PyQt harus memiliki
objek tersebut.
f. Kode baris ke-14 berguna untuk menampilakn class dw
g. Kode pada baris terakhir merupakan pengulan utama dari aplikasi (main loop). Hasil
output akan ditampilakn secara terus menerus sampai ada tindakan dari user.

No. 3
a. Import sys: Sys merupakan sebuah modul yang perlu diimport ke setiap program yang
dibuat menggunakan PyQt karena kita akan memanggil sys.argv pada saat membuka
objek dari kelas QApplication.
b. Baris kode kedua akan mengimpor kelas QApplication, QWidget, QPushButton,
QHBoxLayout, QGroupBox, QDialog, QVBoxLayout, QGridLayout. Kelas-kelas
tersebut didefinisikan didalam modul QtWidgets yang berada dalam paket PyQt5.
c. Baris kode ketiga akan mengimpor kelas QIcon. Kelas-kelas tersebut didefinisikan
didalam modul QtGui yang berada dalam paket PyQt5.
d. Baris kode ketiga akan mengimpor kelas pyqtSlot. Kelas-kelas tersebut didefinisikan
didalam modul QtCore yang berada dalam paket PyQt5.
e. Fungsi __init__ berguna untuk membuat dan mengatur tampilan window yang
diinginkan. Dimana dalam fungsi tersebut terdapat QVBoxLayout() yang digunakan
untuk memanggil/membuat sebuah gird layout, dan addWidget digunakan untuk
menambahkan widget ke dalam gird layout yang parameternya adalah(nama widget,
kolomspan,barisspan)
f. Fungsi createGirdLayout berguna untuk membuat dan mengatur tampilan gird yang
diinginkan seperti halnya letak gird.
h. Kode app = QApplication(sys.argv) berguna untuk membuat objek(instance) dari
kelas QApplication. Setiap program yang ditulis menggunakan PyQt harus memiliki
objek tersebut.
g. Kode baris terakhir merupakan pengulangan utama dari aplikasi (main loop) dan
menenrima semua inputan dari user hingga aplikasi selesai dan hasil return dari
appp.exec_() akan diteruskan ke fungsi sys.exit() untuk menutup script pada python.
3. Hasil Run Program
1) No. 1

2) No.2

3) No.3
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 2

“WIDGET DASAR”

Disusun Oleh :
TGL PRAKTIKUM : 24 September 2019
NAMA : Dwi Nita Meliana Y.P
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban M

Disetujui : ....../……./………../Bangkalan

(Sya’ban M)

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

PyQt5 merupakan lintas platform GUI perangkat Qt yang mengikat python


dan diemplementasikan sebagai plug-in. Dalam Qt, untuk menghubungkan setiap
event atau kejadian yang terjadi pada satu objek dengan objek lain menggunakan
sebuah methode connection. Methode connection ini mengimplementasikan
Signal dan Slot. Dimana Signal adalah methode yang mengirimkan Sinyal atau
kejadian atau event yang terjadi pada objek pemicu ke objek penerima. Sedangkan
Slot adalah methode penerima yang digunakan untuk memproses lebih lanjut
event atau Signal yang diterima dari objek pengirim.

Di dalam pemrograman berbasis GUI, ketika kita menggunakan sebuah


komponen atau widget, (misalkan saja sebuah tombol Close) kita perlu membuat
sebuah interaksi dengan widget lainnya (misalkan dialog atau window tempat
button tersebut berada) agar jika kita meng-klik tombol close tersebut, jendela
atau dialog tersebut akan di tutup. Dalam Qt sendiri terdapat beberapa widget
dasar diantaranya adalah Line Edit merupakan sebuah kotak dialog yang
digunakan untuk meminta sebuah text pendek pada user, Radio Button merupakan
widget yang dapat menerima pilihan true atau false. Dalam sekumpulan Radio
Button hanya ada satu yang kondisinya terpilih/true., Checkbox merupakan
widget yang memiliki fungsi mirip dengan Radio Button, yaitu untuk melakukan
pemilihan dari sekian opsi yang ada. Bedanya, jika Radio Button hanya dapat
terpilih satu dari sekian radio button, Spinbox mrupakan kotak dialog yang
memiliki value didalamnya yang bisa diubah dengan menggunakan tombol
up/down pada samping kanan kotak dialog, Slider merupakan sebuah tombol yang
bisa diubah valuenya dengan menggeser tombol tersebut kekiri maupun kekanan
dan keatas maupun kebawah.

Setiap praktikan diharuskan untuk bisa memahami baik signal dan slot
maupun widget dasar pada Qt untuk memenuhi syarat perkuliahan Pemrograman
Desktop ini, sehingga dengan adanya pembuatan modul ini yang disertai materi
dan contoh serta soal-soal yang diberikan dapat melatih dan menambah wawasan
bagi praktikan dalam membuat program widget dasar.
1.2 Tujuan
Adanya tujuan dalam pembuatan modul ini yaitu:
1. Membantu praktikan bisa memhami widget dasar pada PyQt5.
2. Membantu praktikan untuk memhami signal dan slot.
3. Melatih praktikan untuk bisa membuat sebuah program desktop yang
utamanya adalah macam-macam widget dasar pada PyQt, diantaranya:
a. Line Edit
b. Push Button
c. Check Box
d. Radio Button
e. Slider
f. Spin Box
g. List Widget
BAB II
DASAR TEORI

 Signal dan Slot


Event di PYQT diproses dengan mekanisme signal dan slot. Sebagai contoh
event adalah kejadian ketika kita meng-klik sebuah tombol. Ketika kita
mengklik sebuat tombol, maka sebuah signal dimunculkan. Selanjutnya signal
akan ditempatkan pada slot. Slot bisa dalam bentuk library Qtslot atau method
lain yang bisa di panggil. Dalam aplikasi utama, QCoreApplication berisi event
utama yang berjalan selama berulang-ulang (mainloop) dan menangkap semua
event yang terjadi. Signal akan berhubungan dengan slot untuk memanggil
method terkait. Komunikasi ini dijalan kan oleh 2 object, sender dan receiver.

 Radio Button
Radio Button adalah widget yang dapat menerima pilihan true atau false.
Dalam sekumpulan Radio Button hanya ada satu yang kondisinya terpilih/true.
Contoh program yang akan dibuat adalah kalkulator sederhana untuk
menambah, mengurangi, mengali, dan membagi dua angka input dari
pengguna. Hasil perhitungan akan ditampilkan pada textlabel. Berikut hasil
outputnya:
 Check Box
Check Box adalah widget yang memiliki fungsi mirip dengan Radio Button,
yaitu untuk melakukan pemilihan dari sekian opsi yang ada. Bedanya, jika
Radio Button hanya dapat terpilih satu dari sekian radio button, Check Box
memungkinkan pengguna untuk memilih lebih dari satu widget Check Box.
Contoh program yang akan dibuat adalah penghitung harga makanan
sederhana. Hasil perhitungan akan ditampilkan pada line Edit yang diset
disable. Berikut hasil outputnya:
BAB III
TUGAS DAN IMPLEMENTASI

4.1 Tugas Praktikum


4.1.1 Soal
1. Modifikasi program 2: hapus tombol. Proses penghitungan total
harga terjadi tiap kali sebuah check box di click. Hint: gunakan
method clicked milik check box.
2. Buat aplikasi untuk menyimpan data diri:
a. Nama: Line Edit
b. Jenis Kelamin: Radio Button
c. Apakah memiliki: SIM, Paspor, STNK, ATM, dll. Masing-masing
pilihan menggunakan Check Box
d. Tinggi badan: Spin Box/ Double Spin Box
e. Tahun lahir: Slider. Batasi sekitar 5 tahun dari tahun kelahiran
pribadi untuk nilai maksimum dan minimum slider.
f. Tambahkan tombol yang jika diklik akan menyimpan data-data
diatas ke dalam sebuah List Widget
g. Tambahkan juga tombol untuk delete dan delete all
h. Nilai plus jika program menyimpan semua data di atas dalam satu
item & dapat melakukan edit data yang sudah ada tanpa harus
mengetik ulang data satuper-satu.

4.1.2 Jawaban
1. Source code
import sys
from PyQt5.QtWidgets import QDialog,
QWidget,QLabel,QPushButton, QApplication, QLineEdit,
QRadioButton, QCheckBox
class Form1(QDialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lbltxtjdl=QLabel(self)
self.lbltxtjdl.setText('Warung Kita')
self.lbltxtjdl.move(85,0)
self.lbltxtjdl.setStyleSheet('font:bold;' 'textdecoration:underline;')

self.cb1 = QCheckBox('Pecel Rp 10.000',self)


self.cb1.stateChanged.connect(self.hitung1)
self.cb1.move(50, 70)
self.cb2 = QCheckBox('Nasgor Rp 12.000',self)
self.cb2.stateChanged.connect(self.hitung2)
self.cb2.move(50, 100)
self.cb3 = QCheckBox('Sop Rp 12.000',self)
self.cb3.stateChanged.connect(self.hitung3)
self.cb3.move(50, 130)
self.cb4 = QCheckBox('Lodeh Rp 13.000',self)
self.cb4.stateChanged.connect(self.hitung4)
self.cb4.move(50, 160)

self.lbltxthasil=QLabel('Harga Total:',self)
self.lbltxthasil.move(20,250)

self.lbltotal= QLineEdit('0',self)
self.lbltotal.setEnabled(False)
self.lbltotal. move(90,247)

self.setGeometry(300, 300, 250, 300)


self.setWindowTitle('Dialog')
self.show()
def hitung1(self):
if self.cb1.isChecked()== True:
n=10000
prev= int (self.lbltotal.text())
hasil= prev+n
self.lbltotal.setText(str(hasil))
else:
n=1000
prev= int (self.lbltotal.text())
hasil= prev-n
self.lbltotal.setText(str(hasil))

def hitung2(self):
if self.cb2.isChecked()== True:
n=12000
prev= int (self.lbltotal.text())
hasil= prev+n
self.lbltotal.setText(str(hasil))
else:
n=12000
prev= int (self.lbltotal.text())
hasil= prev-n
self.lbltotal.setText(str(hasil))

def hitung3(self):
if self.cb3.isChecked()== True:
n=12000
prev= int (self.lbltotal.text())
hasil= prev+n
self.lbltotal.setText(str(hasil))
else:
n=12000
prev= int (self.lbltotal.text())
hasil= prev-n
self.lbltotal.setText(str(hasil))

def hitung4(self):
if self.cb4.isChecked()== True:
n=13000
prev= int (self.lbltotal.text())
hasil= prev+n
self.lbltotal.setText(str(hasil))
else:
n=13000
prev= int (self.lbltotal.text())
hasil= prev-n
self.lbltotal.setText(str(hasil))

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Form1()
sys.exit(app.exec_())

Hasil Output:
2. Source code:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class biodata(QWidget) :
def __init__(self) :
super().__init__()
self.UI()

def UI(self) :
self.judul = QLabel('Biodata Diri',self)
self.judul.move(145,20)
self.judul.setStyleSheet('font:bold 18px;text-
decoration:underline')

self.lnama = QLabel('Nama :',self)


self.lnama.move(20,50)
self.nama = QLineEdit(self)
self.nama.setGeometry(50,50,120,20)

self.jk = QLabel('Jenis Kelamin :',self)


self.jk.move(20,70)
self.jkl = QRadioButton('Laki',self)
self.jkl.move(20,90)
self.jkw = QRadioButton('Perempuan',self)
self.jkw.move(70,90)

self.jk = QLabel('Apakah Anda memiliki :',self)


self.jk.move(20,110)
self.plh1 = QCheckBox('SIM',self)
self.plh1.move(20,130)
self.plh1.stateChanged.connect(self.sim)
self.plh2 = QCheckBox('Paspor',self)
self.plh2.move(20,150)
self.plh2.stateChanged.connect(self.paspor)
self.plh3 = QCheckBox('STNK',self)
self.plh3.move(80,130)
self.plh3.stateChanged.connect(self.stnk)
self.plh4 = QCheckBox('ATM',self)
self.plh4.move(80,150)
self.plh4.stateChanged.connect(self.atm)

self.ltb =QLabel('Tinggi Badan',self)


self.ltb.move(20,183)
self.tb =QSpinBox(self)
self.tb.setRange(150,175)
self.tb.move(90,180)

self.ltgl=QLabel('Tahun Lahir',self)
self.ltgl.move(20,210)
self.tgl=QSlider(Qt.Horizontal,self)
self.tgl.setMaximum(2005)
self.tgl.setMinimum(2000)
self.tgl.move(20,230)

self.save =QPushButton('Save',self)
self.save.move(296,490)
self.save.clicked.connect(self.simpan)

self.delete =QPushButton('Delete',self)
self.delete.move(296,520)
self.delete.clicked.connect(self.delitem)
self.all =QPushButton('Delete All',self)
self.all.move(296,550)
self.all.clicked.connect(self.delall)

self.sv = QListWidget(self)
self.sv.setGeometry (20,270,250,300)

self.setGeometry(200,100,400,600)
self.show()

def sim(self):
if self.plh1.isChecked():
a = 'Memiliki SIM'
else :
a = 'Tidak Memiliki SIM'
return a
def paspor(self):
if self.plh2.isChecked():
b = 'Memiliki Paspor'
else :
b = 'Tidak Memiliki Paspor'
return b
def stnk(self):
if self.plh3.isChecked():
c = 'Memiliki STNK'
else :
c = 'Tidak Memiliki STNK'
return c
def atm(self):
if self.plh4.isChecked():
d = 'Memiliki ATM'
else :
d = 'Tidak Memiliki ATM'
return d

def simpan(self):
if self.jkl.isChecked():
nama = str(self.nama.text())
jk = str(self.jkl.text())
tinggi = str(self.tb.value())
tahun = str(self.tgl.value())
isi =
[nama,jk,self.sim(),self.paspor(),self.stnk(),self.atm(),tinggi,tahun]
self.sv.addItems(isi)
elif self.jkw.isChecked():
nama = str(self.nama.text())
jk = str(self.jkw.text())
tinggi = str(self.tb.value())
tahun = str(self.tgl.value())
isi =
[nama,jk,self.sim(),self.paspor(),self.stnk(),self.atm(),tinggi,tahun]
self.sv.addItems(isi)

def delitem(self):
self.sv.clear()

def delall(self):
self.sv.clear()

if __name__ == '__main__' :
app= QApplication(sys.argv)
ex = biodata()
sys.exit(app.exec_())
Hasil Output:
BAB IV
PENUTUP

5.1 Kesimpulan
Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:
1. Event di PYQT diproses dengan mekanisme signal dan slot, dimana signal
merupakan methode yang mengirimkan sinyal atau kejadian atau event yang
terjadi pada objek pemicu ke objek penerima dan slot merupakan methode
penerima yang digunakan untuk memproses lebih lanjut event atau Signal yang
diterima dari objek pengirim. Jadi, komunikasi ini dijalan kan oleh 2 object
yaitu pengirim dan penerima.
2. Dalam Qt , widget dasar meliputi: Line Edit, Radio Button, Check Box, Spin
Box, Slider, Push Button, dan lain-lain.

5.2 Saran
Dengan adanya technical report ini yang berisi tentang Widget Dasar pada Qt
agar untuk kedepannya diharapkan dapat menambah pemahaman bagi praktikan
terhadap materi tersebut.
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 3

“MENU”

Disusun Oleh :
TGL PRAKTIKUM : 1 Oktober 2019
NAMA : Dwi Nita Meliana Y.P
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban

Disetujui : ....../……./………../Bangkalan

(Sya’ban )

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

PyQt5 merupakan lintas platform GUI perangkat Qt yang mengikat python dan
diemplementasikan sebagai plug-in. Dalam PyQt terdapat 3 tampilan dasar yang merupakan
alternative untuk menampilkan tampilan dasar ,yaitu: QWidget, QDialog, QMainWindow.
Dari ketiganya kita dapat menyesuaikan dengan kebutuhan kita dalam membuat sebuah
aplikasi.
QWidget sendiri merupakan class dasar untuk semua elemen GUI yang ada di PyQT,
biasanya kita gunakan ketika hanya ingin menampikan widget dasar tanpa ada tambahan
tombol default. QDialog merupakan class yang digunakan untuk meminta respon ke user
tentang sesuatu, seperti meminta user untuk accept atau reject sesuatu proses atau meminta
inputan berdasarkan QWidget tertentu, yang biasanya digunakan ketika kita ingin
menampilkan form standar dengan tombol konfirmasi ke user. QMainWindow merupakan
template class paling besar dimana dalam class ini kita bisa meletakkan toolbar, menu bar,
status bar dan tentu saja widget yang lain. QMainWindow ini digunakan ketika kita ingin
menampilan window utama dengan menu, toolbar dan status bar.
Dalam menampilkan menu pada aplikasi kita harus menggunakan QMainWindow karena
dengan menggunakan tampilan dasar ini kita bisa menampilkan toolbar yang merupakan
letak dari menu itu sndiri serta kita dapat pula menambahkan statusbar, dan lain sebagainya
selayaknya tampilan window pada umumnya. Menu sendiri merupakan kumpulan perintah
yang dapat dilakukan oleh sebuah form aplikasi. Menu berlokasi di bagian menubar. Dan
Status bar adalah bagian yang digunakan untuk menunjukkan status informasi dari sebuah
aplikasi. Statusbar berlokasi di bagian bawah aplikasi.
Setiap praktikan diharuskan untuk bisa memahami mulai dari tampilan dasar PyQt hingga
membuat tampilan menu window pada Qt untuk memenuhi syarat perkuliahan Pemrograman
Desktop ini, sehingga dengan adanya pembuatan modul ini yang disertai materi dan contoh
serta soal-soal yang diberikan dapat melatih dan menambah wawasan bagi praktikan dalam
membuat program menu.
1.2 Tujuan
Adanya tujuan dalam pembuatan modul ini yaitu:
1. Membantu praktikan bisa memhami pembuatan menu pada window menggunakan
PyQt5.
2. Membantu praktikan untuk memhami tampilan dasar pada PyQt5, yaitu: QWidget,
QDialog, QMainWindow.
3. Melatih praktikan untuk bisa membuat sebuah program desktop dalam membuat
tampilan menu.
BAB II
DASAR TEORI

Pada PyQt untuk menampilkan tampilan dialog terdapat 3 alternatif tampilan dasar,
yaitu: QWidget, QDialog, QMainWindow. Jika kita ingin menampilkan form window dasar
tanpa tambahan tombol default, kita bisa menggunakan QWidget. Jika ingin menampilan
window utama dengan menu, toolbar dan status bar, kita menggunakan QMainWindow.
Untuk menampilkan form standar dengan tombol konfirmasi ke user, kita menggunakan
QDialog. Penggunaan class ini bergantung pada kebututuhan aplikasi kita. QWidget adalah
class dasar untuk semua elemen GUI yang ada di PyQT. QDialog adalah class yang
digunakan untuk meminta respon ke user tentang sesuatu, seperti meminta user untuk accept
atau reject sesuatu proses atau meminta inputan berdasarkan QWidget tertentu. QMainWindo
adalah template class paling besar dimana dalam class ini kita bisa meletakkan toolbar, menu
bar, status bar dan tentu saja widget yang lain. QMainWindow Merupakan class yang
menyajikan window aplikasi utama. Bisa digunakan sebagai kerangka utama atau halaman
utama dari sebuah aplikasi. Dengan class ini, memungkinkan kita membuat apikasi yang
memiliki statusbar, toolbas dan menubar. Berikut struktur QMainWindow:
 Contoh program sederhananya:
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.statusBar().showMessage('Ready')
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Statusbar')
self.show()
if __name__ == '__main__':
app2 = QApplication(sys.argv)
ex2 = Example()
sys.exit(app2.exec_())

2.2 Menambahkan Layout di QMainWindow

Langkah yang kita lakukan adalah


1. Menyiapkan widget yang akan ditambahkan
2. Menyiapkan layout
a. Menambahkan widget ke dalam layout
3. Menyiapkan QWidget
a. Menambahkan layout ke QWidget
4. Menambahkan QWidget ke central Widget class QMainWindow

Berikut source codenya:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QLabel,
QVBoxLayout
class Example(QMainWindow):
def __init__(self):
super().__init__()
lbl_1 = QLabel("rr1")
lbl_2 = QLabel('stacked')
lbl_3 = QLabel('up.')
layout = QVBoxLayout()
layout.addWidget(lbl_1)
layout.addWidget(lbl_2)
layout.addWidget(lbl_3)
widget1 = QWidget()
widget1.setLayout(layout)
self.setCentralWidget(widget1)
self.statusBar().showMessage('Ready')
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("Statusbar")
self.show()
if __name__ == '__main__':
app2 = QApplication(sys.argv)
ex2 = Example()

2.3 Membuat Tampilan Menu Sederhana

Untuk membuat menu, kita menggunakan menubar. QAction adalah class yang
digunakan untuk menentukan aksi / actio n yang dilakukan ketika menu di klik, dan juga
digunakan untuk menambahkan toolbar / icon, dan untuk menambahkan keyboard shorcut. 3
baris program yang berwarna merah adalah program untuk membuat status tip, nama menu,
dan shortcut. Ketika menu ini di pilih, maka signal trigger akan di hasilkan. dalam contoh ini,
signal terhubung dengan method untuk menutup aplikasi. Berikut adalah source codenya:
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
exitAct = QAction(QIcon('exit.png'), '&Exit', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('Exit application')
exitAct.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Simple menu')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
BAB III
TUGAS DAN IMPLEMENTASI

3.1 Tugas Praktikum


3.1.1 Soal
1. Coba Code1, lakukan modifikasi dengan menambahkan widget lain untuk form
isian data alamat.
2. Buat aplikasi bebas yang berisi perhitungan.
3. Buat aplikasi dengan menu, di dalam menu ada pilihan menu untuk membuka
aplikasi yang telah anda buat di no2.

3.1.2 Jawaban

1. Source Code
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class nomor1(QMainWindow):
def __init__(self) :
super().__init__()
self.UI()
self.setGeometry(300,300,300,200)
self.setWindowTitle('Layout')
self.show()

def UI(self) :
judul = QLabel('Data Diri',self)
judul.setStyleSheet('font-size:20px;')
judul.setAlignment(Qt.AlignCenter)

nama = QLabel('Nama ',self)


self.nama1 = QLineEdit(self)
nim = QLabel('NIM ',self)
self.nim1 = QLineEdit(self)

alamat = QLabel('Alamat ',self)


self.alamat1 = QLineEdit(self)

prodi = QLabel('Program Studi ',self)


self.prodi1 = QLineEdit(self)

btn = QPushButton('Submit',self)
btn.clicked.connect(self.tampil)

btnn = QPushButton('Clear',self)
btnn.clicked.connect(self.clear)

self.lw = QListWidget(self)

layout= QGridLayout()
layout.addWidget(judul,0,0,1,2)
layout.addWidget(nama,1,0)
layout.addWidget(self.nama1,1,1)
layout.addWidget(nim,2,0)
layout.addWidget(self.nim1,2,1)
layout.addWidget(alamat,3,0)
layout.addWidget(self.alamat1,3,1)
layout.addWidget(prodi,4,0)
layout.addWidget(self.prodi1,4,1)
layout.addWidget(btn,5,0,1,2)
layout.addWidget(btnn,6,0,1,2)
layout.addWidget(self.lw,7,0,1,2)
self.widget = QWidget()
self.widget.setLayout(layout)
self.setCentralWidget(self.widget)

def tampil(self):
a = str(self.nama1.text())
b = str(self.nim1.text())
c = str(self.alamat1.text())
d = str(self.prodi1.text())
self.lw.addItem('Nama : '+str(a)+'\nNIM : '+str(b)+'\nAlamat :
'+str(c)+'\nProgram Studi : '+str(d))

def clear (self):


self.nama1.setText('')
self.nim1.setText('')
self.alamat1.setText('')
self.prodi1.setText('')
self.lw.clear()

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = nomor1()
sys.exit(app.exec_())

2. a. Sub1

import sys
from PyQt5.QtWidgets import QLabel, QApplication, QLineEdit, QPushButton,
QWidget, QListWidget
from PyQt5 import QtGui
from PyQt5.QtCore import *

class Menu(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('SubMenu1')
self.setGeometry(100,100,300,250)
self.setStyleSheet('background-color:#deb887;color:black;font:blod;')
self.initGUI()

def initGUI(self):
self.font = QtGui.QFont()
self.font.setPointSize(14)
self.font.setBold(True)
self.font.setWeight(75)

self.font1 = QtGui.QFont()
self.font1.setPointSize(10)

self.jdl = QLabel('Konversi IDR to USD',self)


self.jdl.move(60,15)
self.jdl.setFont(self.font)

self.label1 = QLabel('Rupiah',self)
self.label1.move(30,50)
self.label2 = QLabel(':',self)
self.label2.move(110,50)
self.label1.setFont(self.font1)

self.matauang = QLineEdit(self)
self.matauang.setStyleSheet('background-color:white;color:black')
self.matauang.move(130,50)

self.label3 = QLabel('Kurs',self)
self.label3.move(30,75)
self.label3.setFont(self.font1)
self.label4 = QLabel(':',self)
self.label4.move(110,75)

self.tukar= QLineEdit(self)
self.tukar.setStyleSheet('background-color:white;color:black')
self.tukar.move(130,75)

self.btn1= QPushButton('Konversi', self)


self.btn1.clicked.connect(self.hitung)
self.btn1.move(100,120)
self.btn1.resize(100,25)
self.btn1.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')

self.tampung=QListWidget(self)
self.tampung.setGeometry(30,160,240,55)
self.tampung.setStyleSheet('background:white;color:black;')

self.btn2=QPushButton('Clear', self)
self.btn2.clicked.connect(self.hapus)
self.btn2.move(110,225)
self.btn2.resize(70,20)

self.btn2.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')
#self.show()

def hitung(self):
hasil = 0
if self.btn1.isChecked:
a=self.matauang.text()
b=self.tukar.text()
hasil = float(a)*float(b)
self.tampung.addItem('USD'+ ' ' + str(hasil))
def hapus(self):
self.tampung.clear()
self.matauang.clear()
self.tukar.clear()

b. Sub2
import sys
from PyQt5.QtWidgets import QLabel, QApplication, QLineEdit, QPushButton,
QWidget, QListWidget
from PyQt5 import QtGui
from PyQt5.QtCore import *

class Menu(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('SubMenu2')
self.setGeometry(100,100,300,250)
self.setStyleSheet('background-color:#deb887;color:black;font:blod;')
self.initGUI()

def initGUI(self):
self.font = QtGui.QFont()
self.font.setPointSize(14)
self.font.setBold(True)
self.font.setWeight(75)

self.font1 = QtGui.QFont()
self.font1.setPointSize(10)
self.jdl = QLabel('Konversi USD to IDR',self)
self.jdl.move(60,15)
self.jdl.setFont(self.font)

self.label1 = QLabel('Dollar US',self)


self.label1.move(30,50)
self.label1.setFont(self.font1)
self.label2 = QLabel(':',self)
self.label2.move(110,50)

self.matauang = QLineEdit(self)
self.matauang.setStyleSheet('background-color:white;color:black')
self.matauang.move(130,50)

self.label3 = QLabel('Kurs',self)
self.label3.move(30,75)
self.label3.setFont(self.font1)
self.label4 = QLabel(':',self)
self.label4.move(110,75)

self.tukar= QLineEdit(self)
self.tukar.setStyleSheet('background-color:white;color:black')
self.tukar.move(130,75)

self.btn1= QPushButton('Konversi', self)


self.btn1.clicked.connect(self.hitung)
self.btn1.move(100,120)
self.btn1.resize(100,25)
self.btn1.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')
self.tampung=QListWidget(self)
self.tampung.setGeometry(30,160,240,55)
self.tampung.setStyleSheet('background:white;color:black;')

self.btn2=QPushButton('Clear', self)
self.btn2.clicked.connect(self.hapus)
self.btn2.move(110,225)
self.btn2.resize(70,20)

self.btn2.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')
#self.show()

def hitung(self):
hasil = 0
if self.btn1.isChecked:
a=self.matauang.text()
b=self.tukar.text()
hasil = float(a)*float(b)
self.tampung.addItem('IDR'+ ' ' + str(hasil))
def hapus(self):
self.tampung.clear()
self.matauang.clear()
self.tukar.clear()

c. Sub3
import sys
from PyQt5.QtWidgets import QLabel, QApplication, QLineEdit, QPushButton,
QWidget, QListWidget
from PyQt5 import QtGui
from PyQt5.QtCore import *

class Menu(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('SubMenu3')
self.setGeometry(100,100,300,250)
self.setStyleSheet('background-color:#deb887;color:black;font:blod;')
self.initGUI()

def initGUI(self):
self.font = QtGui.QFont()
self.font.setPointSize(14)
self.font.setBold(True)
self.font.setWeight(75)

self.font1 = QtGui.QFont()
self.font1.setPointSize(10)

self.jdl = QLabel('Konversi IDR to EUR',self)


self.jdl.move(60,15)
self.jdl.setFont(self.font)

self.label1 = QLabel('Rupiah',self)
self.label1.move(30,50)
self.label1.setFont(self.font1)
self.label2 = QLabel(':',self)
self.label2.move(110,50)

self.lahir = QLineEdit(self)
self.lahir.setStyleSheet('background-color:white;color:black')
self.lahir.move(130,50)
self.label3 = QLabel('Kurs',self)
self.label3.move(30,75)
self.label3.setFont(self.font1)
self.label4 = QLabel(':',self)
self.label4.move(110,75)

self.tgl= QLineEdit(self)
self.tgl.setStyleSheet('background-color:white;color:black')
self.tgl.move(130,75)

self.btn1= QPushButton('Konversi', self)


self.btn1.clicked.connect(self.hitung)
self.btn1.move(100,120)
self.btn1.resize(100,25)
self.btn1.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')

self.tampung=QListWidget(self)
self.tampung.setGeometry(30,160,240,55)
self.tampung.setStyleSheet('background:white;color:black;')

self.btn2=QPushButton('Clear', self)
self.btn2.clicked.connect(self.hapus)
self.btn2.move(110,225)
self.btn2.resize(70,20)

self.btn2.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')
#self.show()

def hitung(self):
hasil = 0
if self.btn1.isChecked:
a=self.lahir.text()
b=self.tgl.text()
hasil = float(a)/float(b)
self.tampung.addItem('EUR'+ ' ' + str(hasil))
def hapus(self):
self.tampung.clear()
self.matauang.clear()
self.tukar.clear()
d.Sub4
import sys
from PyQt5.QtWidgets import QLabel, QApplication, QLineEdit, QPushButton,
QWidget, QListWidget
from PyQt5 import QtGui
from PyQt5.QtCore import *

class Menu(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('SubMenu3')
self.setGeometry(100,100,300,250)
self.setStyleSheet('background-color:#deb887;color:black;font:blod;')
self.initGUI()

def initGUI(self):
self.font = QtGui.QFont()
self.font.setPointSize(14)
self.font.setBold(True)
self.font.setWeight(75)

self.font1 = QtGui.QFont()
self.font1.setPointSize(10)
self.jdl = QLabel('Konversi IDR to EUR',self)
self.jdl.move(60,15)
self.jdl.setFont(self.font)

self.label1 = QLabel('Rupiah',self)
self.label1.move(30,50)
self.label1.setFont(self.font1)
self.label2 = QLabel(':',self)
self.label2.move(110,50)

self.lahir = QLineEdit(self)
self.lahir.setStyleSheet('background-color:white;color:black')
self.lahir.move(130,50)

self.label3 = QLabel('Kurs',self)
self.label3.move(30,75)
self.label3.setFont(self.font1)
self.label4 = QLabel(':',self)
self.label4.move(110,75)

self.tgl= QLineEdit(self)
self.tgl.setStyleSheet('background-color:white;color:black')
self.tgl.move(130,75)

self.btn1= QPushButton('Konversi', self)


self.btn1.clicked.connect(self.hitung)
self.btn1.move(100,120)
self.btn1.resize(100,25)
self.btn1.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')
self.tampung=QListWidget(self)
self.tampung.setGeometry(30,160,240,55)
self.tampung.setStyleSheet('background:white;color:black;')

self.btn2=QPushButton('Clear', self)
self.btn2.clicked.connect(self.hapus)
self.btn2.move(110,225)
self.btn2.resize(70,20)

self.btn2.setStyleSheet('border-
radius:10px;background:#8b4513;color:white;')
#self.show()

def hitung(self):
hasil = 0
if self.btn1.isChecked:
a=self.lahir.text()
b=self.tgl.text()
hasil = float(a)/float(b)
self.tampung.addItem('EUR'+ ' ' + str(hasil))
def hapus(self):
self.tampung.clear()
self.matauang.clear()
self.tukar.clear()

3. Source code
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QApplication, QWidget
import sub1
import sub2
import sub3
import sub4

class Menu1(QMainWindow):
def __init__(self):
super().__init__()
menubar = self.menuBar()
fileMenu = menubar.addMenu('Konversi Mata Uang')
subMenu = QAction('IDR --> USD', self)
subMenu.triggered.connect(self.menu1click)
subMenu2 = QAction('USD --> IDR', self)
subMenu2.triggered.connect(self.menu2click)
subMenu3 = QAction('IDR --> EUR', self)
subMenu3.triggered.connect(self.menu3click)
subMenu4 = QAction('EUR --> IDR', self)
subMenu4.triggered.connect(self.menu4click)
fileMenu.addAction(subMenu)
fileMenu.addAction(subMenu2)
fileMenu.addAction(subMenu3)
fileMenu.addAction(subMenu4)
widget1 = QWidget()
self.setCentralWidget(widget1)
self.setGeometry(500, 300, 300, 200)
self.setWindowTitle('Tugas No.3')
self.show()
def menu1click(self):
self.w = sub1.Menu()
self.w.show()
# self.hide()
def menu2click(self):
self.w = sub2.Menu()
self.w.show()
# self.hide()
def menu3click(self):
self.w = sub3.Menu()
self.w.show()
# self.hide()
def menu4click(self):
self.w = sub4.Menu()
self.w.show()
# self.hide()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Menu1()
sys.exit(app.exec_())
BAB IV
PENTUP

4.1 Kesimpulan

Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:


1. Pada PyQt terdapat tiga alternatif tampilan dialog untuk menampilkan tampilan
dasar, yaitu:
a. QWidget
b. QDialog
c. QMainWidget
2. Dalam menambahkan layout pada QMainWindow ada langkah-langkah yang perlu
diketahui:
 Langkah yang kita lakukan yaitu:
1. Menyiapkan widget yang akan ditambahkan
2. Menyiapkan layout
a. Menambahkan widget ke dalam layout
3. Menyiapkan QWidget
a. Menambahkan layout ke QWidget
4. Menambahkan QWidget ke central Widget class QMainWindow

4.2 Saran
Dengan adanya technical report ini yang berisi tentang Menu pada Qt agar untuk
kedepannya diharapkan dapat menambah pemahaman bagi praktikan terhadap materi
tersebut.
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 4

“MENU”

Disusun Oleh :

TGL PRAKTIKUM : 8 Oktober 2019


NAMA : Dwi Nita Meliana Y.P
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban

Disetujui : ....../……./………../Bangkalan

(Sya’ban )
160411100119

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

Qt adalah UI framework dan platform yang ditulis dengan bahasa Python ,


Qt sebelumnya dimiliki oleh perusahaan yang bernama Trolltech dan sekarang
perusahaan tersebut telah dibeli oleh Nokia. Qt framework tersedia secara gratis
dan multiplatform (ada versi untuk linux, windows dan Mac).
QT Designer memudahkan programmer untuk membangun GUI interface
sehingga waktu programming menjadi lebih singkat dan dapat digunakan untuk
berkonsentrasi pada konten. Ini dimungkinkan karena QT Designer menggunakan
konsep visual design yang sangat mudah digunakan seperti halnya pada visual
basic. Fasilitas yang menonjol adalah kemampuan untuk ‘Signal dan Slot’ secara
visual. Dalam konteks programming dengan bahasa C++ dan Python, signal and
slot adalah istilah untuk menghubungkan antara suatu event (misalnya klik mouse
pada salah satu button) dengan slot, yaitu perintah yang harus dijalankan jika aksi
tertentu dilakukan.
QtDesigner juga dapat diartikan sebagai tools yang dapat digunakan untuk
mendesain dan mem-build Graphical User Interfaces menggunakan
QtComponents. QtDesigner dapat digunakan tidak hanya untuk membuat aplikasi
desktop, tapi juga aplikasi mobile.
Setiap praktikan diharuskan untuk bisa menggunakan Qt Designer dalam
pembuatan suatu aplikasi untuk memenuhi syarat perkuliahan Pemrograman
Desktop ini, sehingga dengan adanya pembuatan modul ini yang disertai materi
dan contoh serta soal-soal yang diberikan dapat melatih dan menambah wawasan
bagi praktikan dalam membuat program menu dengan menggunakan QT
Designer.
1.2 Tujuan

Adanya tujuan dalam pembuatan modul ini yaitu:


1. Membantu praktikan memahami pembuatan menu pada window
menggunakan QT Designer pada PyQt5.
2. Mempermudah praktikan dalam membuat sebuah listing program ketika
membuat aplikasi.
BAB II
DASAR TEORI

QT Designer adalah tools untuk melakukan desain tampilan dan


membangun tampilan grafis untuk user (GUI) dengan menggunakan komponen
QT Widget. Dengan tools ini kita bisa merancang dan melakukan perubahan
window atau dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita
buat bisa langsung kita lihat hasilnya tanpa harus melakukan run program. Konsep
ini disebut juga konsep 'What you see is what you get' (WYSIWYG). Dengan
tampilan yang langsung muncul, kita dapat mengujinya dengan berbagai tampilan
dan berbagai resolusi.
Widget dan form yang kita buat menggunakan QT Designer bisa
digabungkan dengan kode program menggunakan mekanisme signal dan slot,
sehingga kita bisa dengan mudah memberikan perintah terhadap sebuah elemen
grafis yang ada di GUI kita. Semua properties di widget (misalnya ukuran, warna,
lokasi, dsb) dengan menggunakan QT Designer bisa diubah secara dinamis.
Gambar 1 merupakan contoh tampilan QT Designer.

• Langkah Membuat design aplikasi menggunakan QT Designer


1. Membuka aplikasi QT Designer
2. Kemudian click templates/forms yang diinginkan
3. Selanjutnya kita bisa mulai membuat design aplikasi sesuai yang
dibutuhkan ,seperti menambahkan text, maupun kotak inputan , dan masih
banyak lagi.
4. Setelah selesai mendisign , lalu save file .ui tersebut.
5. Langkah selanjutnya adalah membuat source code sebagai main file.
6. Yang harus diperhatikan dalam source code tersebut adalah
uic.loadUI(‘nama file.ui’,self). Perintah tersebut digunakan untuk
memangil file GUI yang telah kita buat.
7. Setelah langkah-langkah diatas telah selesai dilakukan ,maka running main
file tersebut untuk melihat hasil outputnya.
BAB III
TUGAS DAN IMPLEMENTASI

2.1 Tugas Praktikum

2.1.1 Soal
1. Modifikasi program, pastikan jika harga tidak diisi / kosong, program
memberikan notifikasi
2. Lakukan perubahan inputan, dengan inputan
a. Nama barang
b. Jumlah barang
c. Harga satuan
d. Harga total
e. Tax
f. Total bayar

2.1.2 Jawaban

1. Source code
from PyQt5 import QtWidgets, uic
import sys

class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('form01.ui', self)
self.show()
self.calc_tax_button.clicked.connect(self.CalculateTax)

def CalculateTax(self):
if len (self.price_box.text()) ==0:
self.result_window.setText('please fill the form first')
else :
price = int(self.price_box.text())
tax = (self.tax_rate.value())
total_price = price + ((tax / 100) * price)
total_price_string = "The total price with tax is: " + str(total_price)
self.result_window.setText(total_price_string)

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

• Penjelasan code
1. Baris yang pertama adalah mengimport QtWidgets dan uic pada PyQt5.
2. Code uic.loadUi('form01.ui', self) digunakan untuk memangil file GUI
yang telah dibuat.
3. Code self.calc_tax_button.clicked.connect(self.CalculateTax) digunakan
untuk menjalankan event yang mana apabila button diclick maka fungsi
Calculate Tax akan diproses.
4. Fungsi Calculate Tax digunakan untuk menampilkan hasil dalam 2
pengkondisian ,yaitu jika kotak inputan belum terisi maka akan ada
notifikasi dan jka terisi maka inputan dari user akan dihitung sesuai
rumus yang ada.
5. Code pada baris ke-19 hingga ke-22 digunakan untuk menjalankan
program aplikasi tersebut.
• Hasil Running

2. Source code
from PyQt5 import QtWidgets, uic
import sys

class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('form02.ui', self)
self.show()
self.pushButton.clicked.connect(self.hargatotal)
self.pushButton_2.clicked.connect(self.totalbayar)
def hargatotal(self):
if len (self.lineEdit.text())==0 or len (self.lineEdit_2.text())== 0:
self.lineEdit_3.setText('Please fill the from first!')
else :
harga = int(self.lineEdit_2.text())
jml = (self.spinBox.value())
total = harga*jml
self.lineEdit_3.setText(str(total))

def totalbayar(self) :
if len (self.lineEdit.text())==0 or len (self.lineEdit_2.text())== 0 or len
(self.lineEdit_3.text())== 0 :
self.textEdit.setText('Please fill the from first!')
else:
barang = str(self.lineEdit.text())
price = int(self.lineEdit_3.text())
tax =int (self.spinBox_2.value())
total_harga = price + ((tax / 100) * price)
self.textEdit.setText('Nama barang: '+barang + '\n Harga total: '+
str(price) +"\nTotal: " + str(total_harga))

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

• Penjelasan :
1. Baris yang pertama adalah mengimport QtWidgets dan uic pada PyQt5.
2. Code uic.loadUi('form02.ui', self) digunakan untuk memangil file GUI
yang telah dibuat.
3. Code self.pushButton.clicked.connect(self.HargaTotal) digunakan untuk
menjalankan event yang mana apabila button diclick maka fungsi
hargatotal akan diproses.
4. Code self.pushButton_.clicked.connect(self.Total) digunakan untuk
menjalankan event yang mana apabila button diclick maka fungsi total
akan diproses.
5. Fungsi HargaTotal digunakan untuk menampilkan hasil dalam 2
pengkondisian ,yaitu jika kotak inputan belum terisi maka akan ada
notifikasi dan jka terisi maka inputan dari user akan dihitung sesuai rumus
untuk menghitung jumlah harga yang dibayar yang diketahui dari nilai
jumlah barang dan harga.
6. Fungsi Total digunakan untuk menampilkan hasil dalam 2 pengkondisian
,yaitu jika kotak inputan belum terisi maka akan ada notifikasi dan jka
terisi maka inputan dari user akan dihitung sesuai rumus untuk
menghitung total harga yang harus dibayar dan menampilkan seluruh
inputan dalam List Widget.
7. Code pada baris ke-28 hingga ke-31 digunakan untuk menjalankan
program aplikasi tersebut.

• Hasil Running :
BAB IV
PENTUP

4.1 Kesimpulan

Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:


1. QT Designer adalah tools untuk melakukan desain tampilan dan membangun
tampilan grafis untuk user (GUI) dengan menggunakan komponen QT Widget.
Dengan tools ini kita bisa merancang dan melakukan perubahan window atau
dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita buat bisa
langsung kita lihat hasilnya tanpa harus melakukan run program.
2. Menggunakan QT Designer ini mempermudah dalam membuat sebuah aplikasi
window karena semua properties di widget (misalnya ukuran, warna, lokasi,
dsb) dengan menggunakan QT Designer bisa diubah secara dinamis.

4.2 Saran
Dengan adanya technical report ini yang berisi tentang Menu dengan
menggunakan QT Designer ini membuat praktikan lebih mudah atau dapat
mempersingkat listing program yang digunnakan untuk membuat suatu
pemrograman desktop.
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 5

“WIDGET LANJUT”

Disusun Oleh :
TGL PRAKTIKUM : 22 Oktober 2019
NAMA : Dwi Nita Meliana Y.P
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban

Disetujui : ....../……./………../Bangkalan

(Sya’ban )
160411100119

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

Qt adalah UI framework dan platform yang ditulis dengan bahasa Python ,


Qt sebelumnya dimiliki oleh perusahaan yang bernama Trolltech dan sekarang
perusahaan tersebut telah dibeli oleh Nokia. Qt framework tersedia secara gratis
dan multiplatform (ada versi untuk linux, windows dan Mac).
QT Designer memudahkan programmer untuk membangun GUI interface
sehingga waktu programming menjadi lebih singkat dan dapat digunakan untuk
berkonsentrasi pada konten. Ini dimungkinkan karena QT Designer menggunakan
konsep visual design yang sangat mudah digunakan seperti halnya pada visual
basic.
QtDesigner juga dapat diartikan sebagai tools yang dapat digunakan untuk
mendesain dan mem-build Graphical User Interfaces menggunakan
QtComponents. QtDesigner dapat digunakan tidak hanya untuk membuat aplikasi
desktop, tapi juga aplikasi mobile.
Pada QT Designer terdapat beberapa widget lanjut diantaramya seperti
QCalendarWidget, QDate, dan QDateEdit serta Table. QCalendarWidget adalah
class yang digunakan untuk menampilkan dan menerima input terkait kalender
secara visual. Diperlukan juga class QDate dan QDateEdit untuk membantu kerja
QCalendarWidget. Dan Tabel adalah tampilan widget yang terdiri dari beberapa
baris dan beberapa kolom. Jumlah baris dan kolom bisa kita tentukan.
Setiap praktikan diharuskan untuk bisa menggunakan Qt Designer dalam
pembuatan suatu aplikasi untuk memenuhi syarat perkuliahan Pemrograman
Desktop ini, sehingga dengan adanya pembuatan modul ini yang disertai materi
dan contoh serta soal-soal yang diberikan dapat melatih dan menambah wawasan
bagi praktikan dalam membuat program dengan menggunakan widget lanjut pada
QT Designer.
1.2 Tujuan

Adanya tujuan dalam pembuatan modul ini yaitu:


1. Membantu praktikan memahami pembuatan widget lanjut pada window
menggunakan QT Designer pada PyQt5.
2. Mengenalkan kepada praktikan beberapa widget lanjut seperti
QCalendarWidget, QDate, dan QDateEdit .
3. Mengenalkan kepada praktikan cara membuat table pada QT Designer.
BAB II
DASAR TEORI

QT Designer adalah tools untuk melakukan desain tampilan dan


membangun tampilan grafis untuk user (GUI) dengan menggunakan komponen
QT Widget. Dengan tools ini kita bisa merancang dan melakukan perubahan
window atau dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita
buat bisa langsung kita lihat hasilnya tanpa harus melakukan run program. Konsep
ini disebut juga konsep 'What you see is what you get' (WYSIWYG). Dengan
tampilan yang langsung muncul, kita dapat mengujinya dengan berbagai tampilan
dan berbagai resolusi.
Widget dan form yang kita buat menggunakan QT Designer bisa
digabungkan dengan kode program menggunakan mekanisme signal dan slot,
sehingga kita bisa dengan mudah memberikan perintah terhadap sebuah elemen
grafis yang ada di GUI kita. Semua properties di widget (misalnya ukuran, warna,
lokasi, dsb) dengan menggunakan QT Designer bisa diubah secara dinamis.
Pada QT Designer terdapat beberapa widget lanjut diantaramya seperti
QCalendarWidget, QDate, dan QDateEdit serta Table . Berikut sedikit penjelasan
tentang Calendar dan Tabel serta cara pembuatanya pada Qt Designer:
1. QCalendarWidget adalah class yang digunakan untuk menampilkan dan
menerima input terkait kalender secara visual. Diperlukan juga class QDate
dan QDateEdit untuk membantu kerja QCalendarWidget. Contoh program
yang akan dibuat adalah aplikasi pemilih tanggal sederhana menggunakan
calendar widget dan date edit widget. Gambar:
2. Tabel adalah tampilan widget yang terdiri dari beberapa baris dan beberapa
kolom. Jumlah baris dan kolom bisa kita tentukan. Gambar dibawah ini
menunjukkan tabel yang kita tentukan jumlah baris dan jumlah kolomnya.
BAB III
TUGAS DAN IMPLEMENTASI

3.1 Tugas Praktikum

3.1.1 Soal
1. Dengan menggunakan tabel, buat tabel perkalian mulai dari 1x1 s/d nxn, ket : n
adalah inputan.

1.1.2 Jawaban
 Source code
from PyQt5 import QtWidgets, uic
import sys

from PyQt5.QtWidgets import QTableWidgetItem

class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('form1.ui',self)
self.show()
self.setWindowTitle('Tugas 1')
self.btnubah.clicked.connect(self.ubah)

def ubah(self):
if len(self.edbaris.text())==0 or len(self.edkolom.text()) == 0:
self.status.setText('Row or coloum is not null, please fill first!')
else :
baris = int(self.edbaris.text())
kolom = int(self.edkolom.text())
self.table.setColumnCount(kolom)
self.table.setRowCount(baris)
self.status.setText('Have changed')
for i in range(baris):
for j in range(kolom):
hasil = (i+1)*(j+1)
item = QTableWidgetItem()
item.setText(str(i+1)+' x '+str(j+1)+' = '+str(hasil))
self.table.setItem(i,j, item)
def resettab(self):
self.edbaris.clear()
self.edkolom.clear()
self.table.clear()
self.status.setText('Status')

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

 Penjelasan
1. Baris yang pertama adalah mengimport QtWidgets dan uic pada PyQt5.
2. Code uic.loadUi('form01.ui', self) digunakan untuk memangil file GUI
yang telah dibuat.
3. Code self.btubah.clicked.connect(self.ubah) digunakan untuk menjalankan
event yang mana apabila button diclick maka fungsi ubah akan diproses.
4. Code self.reset.clicked.connect(self.resttab) digunakan untuk menjalankan
event yang mana apabila button diclick maka fungsi resettab akan
diproses.
5. Fungsi ubah digunakan untuk menampilkan tabel perkalian sebanyak n
dari inputan user.
6. Code if len(self.edbaris.text())==0 or len(self.edkolom.text()) == 0:
merupakan sebuah pengkondisian apabila kotak inputan kosong/0 maka
akan ditampilan peringatan.
7. Pada kondisi kedua ( else: ) apabila kotak inputan terisi maka proses akan
dijalankan dan dapat menampilkan tabel perkalian sebanyak inputan n.
8. Fungsi resettab digunakan untuk menghapus inputan dan hasil perkalian.
9. Code baris ke-31 hingga ke-34 digunakan untuk menjalankan program
aplikasi tersebut.

 Hasil Running
BAB IV
PENTUP

4.1 Kesimpulan
Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:
1. QT Designer adalah tools untuk melakukan desain tampilan dan membangun
tampilan grafis untuk user (GUI) dengan menggunakan komponen QT Widget.
Dengan tools ini kita bisa merancang dan melakukan perubahan window atau
dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita buat bisa
langsung kita lihat hasilnya tanpa harus melakukan run program.
2. Menggunakan QT Designer ini mempermudah dalam membuat sebuah aplikasi
window karena semua properties di widget (misalnya ukuran, warna, lokasi,
dsb) dengan menggunakan QT Designer bisa diubah secara dinamis.
3. Pada QT Designer terdapat beberapa widget lanjut diantaramya seperti
QCalendarWidget, QDate, dan QDateEdit.

4.2 Saran
Dengan adanya technical report ini yang berisi tentang Widget Lanjut dengan
menggunakan QT Designer ini membuat praktikan lebih mudah dalam
memmahami pembuatan program yang membutuhkan widget calendar dilamnya.
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 6

“MATRIKS”

Disusun Oleh :
TGL PRAKTIKUM : 22 Oktober 2019
NAMA : Dwi Nita Meliana Y.P
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban

Disetujui : ....../……./………../Bangkalan

(Sya’ban )
160411100119

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

Qt adalah UI framework dan platform yang ditulis dengan bahasa Python ,


Qt sebelumnya dimiliki oleh perusahaan yang bernama Trolltech dan sekarang
perusahaan tersebut telah dibeli oleh Nokia. Qt framework tersedia secara gratis
dan multiplatform (ada versi untuk linux, windows dan Mac).
QT Designer memudahkan programmer untuk membangun GUI interface
sehingga waktu programming menjadi lebih singkat dan dapat digunakan untuk
berkonsentrasi pada konten. QtDesigner juga dapat diartikan sebagai tools yang
dapat digunakan untuk mendesain dan mem-build Graphical User Interfaces
menggunakan QtComponents. QtDesigner dapat digunakan tidak hanya untuk
membuat aplikasi desktop, tapi juga aplikasi mobile.
Dalam Qt Designer terdapat beberapa widget lanjut yang dapat digunakan
dalam pembuatan sebuah program yang tampilanya berupa table, sebagai contoh
program perhitungan beberapa operasi pada dua buah matriks.
Matriks sendiri adalah susunan sekelompok bilangan didalam suatu jajaran
yang berbentuk persegi panjang dan diatur berdasarkan baris dan kolom yang
kemudian diletakkan antara 2 tanda kurung. Bilangan pada matriks disebut elemen
atau unsur matriks. Pada matriks terdapat dua jenis diagonal, yaitu diagonal utama
dan diagonal sekunder. Diagonal utama merupakan elemen-elemen dengan yang
bisa membentuk garis miring. Diagonal sekunder merupakan kebalikan dari garis
miring diagonal utama.
Setiap praktikan diharuskan untuk bisa menggunakan Qt Designer dalam
pembuatan suatu aplikasi untuk memenuhi syarat perkuliahan Pemrograman
Desktop ini, sehingga dengan adanya pembuatan modul ini yang disertai materi
dan contoh serta soal-soal yang diberikan dapat melatih dan menambah wawasan
bagi praktikan dalam membuat program dengan tampilan table pada QT
Designer.
1.2 Tujuan

Adanya tujuan dalam pembuatan modul ini yaitu:


1. Membantu praktikan memahami pembuatan widget lanjut pada window
menggunakan QT Designer pada PyQt5.
2. Mengenalkan kepada praktikan cara membuat table pada QT Designer.
3. Mengenalkan operasi penjumlahan matriks dengan menggunakan table
pada Qt Designer.
BAB II
DASAR TEORI

Matriks adalah salah satu struktur data yang terdiri dari sekumpulan
bilangan yang disusun secara baris dan kolom dan ditempatkan pada sebuah tabel.
Ukuran suatu matriks adalah bilangan yang menunjukkan banyaknya baris (m)
dan banyaknya kolom (n).
Matriks juga seperti variabel biasa, sehingga matrikspun dapat
dimanipulasi misalnya dikalikan, dijumlah, dikurangkan, serta didekomposisikan.
Menggunakan representasi matriks, perhitungan dapat dilakukan dengan lebih
terstruktur. Penjumlahan matriks adalah operasi penjumlahan dua matriks dengan
menjumlahkan komponen-komponennya yang seletak. Dua matriks dapat
dijumlahkan jika jumlah baris dan kolomnya sama. Berikut contoh dari
pngurangan matriks yaitu:
BAB III
TUGAS DAN IMPLEMENTASI

3.1 Tugas Praktikum

3.1.1 Soal
1. Dengan menggunakan tabel yang bisa diinpuutkan isinya, buat program untuk
menjumlahkan 2 buah matriks.

1.1.2 Jawaban
1. Source code
import sys
from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import QTableWidgetItem

class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi("form01.ui", self)
self.show()
self.button.clicked.connect(self.hitung)
self.reset.clicked.connect(self.clearmat)

def hitung(self):
for i in range(3):
for j in range(3):
matriks1 = int(self.matrix1_table.item(i, j).text())
matriks2 = int(self.matrix2_table.item(i, j).text())
hasil = matriks1 + matriks2
self.hasil_matriks.setItem(i, j, QTableWidgetItem(str(hasil)))
def clearmat(self):
self.matrix1_table.clear()
self.matrix2_table.clear()
self.hasil_matriks.clear()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
ex = Ui()
sys.exit(app.exec())

 Penjelasan
1. Baris yang pertama adalah mengimport QtWidgets dan uic pada PyQt5.
2. Code uic.loadUi('form01.ui', self) digunakan untuk memangil file GUI
yang telah dibuat.
3. Code self.button.clicked.connect(self.hitung) digunakan untuk
menjalankan event yang mana apabila button diclick maka fungsi hitung
akan diproses.
4. Code self.reset.clicked.connect(self.clearmat) digunakan untuk
menjalankan event yang mana apabila button diclick maka fungsi clearmat
akan diproses.
5. Fungsi hitung digunakan untuk menampilkan hasil penjumalahna antar
dua matrik yang nilai per/kolom dan barisnya merupakan sebuah inputan.
6. Code matriks1 = int(self.matrix1_table.item(i, j).text()) digunakan untuk
menginputkan nilai pada matriks 1.
7. Code matriks2 = int(self.matrix2_table.item(i, j).text()) digunakan untuk
menginputkan nilai pada matriks 2.
8. Code self.hasil_matriks.setItem(i, j, QTableWidgetItem(str(hasil)))
digunakan untuk menambahkan hasil penjumlahan kedua matrik kedalam
matrik hasil.
9. Fungsi clearmat digunakan untuk menghapus inputan dan hasil perkalian.
10. Code baris ke 23-26 digunakan untuk menjalankan program aplikasi
tersebut.
 Hasil Running
BAB IV
PENTUP

4.1 Kesimpulan
Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:
1. QT Designer adalah tools untuk melakukan desain tampilan dan membangun
tampilan grafis untuk user (GUI) dengan menggunakan komponen QT Widget.
Dengan tools ini kita bisa merancang dan melakukan perubahan window atau
dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita buat bisa
langsung kita lihat hasilnya tanpa harus melakukan run program.
2. Menggunakan QT Designer ini mempermudah dalam membuat sebuah aplikasi
window karena semua properties di widget (misalnya ukuran, warna, lokasi,
dsb) dengan menggunakan QT Designer bisa diubah secara dinamis.
3. Dalam Qt Designer terdapat beberapa widget lanjut yang dapat digunakan
dalam pembuatan sebuah program yang tampilanya berupa table, sebagai
contoh program perhitungan beberapa operasi pada dua buah matriks.

4.2 Saran
Dengan adanya technical report ini yang berisi tentang Widget Laanjut (Table)
dengan menggunakan QT Designer ini membuat praktikan lebih mudah dalam
memmahami pembuatan aplikasi dengan tampilan table, sebagai contoh dalam
membuat aplikasi perhitungan operasi antar dua buah matriks.
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 7

“DATABASE”

Disusun Oleh :
TGL PRAKTIKUM : 29 Oktober 2019
NAMA : Dwi Nita Meliana Y.P
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban

Disetujui : ....../……./………../Bangkalan

(Sya’ban )
160411100119

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

Qt adalah UI framework dan platform yang ditulis dengan bahasa Python ,


Qt sebelumnya dimiliki oleh perusahaan yang bernama Trolltech dan sekarang
perusahaan tersebut telah dibeli oleh Nokia. Qt framework tersedia secara gratis
dan multiplatform (ada versi untuk linux, windows dan Mac).
QT Designer memudahkan programmer untuk membangun GUI interface
sehingga waktu programming menjadi lebih singkat dan dapat digunakan untuk
berkonsentrasi pada konten. QtDesigner juga dapat diartikan sebagai tools yang
dapat digunakan untuk mendesain dan mem-build Graphical User Interfaces
menggunakan QtComponents. QtDesigner dapat digunakan tidak hanya untuk
membuat aplikasi desktop, tapi juga aplikasi mobile.
Database adalah kumpulan berbagai data dan informasi yang tersimpan
dan tersusun di dalam komputer secara sistematik yang dapat diperiksa, diolah
atau dimanipulasi dengan menggunakan program komputer untuk mendapatkan
informasi dari database tersebut. Database di kelola oleh perangkat lunak yang
disebut sebagai Database Management System (DBMS). DBMS ini ada beberapa
macam sesuai dengan engine yang digunakan, misalnya ada database Oracel, SQL
Server, MSAccess, MySQL, SQLLite, Pervasive, dan sebagainya. Didalam
sebuah DBMS bisa terdiri dari beberapa database (atau sering juga disebut sebagai
catalog). Misalnya dalam dbms mysql bisa saja menyimpan database siakad,
database perpustakaan, dan sebagainya.
Setiap praktikan diharuskan untuk bisa membuat database menggunakan
Qt Designer dalam pembuatan suatu aplikasi untuk memenuhi syarat perkuliahan
Pemrograman Desktop ini, sehingga dengan adanya pembuatan modul ini yang
disertai materi dan contoh serta soal-soal yang diberikan dapat melatih dan
menambah wawasan bagi praktikan dalam membuat database menggunakan tools
SQLite.
1.2 Tujuan

Adanya tujuan dalam pembuatan modul ini yaitu:


1. Membantu praktikan memahami pembuatan program untuk melakukan
koneksi ke database sqllite dan membuat table.
2. Mengenalkan kepada praktikan tentang perintah insert data pada database.
3. Mengenalkan kepada praktikan tentang apa itu QSqlTableMode dan
QTableview.
4. Mengenalkan kepada praktikan tentang perintah menambah baris baru
pada table yang telah dibuat.
BAB II
DASAR TEORI
2.1 Database
Aplikasi dapat menyimpan data dalam sebuah database. Database adalah
kumpulan berbagai data dan informasi yang tersimpan dan tersusun di dalam
komputer secara sistematik yang dapat diperiksa, diolah atau dimanipulasi dengan
menggunakan program komputer untuk mendapatkan informasi dari database
tersebut. Database di kelola oleh perangkat lunak yang disebut sebagai Database
Management System (DBMS). DBMS ini ada beberapa macam sesuai dengan
engine yang digunakan, misalnya ada database Oracel, SQL Server, MSAccess,
MySQL, SQLLite, Pervasive, dan sebagainya. Didalam sebuah DBMS bisa terdiri
dari beberapa database (atau sering juga disebut sebagai catalog). Misalnya dalam
dbms mysql bisa saja menyimpan database siakad, database perpustakaan, dan
sebagainya. Data dalam database tersusun dalam beberapa object yang berbeda-
beda sesuai DBMS yang digunakan. Namun, secara umum object yang pasti ada
dalam database adalah tabel. Object yang lain bisa view, stored procedure, user,
dan sebagainya. Tabel digunakan untuk menyimpan data dalam bentuk baris dan
kolom. Dalam 1 database bisa terdiri lebih dari 1 tabel. Secara logical, susunan
contoh data tabel tampak pada gambar 1.
2.2 SQLLite tools
SQLLite adalah database ringan yang sudah ada di pyqt, sehingga kita bisa
menggunakan secara langsung. SQLLite adalah database yang portabel, dalam arti
file databasenya kecil sehingga mudah untuk di pindahkan dari 1 lokasi mesin ke
mesin yang lain. Tools berikut bisa digunakan untuk melihat / mengelola database
sql lite anda.

2.3 SQL
Structured Query Language adalah bahasa standar yang digunakan untuk
mengelola sebuah database. Ada beberapa jenis perintah,  Perintah untuk
perubahan struktur database, disebut sebagai DDL (Data definition language),
misalnya perintah untuk membuat tabel, menghapus tabel, merubah tabel 
Perintah untuk memanipulasi data yang ada di dalam sebuah tabel. Kelompok
perintah ini disebut sebagai DML (data modification language), contohnya insert
baris data ke tabel, update baris data, menampilkan baris data, atau menghapus
data  Perintah yang berkaitan dengan hak akses.  Perintah untuk mengantur
perintah SQL yang harus berjalan secara berurutan. Kelompok ini disebut sebagai
TCL (Transaction Control Language)
BAB III
TUGAS DAN IMPLEMENTASI

3.1 Tugas Praktikum

3.1.1 Soal
1. Coba program 1, 2, 3 dan 4. Di dalam 4 potongan program diatas tentu saja
memerlukan file tampilan (UI) yang harus anda siapkan dengan nama object
sesuai dengan yang ada di dalam program.
2. Buat tabel baru dengan nama tabel bukualamat, dengan kolom nama, alamat,
telepon. Tampilkan isi tabel, dan lengkapi dengan tombol untuk
menambahkan data dan menghapus data

3.1.2 Jawaban
1. Source code (Program 1)
from PyQt5 import QtWidgets, uic, QtSql
import sys
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('form04.ui', self)
self.show()
self.openDB()
self.btncreate.clicked.connect(self.createTabel)
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('sports.db')
if not db.open():
self.label.setText("connect db error")
self.btncreate.setEnabled(False)
return False
else:
self.label.setText("connect db OK")
self.btncreate.setEnabled(True)
return True
def createTabel(self):
query = QtSql.QSqlQuery()
query.exec_("create table sportsmen("
"id integer primary key AUTOINCREMENT, "
"firstname varchar(20), lastname varchar(20))")

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui yang
menggunakan tampilan MainWindow.
3. Code uic.loadUi('form04.ui', self) untuk menghubungkan file python
dengan ui.
4. Code self.openDB() untuk menghubungkan dengan database.
5. Code self.btncreate.clicked.connect(self.createTabel) digunakan untuk
menjalankan event yang mana apabila btncreate diclick maka fungsi
createTable akan diproses.
6. Fungsi openDB digunakan untuk menghubungkan dengan database.
7. Fungsi createTable digunakan untuk membuat table yang nantinya juga
akan ditampilkan pada SQLLite tools yang digunakan.
 Hasil Running

(Program 2)
from PyQt5 import QtWidgets, uic, QtSql
import sys
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
uic.loadUi('form4.ui', self)
self.show()
self.openDB()
self.btncreate.clicked.connect(self.createTabel)
self.btninsert.clicked.connect(self.insertrow)
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('sports.db')
if not db.open():
self.label.setText("connect db error")
self.btncreate.setEnabled(False)
return False
else:
self.label.setText("connect db OK")
self.btncreate.setEnabled(True)
return True
def createTabel(self):
query = QtSql.QSqlQuery()
query.exec_("create table sportsmen("
"id integer primary key AUTOINCREMENT, "
"firstname varchar(20), lastname varchar(20))")
self.label.setText(self.label.text() + ". Create tabel ok")
return True
def insertrow(self):
query = QtSql.QSqlQuery()
query.exec_("insert into sportsmen values "
"(null, 'Roger', 'Federer')")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui yang
menggunakan tampilan MainWindow.
3. Code uic.loadUi('form05.ui', self) untuk menghubungkan file python
dengan ui.
4. Code self.openDB() untuk menghubungkan dengan database.
5. Code self.btncreate.clicked.connect(self.createTabel) digunakan untuk
menjalankan event yang mana apabila btncreate diclick maka fungsi
createTable akan diproses.
6. Code self.btninsert.clicked.connect(self.insertrow) digunakan untuk
menjalankan event yang mana apabila btncreate diclick maka fungsi
createTable akan diproses.
7. Fungsi openDB digunakan untuk menghubungkan dengan database.
8. Fungsi createTable digunakan untuk membuat table yang nantinya juga
akan ditampilkan pada SQLLite tools yang digunakan.
9. Fungsi insertrow digunakan menambahkan data pada table.
 Hasil Running

(Program 3)
from PyQt5 import QtWidgets, uic, QtSql, QtCore
import sys
from PyQt5.QtSql import QSqlTableModel
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
self.model = QSqlTableModel()
uic.loadUi('form05.ui', self)
self.show()
self.openDB()
self.model = QtSql.QSqlTableModel()
self.displaytable()
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('sports.db')
if not db.open():
self.label.setText("connect db error")
return False
else:
self.label.setText("connect db OK")
return True
def displaytable(self):
self.model.setTable('sportsmen')
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Firstname")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Lastname")
self.tableView.setModel(self.model)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui yang
menggunakan tampilan MainWindow.
3. Code self.model = QSqlTableModel() sebagai inisialisasi untuk mengantur
tampilan pada table database.
4. Code uic.loadUi('form06.ui', self) untuk menghubungkan file python
dengan ui.
5. Code self.openDB() untuk menghubungkan dengan database.
6. Fungsi openDB digunakan untuk menghubungkan dengan database.
7. Fungsi displayTable digunakan untuk menampilkan table database.
 Hasil Running

(Program 4)
from PyQt5 import QtWidgets, uic, QtSql, QtCore
import sys
from PyQt5.QtSql import QSqlTableModel
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
self.model = QSqlTableModel()
uic.loadUi('form06.ui', self)
self.show()
self.openDB()
self.model = QtSql.QSqlTableModel()
self.displaytable()
self.addrow.clicked.connect(self.addrowempty)
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('sports.db')
if not db.open():
self.label.setText("connect db error")
return False
else:
self.label.setText("connect db OK")
return True
def displaytable(self):
self.model.setTable('sportsmen')
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Firstname")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Lastname")
self.tableView.setModel(self.model)
def addrowempty(self):
self.model.rowCount()
ret = self.model.insertRows(self.model.rowCount(), 1)

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()

 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui yang
menggunakan tampilan MainWindow.
3. Code self.model = QSqlTableModel() sebagai inisialisasi untuk mengantur
tampilan pada table database.
4. Code uic.loadUi('form06.ui', self) untuk menghubungkan file python
dengan ui.
5. Code self.addrow.clicked.connect(self.addrowempty) digunakan untuk
menjalankan event yang mana apabila addrow diclick maka fungsi
addrowempty akan diproses.
6. Code self.openDB() untuk menghubungkan dengan database.
7. Fungsi openDB digunakan untuk menghubungkan dengan database.
8. Fungsi displayTable digunakan untuk menampilkan table database.
9. Fungsi addrowempy digunakan untuk menambah table pada database.

 Hasil Running

2. Source Code
from PyQt5 import QtWidgets,uic,QtSql,QtCore
import sys
from PyQt5.QtSql import QSqlTableModel

class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
self.model = QSqlTableModel()
uic.loadUi('n2.ui', self)
self.show()
self.openDB()
self.model = QtSql.QSqlTableModel()
self.displaytable()
self.btncreatetable.clicked.connect(self.createdtable)
self.btninput.clicked.connect(self.insertdata)
self.btndelete.clicked.connect(self.removedata)
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('db_tugas2.db')
if not db.open():
self.lblstats.setText('Connect DB Error')
return False
else :
self.lblstats.setText('Connect DB Success')
return True
def createdtable(self):
query = QtSql.QSqlQuery()
query.exec_('create table if not exists bukualamat(nama varchar(35),
alamat varchar(35), telepon integer (15))')
self.lblstats.setText(str(self.lblstats.text())+'. Table Created Success')
return True
def insertdata(self):
if len(self.edname.text()) == 0 or len(self.edalamat.text()) == 0 or
len(self.edtelepon.text()) == 0:
self.lblstats.setText('Harap Field Diisi , lalu inputkan kembali')
else :

nama = str(self.edname.text())
alamat = str(self.edalamat.text())
telepon = str(self.edtelepon.text())
query = QtSql.QSqlQuery()
query.exec_("insert into bukualamat values
('"+nama+"','"+alamat+"','"+telepon+"')")
self.lblstats.setText('Data Berhasil Ditambahkan ke Databases')
self.displaytable()
def displaytable(self):
self.model.setTable('bukualamat')
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, QtCore.Qt.Horizontal, 'Nama')
self.model.setHeaderData(1, QtCore.Qt.Horizontal, 'Alamat')
self.model.setHeaderData(2, QtCore.Qt.Horizontal, 'Telepon')
self.tableView.setModel(self.model)
def removedata(self):
self.model.removeRow(self.tableView.currentIndex().row())
self.displaytable()
def cleardata(self):
self.edname.clear()
self.edalamat.clear()
self.edtelepon.clear()

if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
ex = Ui()
sys.exit(app.exec_())

 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui yang
menggunakan tampilan MainWindow.
3. Code self.model = QSqlTableModel() sebagai inisialisasi untuk mengantur
tampilan pada table database.
4. Code uic.loadUi('form06.ui', self) untuk menghubungkan file python
dengan ui.
5. Code self.displaytable() untuk menampilkan table database.
6. Code self.btncreatetable.clicked.connect(self.createdtable) digunakan
untuk menjalankan event yang mana apabila btncreate diclick maka fungsi
createtable akan diproses.
7. Code self.btninput.clicked.connect(self.insertdata) digunakan untuk
menjalankan event yang mana apabila btninput diclick maka fungsi
insertdata akan diproses.
8. Code self.btndelete.clicked.connect(self.removedata) digunakan untuk
menjalankan event yang mana apabila btndelete diclick maka fungsi
temovedata akan diproses.
9. Code self.btnclear.clicked.connect(self.cleardata) digunakan untuk
menjalankan event yang mana apabila btnclear diclick maka fungsi
cleardata akan diproses.
10. Code self.openDB() untuk menghubungkan dengan database.
11. Fungsi openDB digunakan untuk menghubungkan dengan database.
12. Fungsi createdtable digunakan untuk membuat table database.
13. Fungsi insertdata digunakan untuk menambah data pada table database.
14. Fungsi displaytable digunakan untuk menampilkan table database.
15. Fungsi removedata digunakan untuk menghapus sebuah table.
16. Fungsi cleardata digunakan untuk menghapus kontak inputan Nama,
Alamat, dan Telepon.
 Hasil Running
BAB IV
PENTUP

4.1 Kesimpulan
Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:
1. QT Designer adalah tools untuk melakukan desain tampilan dan membangun
tampilan grafis untuk user (GUI) dengan menggunakan komponen QT Widget.
Dengan tools ini kita bisa merancang dan melakukan perubahan window atau
dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita buat bisa
langsung kita lihat hasilnya tanpa harus melakukan run program.
2. Database adalah kumpulan berbagai data dan informasi yang tersimpan dan
tersusun di dalam komputer secara sistematik yang dapat diperiksa, diolah atau
dimanipulasi dengan menggunakan program komputer untuk mendapatkan
informasi dari database tersebut.

4.2 Saran
Dengan adanya technical report ini yang berisi tentang Database dengan
menggunakan QT Designer dan SQLLite tools ini membuat praktikan dapat
memahami pembuatan program untuk melakukan koneksi ke database sqllite dan
membuat table, perintah insert data, menambah dan menghapus baris pada table
database.
TECHNICAL REPORT
PRAKTIKUM PEMROGRAMAN DESKTOP
MODUL 8

“DATABASE 2: Database Search Data”

Disusun Oleh :
TGL PRAKTIKUM : 5 November 2019
NAMA : Dwi Nita Meliana YUDA PUTRI
NRP : 180411100118
KELAS : 3D
DOSEN PENGAMPU : Moch. Kautsar
. Sophan, S.Kom., M.MT.
ASISTEN : Sya’ban

Disetujui : ....../……./………../Bangkalan

(Sya’ban )
160411100119

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
2019
BAB I
PENDAHULUAN

1.1 Latar Belakang

Qt adalah UI framework dan platform yang ditulis dengan bahasa Python ,


Qt sebelumnya dimiliki oleh perusahaan yang bernama Trolltech dan sekarang
perusahaan tersebut telah dibeli oleh Nokia. Qt framework tersedia secara gratis
dan multiplatform (ada versi untuk linux, windows dan Mac).
QT Designer memudahkan programmer untuk membangun GUI interface
sehingga waktu programming menjadi lebih singkat dan dapat digunakan untuk
berkonsentrasi pada konten. QtDesigner juga dapat diartikan sebagai tools yang
dapat digunakan untuk mendesain dan mem-build Graphical User Interfaces
menggunakan QtComponents. QtDesigner dapat digunakan tidak hanya untuk
membuat aplikasi desktop, tapi juga aplikasi mobile.
Database adalah kumpulan berbagai data dan informasi yang tersimpan dan
tersusun di dalam komputer secara sistematik yang dapat diperiksa, diolah atau
dimanipulasi dengan menggunakan program komputer untuk mendapatkan
informasi dari database tersebut. Database di kelola oleh perangkat lunak yang
disebut sebagai Database Management System (DBMS). DBMS ini ada beberapa
macam sesuai dengan engine yang digunakan, misalnya ada database Oracel, SQL
Server, MSAccess, MySQL, SQLLite, Pervasive, dan sebagainya. Didalam sebuah
DBMS bisa terdiri dari beberapa database (atau sering juga disebut sebagai
catalog).
Salah satu fitur yang sering digunakan dalam sebuah sistem database adalah
pencarian data. Untuk melakukan pencarian data dalam sebuah tabel, kita
menggunakan peringah SQL Select dengan where.
Setiap praktikan diharuskan untuk bisa membuat aplikasi Qt Designer yang
bisa terhubung pada sebuah database untuk memenuhi syarat perkuliahan
Pemrograman Desktop, sehingga dengan adanya pembuatan modul ini yang
disertai materi dan contoh serta soal-soal yang diberikan dapat melatih dan
menambah wawasan bagi praktikan dalam membuat database menggunakan tools
SQLite.
1.2 Tujuan

Adanya tujuan dalam pembuatan modul ini yaitu:


1. Membantu praktikan memahami pembuatan program aplikasi untuk yang
memiliki fitur search dari sebuah data yang terkumpul dalam suatu database
yang telah dibuat.
2. Mengenalkan kepada praktikan tentang perintah “select” pada kumpulan
data dari database.
BAB II
DASAR TEORI
2.1 Database
Aplikasi dapat menyimpan data dalam sebuah database. Database adalah
kumpulan berbagai data dan informasi yang tersimpan dan tersusun di dalam
komputer secara sistematik yang dapat diperiksa, diolah atau dimanipulasi dengan
menggunakan program komputer untuk mendapatkan informasi dari database
tersebut. Database di kelola oleh perangkat lunak yang disebut sebagai Database
Management System (DBMS). DBMS ini ada beberapa macam sesuai dengan
engine yang digunakan, misalnya ada database Oracel, SQL Server, MSAccess,
MySQL, SQLLite, Pervasive, dan sebagainya. Didalam sebuah DBMS bisa terdiri
dari beberapa database (atau sering juga disebut sebagai catalog). Misalnya dalam
dbms mysql bisa saja menyimpan database siakad, database perpustakaan, dan
sebagainya. Data dalam database tersusun dalam beberapa object yang berbeda-
beda sesuai DBMS yang digunakan. Namun, secara umum object yang pasti ada
dalam database adalah tabel. Object yang lain bisa view, stored procedure, user, dan
sebagainya. Tabel digunakan untuk menyimpan data dalam bentuk baris dan kolom.
Dalam 1 database bisa terdiri lebih dari 1 tabel. Secara logical, susunan contoh data
tabel tampak pada gambar 1.
2.2 SQLLite tools
SQLLite adalah database ringan yang sudah ada di pyqt, sehingga kita bisa
menggunakan secara langsung. SQLLite adalah database yang portabel, dalam arti
file databasenya kecil sehingga mudah untuk di pindahkan dari 1 lokasi mesin ke
mesin yang lain. Tools berikut bisa digunakan untuk melihat / mengelola database
sql lite anda.

2.3 SQL
Structured Query Language adalah bahasa standar yang digunakan untuk
mengelola sebuah database. Ada beberapa jenis perintah,  Perintah untuk
perubahan struktur database, disebut sebagai DDL (Data definition language),
misalnya perintah untuk membuat tabel, menghapus tabel, merubah tabel  Perintah
untuk memanipulasi data yang ada di dalam sebuah tabel. Kelompok perintah ini
disebut sebagai DML (data modification language), contohnya insert baris data ke
tabel, update baris data, menampilkan baris data, atau menghapus data  Perintah
yang berkaitan dengan hak akses.  Perintah untuk mengantur perintah SQL yang
harus berjalan secara berurutan. Kelompok ini disebut sebagai TCL (Transaction
Control Language)

2.4 SQL Where


Salah satu fitur yang sering digunakan dalam sebuah sistem database adalah
pencarian data. Untuk melakukan pencarian data dalam sebuah tabel, kita
menggunakan peringah SQL Select dengan where. Perintah where digunakan untuk
memilih records atau data yang akan ditampilkan, dimana data yang ditampilkan
adalah data yang memenuhi kondisi tertentu.
 Syntax
Penulisan query where mengikuti aturan dapat dilihat dibawah ini:
SELECT column1, column2,
FROM table_name
WHERE condition
BAB III
TUGAS DAN IMPLEMENTASI

3.1 Tugas Praktikum

3.1.1 Soal
1. Buat program sesuai dengan listing diatas.
2. Lakukan pencarian berdasarkan nama dan bank.

3.1.2 Jawaban
1. Source Code
from PyQt5 import QtWidgets, uic, QtSql, QtCore
import sys
from PyQt5.QtSql import QSqlTableModel
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
self.model = QtSql.QSqlTableModel()
uic.loadUi('form.ui', self)
self.show()
self.openDB()
self.displaytable("")
self.addrow.clicked.connect(self.addrowempty)
self.pushButtonCari.clicked.connect(self.cari)
self.pushButtonHapus.clicked.connect(self.remove)
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('Praktikum.db')
if not db.open():
self.label.setText("connect db error")
return False
else:
self.label.setText("connect db OK")
return True
def displaytable(self, p_filter):
if p_filter is "" :
self.model.setTable('prak')
print("no filter")
else:
query = QtSql.QSqlQuery("select * from prak " "where firstname
like '%"+ p_filter + "%'")
self.model.setTable("")
self.model.setQuery(query)
print("select * from prak " "where firstname like '%"+ p_filter +
"%'")
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "Firstname")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "Lastname")
self.tableView.setModel(self.model)
def addrowempty(self):
self.model.rowCount()
ret = self.model.insertRows(self.model.rowCount(), 1)
def remove(self):
self.model.removeRow(self.tableView.currentIndex().row())
self.displaytable("")
def cari(self):
cari = self.lineEditCari.text()
self.displaytable(cari)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()
 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code import sys digunakan untuk mengimpor modul sys yang digunakan
untuk mengakses konfigurasi pada saat runtime.
3. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui yang
menggunakan tampilan MainWindow.
4. Code uic.loadUi('form.ui', self) untuk menghubungkan file py dengan ui.
5. Code self.show() untuk menampilkan aplikasi desktop yang dibuat.
6. Code self.openDB() untuk menghubungkan dengan database.
7. Code self.displaytable("") untuk menampilkan isi table.
8. Code self.addrow.clicked.connect(self.addrowempty) digunakan untuk
menjalankan event yang mana apabila addrow diclick maka fungsi
addemptyrow akan diproses.
9. Code self.pushButtonCari.clicked.connect(self.cari) digunakan untuk
menjalankan event yang mana apabila pushButtonCari diclick maka fungsi
cari akan diproses.
10. Code self.pushButtonHapus.clicked.connect(self.remove) digunakan untuk
menjalankan event yang mana apabila pushButtonHapus diclick maka
fungsi remove akan diproses.
11. Function openDB digunakan untuk menghubungkan dengan database yang
didalamnya terdapat code untuk menghubungkan dengan tools database
yang digunakan yaitu SQLLite dan nama database yang ingin dikoneksikan.
12. Code db = QtSql.QSqlDatabase.addDatabase (‘QSQLITE’) digunakan
untuk menyambungkan dengan database yang menggunakan SQLLite tools.
13. Code db.setDatabaseName() untuk memberi nama database yang akan
dikoneksiakan dengan file python, pada listing program diatas file databse
diberi nama ‘prak.db’.
14. Code dibawa ini digunakan untuk mengetahui pengkoneksian berhasil atau
tidak, apabila database tidak dapat diakses maka akan menampilkan text
“connect db error” yang bernilai false karena belum terkoneksi dengan
database sedangkan apabila database berhasil disambungkan text yang
dotampilkan adalah “connect db OK” maka bernilai true karena database
sudah terkoneksi. Dari penjelasan ini diimplementasikan pada code berikut:

if not db.open():
self.label.setText("connect db error")
return False
else:
self.label.setText("connect db OK")
return True
15. Function displaytable digunakan untuk menampilkan table sesuai peritah
yang dijalankan dan letak label kolom yang telah diatur.
16. Function addemptyrow digunakan untuk menambahkan satu baris kosong
pada table yang ditampilkan.
17. Function remove digunakan untuk menghapus table yang berisi hasil
pencarian.
18. Fuction cari berfungsi untuk menjalankan fitur pencarian data pada table
database yang telah terhubung.

 Hasil Running
2. Source Code
from PyQt5 import QtWidgets, uic, QtSql, QtCore
import sys
from PyQt5.QtSql import QSqlTableModel
class Ui(QtWidgets.QMainWindow):
def __init__(self):
super(Ui, self).__init__()
self.model = QtSql.QSqlTableModel()
uic.loadUi('form08.ui', self)
self.show()
self.openDB()
self.displaytable("","")
self.addrow.clicked.connect(self.addrowempty)
self.addrow.setStyleSheet('border-radius:10px;border:1px solid blue;')
self.pushButtonCari.clicked.connect(self.cari)
self.pushButtonHapus.clicked.connect(self.remove)
self.pushButtonHapus.setStyleSheet('border-radius:10px;border:1px
solid blue;')
self.label.setStyleSheet('background-color:blue; color:white; border-
radius:10px;')
self.lineEditCari.setStyleSheet('border:1px solid blue;border-
radius:10px;')
self.lineEditCari2.setStyleSheet('border:1px solid blue;border-
radius:10px;')
def openDB(self):
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('praktikum8.db')
if not db.open():
self.label.setText("connect db error")
return False
else:
self.label.setText("connect db OK")
return True
def displaytable(self, p_filter, q_filter):
if p_filter is "" and q_filter is "" :
self.model.setTable('prak8')
print("no filter")
else:
query = QtSql.QSqlQuery("select * from prak8 " "where nama like
'%"+ p_filter + "%' and bank like '%"+ q_filter + "%' ")
self.model.setTable("")
self.model.setQuery(query)
print("select * from prak8 " "where nama like '%"+ p_filter + "%'
and bank like '%"+ q_filter + "%'")

self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
self.model.setHeaderData(0, QtCore.Qt.Horizontal, "ID")
self.model.setHeaderData(1, QtCore.Qt.Horizontal, "NAMA")
self.model.setHeaderData(2, QtCore.Qt.Horizontal, "NO. ABSEN")
self.model.setHeaderData(3, QtCore.Qt.Horizontal, "STATUS")
self.model.setHeaderData(4, QtCore.Qt.Horizontal, "NAMA
BANK")
self.tableView.setModel(self.model)
self.model.select()
self.tableView.setModel(self.model)
def addrowempty(self):
self.model.rowCount()
ret = self.model.insertRows(self.model.rowCount(), 1)
def remove(self):
self.model.removeRow(self.tableView.currentIndex().row())
self.displaytable("")
def cari(self):
cari = self.lineEditCari.text()
cari2 = self.lineEditCari2.text()
self.displaytable(cari,cari2)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Ui()
app.exec_()
 Penjelasan
1. Code from PyQt5 import QtWidgets, uic, QtSql untuk mengimport
QtWidgets, uic, dan QtSql pada PyQt5.
2. Code import sys digunakan untuk mengimpor modul sys yang
digunakan untuk mengakses konfigurasi pada saat runtime.
3. Code class Ui(QtWidgets.QMainWindow): untuk membuat class Ui
yang menggunakan tampilan MainWindow.
4. Code uic.loadUi('form.ui', self) untuk menghubungkan file py dengan
ui.
5. Code self.show() untuk menampilkan aplikasi desktop yang dibuat.
6. Code self.openDB() untuk menghubungkan dengan database.
7. Code self.displaytable("") untuk menampilkan isi table.
8. Code self.addrow.clicked.connect(self.addrowempty) digunakan untuk
menjalankan event yang mana apabila addrow diclick maka fungsi
addemptyrow akan diproses.
9. Code self.pushButtonCari.clicked.connect(self.cari) digunakan untuk
menjalankan event yang mana apabila pushButtonCari diclick maka
fungsi cari akan diproses.
10. Code self.pushButtonHapus.clicked.connect(self.remove) digunakan
untuk menjalankan event yang mana apabila pushButtonHapus diclick
maka fungsi remove akan diproses.
11. Code .setStyleSheet digunakan untuk memperindah tampilan desktop
seperti menambah warna mengatur border button dan line edit.
12. Function openDB digunakan untuk menghubungkan dengan database
yang didalamnya terdapat code untuk menghubungkan dengan tools
database yang digunakan yaitu SQLLite dan nama database yang ingin
dikoneksikan.
13. Code db = QtSql.QSqlDatabase.addDatabase (‘QSQLITE’) digunakan
untuk menyambungkan dengan database yang menggunakan SQLLite
tools.
14. Code db.setDatabaseName() untuk memberi nama database yang akan
dikoneksiakan dengan file python, pada listing program diatas file
databse diberi nama ‘prak8.db’.
15. Code dibawa ini digunakan untuk mengetahui pengkoneksian berhasil
atau tidak, apabila database tidak dapat diakses maka akan menampilkan
text “connect db error” yang bernilai false karena belum terkoneksi
dengan database sedangkan apabila database berhasil disambungkan
text yang dotampilkan adalah “connect db OK” maka bernilai true
karena database sudah terkoneksi. Dari penjelasan ini
diimplementasikan pada code berikut:

if not db.open():
self.label.setText("connect db error")
return False
else:
self.label.setText("connect db OK")
return True
16. Function displaytable digunakan untuk menampilkan table sesuai
peritah yang dijalankan dan letak label kolom yang telah diatur.
17. Code dibawah ini digunakan untuk memfilter nama dan nama bank yang
sama.

if p_filter is "" :
self.model.setTable('prak')
print("no filter")
else:
query = QtSql.QSqlQuery("select * from prak " "where
firstname like '%"+ p_filter + "%'")
self.model.setTable("")
self.model.setQuery(query)
print("select * from prak " "where firstname like '%"+ p_filter +
"%'")
18. Function addemptyrow digunakan untuk menambahkan satu baris
kosong pada table yang ditampilkan.
19. Function remove digunakan untuk menghapus table yang berisi hasil
pencarian.
20. Fuction cari berfungsi untuk menjalankan fitur pencarian data pada table
database yang telah terhubung.

 Hasil Running
BAB IV
PENTUP

4.1 Kesimpulan
Dari penjelasan diatas dapat ditarik beberapa kesimpulan, yaitu:
1. QT Designer adalah tools untuk melakukan desain tampilan dan membangun
tampilan grafis untuk user (GUI) dengan menggunakan komponen QT Widget.
Dengan tools ini kita bisa merancang dan melakukan perubahan window atau
dialogs yang kita buat, dan hasil rancangan atau perubahan yang kita buat bisa
langsung kita lihat hasilnya tanpa harus melakukan run program.
2. Database adalah kumpulan berbagai data dan informasi yang tersimpan dan
tersusun di dalam komputer secara sistematik yang dapat diperiksa, diolah atau
dimanipulasi dengan menggunakan program komputer untuk mendapatkan
informasi dari database tersebut.
3. Salah satu fitur yang sering digunakan dalam sebuah sistem database adalah
pencarian data. Untuk melakukan pencarian data dalam sebuah tabel, kita
menggunakan peringah SQL Select dengan where. Perintah where digunakan
untuk memilih records atau data yang akan ditampilkan, dimana data yang
ditampilkan adalah data yang memenuhi kondisi tertentu.

4.2 Saran
Dengan adanya technical report ini yang berisi tentang pembuatan aplikasi
desktop dengan konsep Database Search Data yang menggunakan QT Designer dan
SQLLite tools ini diharapkan agar dapat membuat praktikan memahami memahami
bagaimana cara pembuatan program aplikasi yang memiliki fitur search dari sebuah
data yang terkumpul dalam suatu database.

You might also like