Anda di halaman 1dari 26

MODUL II

PYTHON GUI DENGAN PYSIDE2

2.1 Landasan Teori


2.1.1 Graphical User Interface (GUI)
Graphical User Interface (GUI) merupakan sebuah antar muka
pengguna yang menggunakan metode interaksi pada piranti elektronik secara
grafis (bukan perintah teks) antara pengguna dan komputer. Tujuan penggunaan
GUI adalah membuat program terlihat lebih simpel dan praktis bagi para
pengguna. GUI dapat menampilkan seluruh menu, ikon, dan alat penunjuk
lainnya. Semua elemen ini berfungsi untuk menggantikan pengetikan perintah di
shell tertentu. Pembuatan GUI adalah bagaimana menampilkan sebuah antar
muka yang mudah digunakan sekalipun pengguna adalah orang awam yang
tidak memahami kerumitan program di dalamnya. (Kurniastuti, 2017)
2.1.2 PySide2
PySide2 adalah paket yang menyediakan authoritative Python ke pustaka
Qt, yang diimplementasikan dalam C++. Qt adalah kerangka kerja pengembangan
aplikasi lintas stage dan dilengkapi dengan seperangkat besar dan komprehensif
widget yang berisi tombol, pengeditan baris, tabel, tampilan, kalender, dan bahkan
browser web yang mendukung antara lain HTML, CSS, dan JavaScript. Selain
itu, Qt mendukung pembuatan gadget khusus dengan mensubklasifikasikan
gadget yang ada atau dengan memulai dari awal. Qt lebih dari sekadar pustaka
GUI. Itu mengandung semua jenis kelas untuk pengembangan aplikasi, termasuk
penguraian dan penulisan XML, jaringan, interaksi database, dll. Ketergantungan
utama spinetoolbox dan spine-item adalah PySide2, yang memiliki telah
digunakan untuk membangun semua komponen grafis yang terlihat di layar.
Selain itu, telah banyak digunakan dalam mengimplementasikan informasi yang
digunakan dalam aplikasi. (Savolainen, P. T., dkk, 2021)
2.1.3 Matplotlib
Matplotlib merupakan library python yang membantu dalam melakukan
visualisasi information dengan menggunakan grafik atau gambar yang berbentuk
3D maupun 2D. Matplotlib juga merupakan paketan dari library numpy Lalu yang
berikutnya ada pula Seaborn yang merupakan library untuk visualisasi
information yang telah dirancang di atas Matplotlib. Seaborn disebut juga sebagai
wrapper bagi Matplotlib karena Seaborn dirancang agar dapat menggunakan
manfaat dari Matplotlib, tetapi dengan cara yang lebih efisien. Dan hasil
klasifikasi (Classification) yang diperoleh ditampilkan ke bentuk grafik
menggunakan library matplotlib dikelompokkan berdasarkan dataset sepal dan
petal bunga iris yang terdiri dari tiga Lesson, hub menunjukkan dataset yaitu hub
warna biru merupakan Iris-setosa, hub warna merah merupakan Iris-versicolor
dan hub warna coklat merupakan Iris-virginica. (Endang, 2020)
2.2 Hasil Praktikum
2.2.1 Flowchart Program
Flowchart adalah cara untuk menjelaskan tahap-tahap pemecahan suatu
masalah dengan mempresentasikan simbol-simbol tertentu yang mudah dipahami.
Berikut merupakan langkah-langkah dalam menjalankan sebuah program pada
PT. Home Center Indonesia:
Mulai

Input identitas,
username, dan
password

Menu utama

Folder Logout Exit

Akun Data Kalkulator Chart

Input Waktu Input Nama


Daftar
pembelian, Jenis Meubel,
meubel
produk,Harga Penjualan, Tong
produk, Jumlah Sampah, Tempat
produk, Biaya Tidur, Rak
pakage Penyimpanan,
Dan Lain-
Lemari, Kabinet
lain
Dapur
Hapus

Pie Chart

Info Lokasi dan Hitung


No Telepon
Hapus
Harga Awal dan
Harga Akhir

Selesai
Gambar 2.1 Flowchart Program

Analisis:
Langkah pertama masuk pada menu login. Pada menu login terdapat
beberapa komponen, seperti identitas, username, dan password yang nantinya
diisikan sesuai dengan data. Setelah diisi lalu klik tombol login, jika pada saat
pengisian data benar maka akan muncul pesan selamat datang dan dapat berlanjut
ke menu selanjutnya, dan apabila salah dalam mengisi data maka akan muncul
pesan error dan dapat mengulang untuk mengisi data kembali. Pada menu
selanjutnya yaitu menu utama terdapat beberapa menu pilihan, seperti folder,
akun, dan info. Jika klik pada pilihan folder maka akan muncul pilihan logout dan
exit. Jika memilih logout maka akan kembali ke menu login dan jika memilih exit
maka akan langsung keluar dari program. Jika klik pilihan Akun maka akan
muncul pilihan data, kalkulator, dan chart. Apabila memilih data maka akan
masuk ke menu baru yang berisi daftar meubel dan lain-lain. Daftar meubel
berisikan data spesifikasi dan meubel yang dijual, sedangkan dan lain-lain
berisikan stok produk yang tersedia. Dari menu ini kita dapat next untuk menuju
ke menu baru yaitu kalkulator atau bisa back untuk menuju ke manu utama
kembali. Apabila klik pilihan kalkulator, maka akan menuju ke menu baru yang
berisikan waktu pembelian, jenis produk, harga produk, jumlah produk, biaya
package, harga awal dan harga akhir. Pada menu ini dimulai dari mengisi waktu
pembelian kemudian memilih jenis produk yang akan dibeli yang nantinya akan
muncul harga produk tersebut secara otomatis. Lalu mengisikan jumlah produk
yang akan dibeli. Jika belum yakin maka bisa klik tombol hapus dan memulai
kembali mengisi dari awal yaitu waktu pembelian, apabila sudah yakin bisa klik
tombol hitung dan nantinya muncul harga awal dan harga akhir dari produk
tersebut. Dan pada pilihan chart terdapat beberapa kolom untuk mengisikan Nama
Meubel, Penjualan, Tong Sampah, Tempat Tidur, Rak Penyimpanan, Lemari,
Kabinet Dapur. Jika sudah diisi lalu klik tombol Pie Chart jika ingin mengetahui
grafik dan jika ingin menghapus data maka klik hapus untuk mengulang isi data.
Pada pilihan info terdapat lokasi dan nomor telepon PT. Home Center Indonesia.
2.2.2 Program Login
Program login yaitu menu sign dan registrasi untuk masuk ke dalam
sistem bagi admin. Karyawan atau admin yang sudah memiliki akun dapat
langsung memasukkan username dan password. Tujuan dibuat halaman program
login sebagai akses memasukkan data pengguna sebelum masuk ke program menu
selanjutnya. Dalam menu program ini dijelaskan bahwa akan terlihat tampilan
sebuah frame yang memiliki judul program login | PT. Home Center Indonesia
dan tersedia beberapa komponen untuk memasukkan data, seperti identitas,
username, dan password. Selain itu, juga terdapat tombol login untuk
mengkonfirmasi data yang dimasukkan. Dengan memasukkan data yang benar
nanti akan berlanjut ke halaman program selanjutnya.
a. Hasil Running Program Login

Gambar 2.2 Running Program Login

Analisis:
Gambar tersebut merupakan tampilan dari program login PT. Home Center
Indonesia. Cara kerja dari program login ini dengan memasukkan data admin atau
karyawan. Pertama, masukkan identitas, username, dan password. Seletah semua
diisi, kemudian klik tombol login untuk memproses data yang dimasukkan. Jika
data yang dimasukkan sesuai maka akan muncul tampilan sambutan selamat
datang di PT. Home Center Indonesia dan jika salah memasukkan data maka akan
muncul tampilan password salah, silahkan coba lagi.
b. Script Program Login
import sys
from PySide2.QtCore import*
from PySide2.QtGui import*
from PySide2.QtWidgets import*

class Login(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('Login | PT. Home Center Indonesia')
frame=self.frameGeometry()
center=QDesktopWidget().availableGeometry().center()
frame.moveCenter(center)
icon=QIcon('login.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.user()

#Membuat Copyright Label


self.name=QLabel("<i><font color=Black>Informa</font></i>",self)
self.name.move(180,50)
self.name.setFont(QFont('Calibri', 20))
self.name_down=QLabel("<i><font color=White>@Informa
2022</font></i>",self)
self.name_down.move(320,550)
self.name_down.setFont(QFont('Calibri', 12))

#Membuat Input Program


self.identitas=QLineEdit(self)
self.identitas.setPlaceholderText('Identitas')
self.identitas.setStyleSheet('background:White')
self.identitas.setFont(QFont('Calibri', 14))
self.identitas.setGeometry(120,250,200,30)
self.username=QLineEdit(self)
self.username.setPlaceholderText('Username')
self.username.setStyleSheet('background:White')
self.username.setFont(QFont('Calibri', 14))
self.username.setGeometry(120,290,200,30)
self.password=QLineEdit(self)
self.password.setPlaceholderText('Password')
self.password.setEchoMode(QLineEdit.Password)
self.password.setStyleSheet('background:White')
self.password.setFont(QFont('Calibri', 14))
self.password.setGeometry(120,330,200,30)
self.button =QPushButton('Login',self)
self.button.setFont(QFont('Calibri', 14))
self.button.clicked.connect(self.password_check)
self.button.setGeometry(120,450,200,35)

def background(self):
bg=QLabel(self)
bg.setPixmap(QPixmap('bg.login.png'))
bg.setScaledContents(True)
bg.resize(450,600)

def identitas(self):
user=QPixmap('user.png')
label=QLabel(self)
label.setPixmap(user)
label.move(1000,90)
label.resize(150,150)
label.setScaledContents(True)

def user(self):
user=QPixmap('user.png')
label=QLabel(self)
label.setPixmap(user)
label.move(150,90)
label.resize(150,150)
label.setScaledContents(True)

def password_check(self):
message=QMessageBox()
if self.username.text()=='Informa' and
self.password.text()=='890' and self.identitas.text()=='Faretha Akila':
message.setText('Selamat Datang Faretha Akila di PT. Home
Center Indonesia')
message.exec_()
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()
elif self.username.text()=='Informa' and
self.password.text()=='890' and self.identitas.text()=='Arya Dewa':
message.setText('Selamat Datang Arya Dewa di PT. Home Center
Indonesia')
message.exec_()
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()

else:
message.setText(('Password Salah, Silakan Anda Coba Lagi'))
message.exec_()

if __name__=='__main__':
app=QApplication(sys.argv)
ex=Login()
ex.show()
sys.exit
c. Analisis Script Program Login
Tabel 2.1 Analisis Script Program Login
Script Keterangan
import sys Digunakan untuk
menjalankan program
pada python.
from PySide2.QtCore import* Mengimport modul
from PySide2.QtGui import* PySide2 yang
from PySide2.QtWidgets import* digunakan untuk
membuat tampilan
pada sebuah program.
class Login(QWidget): Digunakan untuk
mengatur
pengelompokan pada
konten yang dibuat,.
def __init__(self): Digunakan untuk
QWidget.__init__(self) membuat tampilan
self.setWindowTitle('Login | PT. Home Center dan memanggil
Indonesia') beberapa script
frame=self.frameGeometry() program pada menu
center=QDesktopWidget().availableGeometry().center() login.
frame.moveCenter(center)
icon=QIcon('login.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.user()
#Membuat Copyright Label Digunakan untuk
self.name=QLabel("<i><font membuat table
color=Black>Informa</font></i>",self) copyright.
self.name.move(180,50)
self.name.setFont(QFont('Calibri', 20))
self.name_down=QLabel("<i><font
color=White>@Informa 2022</font></i>",self)
self.name_down.move(320,550)
self.name_down.setFont(QFont('Calibri', 12))

#Membuat Input Program Digunakan untuk


self.identitas=QLineEdit(self) menampilkan tabel
self.identitas.setPlaceholderText('Identitas') yang meliputi
self.identitas.setStyleSheet('background:White') beberapa komponen,
self.identitas.setFont(QFont('Calibri', 14)) seperti identitas,
self.identitas.setGeometry(120,250,200,30) username, dan
self.username=QLineEdit(self) password yang
self.username.setPlaceholderText('Username') nantinya akan
self.username.setStyleSheet('background:White') diisikan. Jika
self.username.setFont(QFont('Calibri', 14)) pengisian data
self.username.setGeometry(120,290,200,30) tersebut benar maka
self.password=QLineEdit(self) akan muncul pesan
self.password.setPlaceholderText('Password') selamat yang dapat
self.password.setEchoMode(QLineEdit.Password) lanjut ke menu
self.password.setStyleSheet('background:White') selanjutnya dan jika
self.password.setFont(QFont('Calibri', 14)) terdapat kesalahan
self.password.setGeometry(120,330,200,30) pengisian data, maka
self.button =QPushButton('Login',self) akan terdapat pesan
self.button.setFont(QFont('Calibri', 14)) error dan akan
self.button.clicked.connect(self.password_check) dikembalikan untuk
self.button.setGeometry(120,450,200,35) mengisi data. Serta,
terdapat untuk
def background(self): menampilkan
bg=QLabel(self) background program.
bg.setPixmap(QPixmap('bg.login.png'))
bg.setScaledContents(True)
bg.resize(450,600)

def identitas(self):
user=QPixmap('user.png')
label=QLabel(self)
label.setPixmap(user)
label.move(1000,90)
label.resize(150,150)
label.setScaledContents(True)

def user(self):
user=QPixmap('user.png')
label=QLabel(self)
label.setPixmap(user)
label.move(150,90)
label.resize(150,150)
label.setScaledContents(True)

def password_check(self):
message=QMessageBox()
if self.username.text()=='Informa' and
self.password.text()=='890' and
self.identitas.text()=='Faretha Akila':
message.setText('Selamat Datang Faretha Akila di
PT. Home Center Indonesia')
message.exec_()
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()
elif self.username.text()=='Informa' and
self.password.text()=='890' and
self.identitas.text()=='Arya Dewa':
message.setText('Selamat Datang Arya Dewa di
PT. Home Center Indonesia')
message.exec_()
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()

else:
message.setText(('Password Salah, Silakan Anda
Coba Lagi'))
message.exec_()

if __name__=='__main__': Digunakan untuk


app=QApplication(sys.argv) mengeksekusikan
ex=Login() program yang dibuat.
ex.show()
sys.exit
2.2.3 Program Menu Utama PT. Home Center Indonesia
Program menu utama merupakan tampilan utama pada program yang
berisikan beberapa kategori atau pilihan yang dapat diakses. Menu utama dalam
sebuah Program dapat berfungsi untuk mempermudah navigasi dalam mengakses
halaman yang diperlukan berdasarkan kategori atau maksud dari halaman
tersebut. Pada umumnya sebuah Program mempunyai menu utama di halaman
depan. Dalam program ini dijelaskan bahwa akan terlihat sebuah tampilan menu
program dengan background yang terdapat logo Informa dan beberapa kategori
atau pilihan dibagian atas sebelah kiri. Terdapat beberapa pilihan, seperti folder,
akun, dan info. Dari setiap pilihan terdapat beberapa pilihan lagi. Pada kategori
folder terdapat pilihan logout dan exit. Pada kategori akun terdapat pilihan data,
kalkulator, dan chart. Dan pada kategori info terdapat lokasi dan nomor telepon
dari PT. Home Center Indonesia.
a. Hasil Running Program Menu Utama
Gambar 2.3 Running Program Menu Utama

Analisis:
Pada menu utama program dari PT. Home Center Indonesia terdapat
tampilan background dengan logo informa. Pada menu utama ini terdapat
beberapa kategori atau pilihan, seperti folder, akun, dan info. Pada menu folder
terdapat pilihan logout untuk kembali ke menu login dan exit untuk keluar dari
program. Dan pada kategori akun terdapat pilihan data yang nantinya akan masuk
ke menu data untuk mengetahui beberapa produk dan spesifikasinya, terdapat
pilihan kalkulator untuk menuju ke menu kalkulator atau tempat untuk
menghitung biaya produk, dan terdapat pilihan chart untuk menuju ke menu
chart. Dan kategori info akan menampilkan lokasi dan nomor telepon dari PT.
Home Center Indonesia.
b. Script Program Menu Utama
import sys
from PySide2.QtCore import*
from PySide2.QtGui import*
from PySide2.QtWidgets import*

class menuutama(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('Login | PT. Home Center Indonesia')
frame=self.frameGeometry()
center=QDesktopWidget().availableGeometry().center()
frame.moveCenter(center)
icon=QIcon('login.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.addmenu()

self.name_down=QLabel("<i><font color=White>@Informa
2022</font></i>",self)
self.name_down.move(320,550)
self.name_down.setFont(QFont('Calibri', 12))

def background(self):
bg=QLabel(self)
bg.setPixmap(QPixmap('bg.menu.png'))
bg.setScaledContents(True)
bg.resize(450,600)

def addmenu(self):
menu=self.menuBar()
foldermenu=menu.addMenu('Folder')
akunmenu=menu.addMenu('Akun')
aboutmenu=menu.addMenu('Info')

outaction=QAction(QIcon('masuk.png'), 'Logout',self)
exitaction=QAction(QIcon('keluar.png'), 'Exit',self)

dataction=QAction(QIcon('tabel.png'), 'Data',self)
kalkulatoraction=QAction(QIcon('kalkulator.png'),
'Kalkulator',self)
chartaction=QAction(QIcon('grafik.png'), 'Chart',self)

alamataction=QAction(QIcon('info.png'), 'Mall Paragon Solo Jl


Yosodipuro No133 Kota Surakarta Jawa Tengah 57139',self)
teleponaction=QAction(QIcon('telepone.png'), '0815-1100-
2000',self)

foldermenu.addAction(outaction)
foldermenu.addAction(exitaction)
akunmenu.addAction(dataction)
akunmenu.addAction(kalkulatoraction)
akunmenu.addAction(chartaction)
aboutmenu.addAction(alamataction)
aboutmenu.addAction(teleponaction)

dataction.triggered.connect(self.data)
kalkulatoraction.triggered.connect(self.kalkulator)
chartaction.triggered.connect(self.chart)
outaction.triggered.connect(self.logout)
exitaction.triggered.connect(self.exit_app)

def data(self):
from data import Data
self.a=Data()
self.a.show()
self.hide()

def kalkulator(self):
from kalkulator import Kalkulator
self.a=Kalkulator()
self.a.show()
self.hide()

def chart(self):
from chart import Chart
self.a=Chart()
self.a.show()
self.hide()
def exit_app(self):
self.close()

def logout(self):
from login import Login
self.a=Login()
self.a.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
ex=menuutama()
ex.show()
sys.exit
c. Analisis Script Program Main Menu
Script Keterangan
import sys Digunakan untuk
from PySide2.QtCore import* mengimport modul
from PySide2.QtGui import* PySide2 yang berfungsi
from PySide2.QtWidgets import*
untuk membuat
tampilan dan
menjalankan program
Python.
class menuutama(QWidget): Digunakan untuk
def __init__(self): membuat sebuah
QWidget.__init__(self) tampilan dan
self.setWindowTitle('Login | PT. Home Center
memanggil beberapa
Indonesia')
frame=self.frameGeometry() script program pada
menu utama.
center=QDesktopWidget().availableGeometry().center(
)
frame.moveCenter(center)
icon=QIcon('login.png')
self.setWindowIcon(icon)
self.resize(450,600)

self.background()
self.addmenu()
self.name_down=QLabel("<i><font Digunakan untuk
color=White>@Informa 2022</font></i>",self) menampilkan sebuah
self.name_down.move(320,550) copyright atau nama
self.name_down.setFont(QFont('Calibri', 12))
hak cipta.
outaction=QAction(QIcon('masuk.png'), Digunakan untuk
'Logout',self) memberikan aksi pada
exitaction=QAction(QIcon('keluar.png'), setiap kategori atau
'Exit',self)
pilihan yang tersedia
dataction=QAction(QIcon('tabel.png'), 'Data',self) pada menu utama.
kalkulatoraction=QAction(QIcon('kalkulator.png'),
'Kalkulator',self)
chartaction=QAction(QIcon('grafik.png'),
'Chart',self)

alamataction=QAction(QIcon('info.png'), 'Mall
Paragon Solo Jl Yosodipuro No133 Kota Surakarta
Jawa Tengah 57139',self)
teleponaction=QAction(QIcon('telepone.png'),
'0815-1100-2000',self)

foldermenu.addAction(outaction)
foldermenu.addAction(exitaction)
akunmenu.addAction(dataction)
akunmenu.addAction(kalkulatoraction)
akunmenu.addAction(chartaction)
aboutmenu.addAction(alamataction)
aboutmenu.addAction(teleponaction)

dataction.triggered.connect(self.data)
kalkulatoraction.triggered.connect(self.kalkulator)
chartaction.triggered.connect(self.chart)
outaction.triggered.connect(self.logout)
exitaction.triggered.connect(self.exit_app)
def addmenu(self): Digunakan untuk
menu=self.menuBar() menampilkan sebuah
foldermenu=menu.addMenu('Folder') kategori atau pilihan
akunmenu=menu.addMenu('Akun')
pada menu utama.
aboutmenu=menu.addMenu('Info')
def data(self):
from data import Data
self.a=Data()
self.a.show()
self.hide()

def kalkulator(self):
from kalkulator import Kalkulator
self.a=Kalkulator()
self.a.show()
self.hide()

def chart(self):
from chart import Chart
self.a=Chart()
self.a.show()
self.hide()
def exit_app(self):
self.close()

def logout(self):
from login import Login
self.a=Login()
self.a.show()
self.hide()
if __name__=='__main__': Digunakan untuk
app=QApplication(sys.argv) mengeksekusikan
ex=menuutama() program yang dibuat.
ex.show()
sys.exit
2.2.4 Program Data Tabel
2.2.6 Program Kalkulator (Program Kalkulator)
kalkulator adalah alat untuk menghitung dari perhitungan sederhana
seperti penjumlahan, pengurangan, perkalian dan pembagian sampai kepada
kalkulator sains yang dapat menghitung rumus matematika tertentu. Kalkulator
sederhana ini memiliki beberapa fungsi yaitu penjumlahan, pengurangan,
perkalian dan pembagian. Tujun dari program kalkulator ini yaitu untuk
menghitung biaya pembelian dari sebuah produk meubel PT. Home Center
Indonesia. Program kalkulator ini berisikan beberapa komponen, seperti waktu
pembelian, jenis produk, harga produk, jumlah produk, biaya pakage, harga awal,
dan harga akhir. Pengguna diharapkan untuk mengisi dengan benar yang pada
akhirnya nanti akan keluar biaya yang harus dibayarkan.
a. Hasil Running Program Kalkulator

Gambar 2.6 Running Program Kalkulator

Analisis:
Pada program menu kalkulator ini dapat dilakukan dengan pengisian data
yang telah tersedia, seperti kapan waktu pembelian, memilih jenis produk yang
akan dibeli dan dikolom tersebut sudah disediakan produk yang tersedia jadi
tinggal memilih salah satu produk tersebut, setelah itu akan muncul harga produk
sesuai yang dipilih, lalu mengisi jumlah produk yang akan dibeli, harga tersebut
akan ditambah dengan biaya package sebesar 7%. Kemdian klik tombol hitung
jika sudah yakin yang nantinya akan muncul harga awal beserta harga akhir dan
jika belum yakin bisa klik tombol hapus yang nantinya akan menghapus semua
dan mengisi kembali.
b. Script Program Kalkulator
import sys
from PySide2.QtCore import*
from PySide2.QtGui import*
from PySide2.QtWidgets import*
class kalkulator (QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('Kalkulator | PT. Home Center Indonesia')
frame=self.frameGeometry()
center=QDesktopWidget().availableGeometry().center()
frame.moveCenter(center)
icon=QIcon('kalkulator.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.konten()
self.button()
self.layout()

self.name_down=QLabel("<i><font color=White>@Informa
2022</font></i>",self)
self.name_down.move(320,550)
self.name_down.setFont(QFont('Calibri', 12))

def background(self):
bg=QLabel(self)
bg.setPixmap(QPixmap('bg.png'))
bg.setScaledContents(True)
bg.resize(450,600)

def konten(self):
self.waktu=QLabel('Waktu Pembelian:', self)
self.line1=QDateEdit(self)
self.produk=QLabel('Jenis Produk:', self)
self.line2=QComboBox(self)
self.line2.addItems(["","Mont Kursi Lipat",
"Dianatoo Meja Tamu",
"Hove Bangku",
"Maxy 2 Lemari Pakaian 2 Pintu",
"Selma Set Tempat Tidur Sharon",
"Kabinet Dapur",
"Rak Sepatu 5 Tingkat",
"Walley Rak Piring Extendable",
"Rak Penyimpanan 4 Tingkat",
"Tempat Sampah 10 Ltr Open Top"])
self.line2.activated[str].connect(self.process)
self.harga=QLabel('Harga Produk:',self)
self.line3=QLineEdit(self)
self.line3.setReadOnly(True)
self.jumlah=QLabel('Jumlah Produk:',self)
self.line4=QSpinBox(self)
self.biaya=QLabel('Biaya Package(%):',self)
self.line5=QLineEdit('7',self)
self.line5.setReadOnly(True)
self.harga_awal=QLabel('Harga Awal',self)
self.line6=QLineEdit(self)
self.line6.setReadOnly(True)
self.harga_akhir=QLabel('Harga Akhir',self)
self.line7=QLineEdit(self)
self.line7.setReadOnly(True)

def process(self,harga):
try:
if str(harga)=='Mont Kursi Lipat':
p = 169000
elif str(harga)=='Dianatoo Meja Tamu':
p = 899000
elif str(harga)=='Hove Bangku':
p = 79000
elif str(harga)=='Maxy 2 Lemari Pakaian 2 Pintu':
p = 1995000
elif str(harga)=='Selma Set Tempat Tidur Sharon':
p = 1899000
elif str(harga)=='Kabinet Dapur':
p = 3999000
elif str(harga)=='Rak Sepatu 5 Tingkat':
p = 119000
elif str(harga)=='Walley Rak Piring Extendable':
p = 199000
elif str(harga)=='Rak Penyimpanan 4 Tingkat':
p = 259000
elif str(harga)=='Tempat Sampah 10 Ltr Open Top':
p = 89000
else:
p=0
self.line3.setText(str(p))

except:
print('False')

def process1(self):
harga=float(self.line3.text())
jumlah=float(self.line4.text())
biaya=float(self.line5.text())
harga_awal=harga*jumlah
self.line6.setText(str(harga_awal))
harga_akhir=((harga_awal*(biaya/100))+harga)
self.line7.setText(str(harga_akhir))

def button(self):
self.count=QPushButton('Hitung',self)
self.count.clicked.connect(self.process1)
self.delete=QPushButton('Hapus',self)
self.delete.clicked.connect(self.hapus)
self.back=QPushButton('Kembali',self)
self.back.move(40,500)
self.back.clicked.connect(self.kembali)
self.next=QPushButton('Lanjut',self)
self.next.move(300,500)
self.next.clicked.connect(self.lanjut)

def hapus(self):
pesan=QMessageBox.question(self,'Warning', "Are you gonna
delete the data?",
QMessageBox.Yes | QMessageBox.No)
if pesan ==QMessageBox.Yes:
from kalkulator import Kalkulator
self.p= Kalkulator()
self.p.show()
self.hide()
if pesan == QMessageBox.No:
pass

def layout(self):
self.layout=QFormLayout()
self.layout.addRow(self.waktu,self.line1)
self.layout.addRow(self.produk,self.line2)
self.layout.addRow(self.harga,self.line3)
self.layout.addRow(self.jumlah,self.line4)
self.layout.addRow(self.biaya,self.line5)
self.layout.addRow(self.harga_awal,self.line6)
self.layout.addRow(self.harga_akhir,self.line7)
self.layout.addRow(self.count)
self.layout.addRow(self.delete)
self.setLayout(self.layout)

def kembali(self):
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()
def lanjut(self):
from chart import Chart
self.a=Chart()
self.a.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
ex=kalkulator()
ex.show()
sys.exit
c. Analisis Script Program Kalkulator
Script Keterangan
import sys Digunakan untuk
from PySide2.QtCore import* mengimport modul
from PySide2.QtGui import* PySide2 yang berfungsi
from PySide2.QtWidgets import*
untuk membuat
tampilan dan
menjalankan program
Python.
class kalkulator (QWidget): Digunakan unttuk
def __init__(self): membuat sebuah
QWidget.__init__(self) tampilan dan
self.setWindowTitle('Kalkulator | PT. Home
memanggil beberapa
Center Indonesia')
frame=self.frameGeometry() script program pada
menu kalkulator.
center=QDesktopWidget().availableGeometry().center(
)
frame.moveCenter(center)
icon=QIcon('kalkulator.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.konten()
self.button()
self.layout()
self.name_down=QLabel("<i><font Digunakan untuk
color=White>@Informa 2022</font></i>",self) menampilkan sebuah
self.name_down.move(320,550) copyright atau nama
self.name_down.setFont(QFont('Calibri', 12))
hak cipta.
def konten(self): Digunakan untuk
self.waktu=QLabel('Waktu Pembelian:', self) membuat isi konten
self.line1=QDateEdit(self) pada tampilan menu
self.produk=QLabel('Jenis Produk:', self) kalkulator.
self.line2=QComboBox(self)
self.line2.addItems(["","Mont Kursi Lipat",
"Dianatoo Meja Tamu",
"Hove Bangku",
"Maxy 2 Lemari Pakaian 2
Pintu",
"Selma Set Tempat Tidur
Sharon",
"Kabinet Dapur",
"Rak Sepatu 5 Tingkat",
"Walley Rak Piring
Extendable",
"Rak Penyimpanan 4 Tingkat",
"Tempat Sampah 10 Ltr Open
Top"])
self.line2.activated[str].connect(self.process)
self.harga=QLabel('Harga Produk:',self)
self.line3=QLineEdit(self)
self.line3.setReadOnly(True)
self.jumlah=QLabel('Jumlah Produk:',self)
self.line4=QSpinBox(self)
self.biaya=QLabel('Biaya Package(%):',self)
self.line5=QLineEdit('7',self)
self.line5.setReadOnly(True)
self.harga_awal=QLabel('Harga Awal',self)
self.line6=QLineEdit(self)
self.line6.setReadOnly(True)
self.harga_akhir=QLabel('Harga Akhir',self)
self.line7=QLineEdit(self)
self.line7.setReadOnly(True)

def process(self,harga):
try:
if str(harga)=='Mont Kursi Lipat':
p = 169000
elif str(harga)=='Dianatoo Meja Tamu':
p = 899000
elif str(harga)=='Hove Bangku':
p = 79000
elif str(harga)=='Maxy 2 Lemari Pakaian 2
Pintu':
p = 1995000
elif str(harga)=='Selma Set Tempat Tidur
Sharon':
p = 1899000
elif str(harga)=='Kabinet Dapur':
p = 3999000
elif str(harga)=='Rak Sepatu 5 Tingkat':
p = 119000
elif str(harga)=='Walley Rak Piring
Extendable':
p = 199000
elif str(harga)=='Rak Penyimpanan 4
Tingkat':
p = 259000
elif str(harga)=='Tempat Sampah 10 Ltr
Open Top':
p = 89000
else:
p=0
self.line3.setText(str(p))

except:
print('False')
def process1(self): Digunakan untuk
harga=float(self.line3.text()) memproses perhitungan
jumlah=float(self.line4.text()) harga produk yang
biaya=float(self.line5.text())
dipilih.
harga_awal=harga*jumlah
self.line6.setText(str(harga_awal))
harga_akhir=((harga_awal*(biaya/100))
+harga)
self.line7.setText(str(harga_akhir))
def layout(self): Digunakan untuk
self.layout=QFormLayout() mengatur tata letak
self.layout.addRow(self.waktu,self.line1) secara berurutan pada
self.layout.addRow(self.produk,self.line2)
konten yang telah
self.layout.addRow(self.harga,self.line3)
self.layout.addRow(self.jumlah,self.line4) dibuat.
self.layout.addRow(self.biaya,self.line5)
self.layout.addRow(self.harga_awal,self.line6)
self.layout.addRow(self.harga_akhir,self.line7)
self.layout.addRow(self.count)
self.layout.addRow(self.delete)
self.setLayout(self.layout)
def button(self): Digunakan untuk
self.count=QPushButton('Hitung',self) membuat tombol
self.count.clicked.connect(self.process1) hitung, hapus, kembali,
self.delete=QPushButton('Hapus',self)
dan lanjut yang
self.delete.clicked.connect(self.hapus)
self.back=QPushButton('Kembali',self) memiliki fungsi
self.back.move(40,500) masing-masing.
self.back.clicked.connect(self.kembali)
self.next=QPushButton('Lanjut',self)
self.next.move(300,500)
self.next.clicked.connect(self.lanjut)

def hapus(self):
pesan=QMessageBox.question(self,'Warning',
"Are you gonna delete the data?",
QMessageBox.Yes |
QMessageBox.No)
if pesan ==QMessageBox.Yes:
from kalkulator import Kalkulator
self.p= Kalkulator()
self.p.show()
self.hide()
if pesan == QMessageBox.No:
pass
def kembali(self):
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()
def lanjut(self):
from chart import Chart
self.a=Chart()
self.a.show()
self.hide()
if __name__=='__main__': Digunakan untuk
app=QApplication(sys.argv) mengeksekusikan
ex=menuutama() program yang dibuat.
ex.show()
sys.exit
2.2.7 Program Chart
Grafik atau chart dapat diartikan sebagai suatu kerangka atau gambar yang
akan digunakan untuk membuat suatu objek visualisasi dari data-data pada tabel
dengan tujuan dapat memberikan informasi mengenai suatu data dari penyaji
materi kepada penerima materi. Chart juga dapat ditampilkan dalam bentuk
gambar, seperti persegi, lingkaran, tabung, segitiga, balok, kerucut atau yang lain-
lain. Program ini dijelaskan bahwa pengguna akan diminta untuk mengisi
beberapa data mulai dari nama meubel, tahun penjualan, dan beberapa produk
yang dijual. Dan terdapat bebrapa tombol, seperti pie chart yang digunakan untuk
mengaplikasikan data agar menjadi sebuah grafik, tombol hapus yang digunakan
untuk menghapus dari data tersebut, dan tombol kembali untuk menuju kembali
ke menu utama.
a. Hasil Running Program Chart
Gambar 2.7 Running Program Chart

Analisis:
Pada program chart ini akan beroperasi jika pengguna telah mengisi data
yang telah tersedia pada kolom-kolom tersebut. Dimulai dari awal yaitu
memasukkan nama meubel, tahun penjualan, produk yang telah terjual tong
sampah, tempat tidur, rak penyimpanan, lemari, dan kabinet dapur. Jika sudah
terisi semua maka langkah selanjutnya yaitu klik tombol pie chart jika ingin
melihat grafik dari data tersebut dan klik hapus jika ada kesalahan saat mengisi
data atau ingin mengisi ulang data. Dan terdapat tombol kembali yang bertujuan
untuk kembali ke menu utama.
b. Script Program Chart
import sys
from PySide2.QtCore import*
from PySide2.QtGui import*
from PySide2.QtWidgets import*
import matplotlib.pyplot as plt

class Chart(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('Chart | PT. Home Center Indonesia')
frame=self.frameGeometry()
center=QDesktopWidget().availableGeometry().center()
frame.moveCenter(center)
icon=QIcon('grafik.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.label()
self.line()
self.layout()

def background(self):
bg=QLabel(self)
bg.setPixmap(QPixmap('bg.png'))
bg.setScaledContents(True)
bg.resize(450,600)

def label(self):
self.judul=QLabel('Nama Meubel :', self)
self.ketX=QLabel('Penjualan :', self)
self.X1=QLabel('Tong Sampah :', self)
self.X2=QLabel('Tempat Tidur :', self)
self.Y1=QLabel('Rak Penyimpanan :', self)
self.Y2=QLabel('Lemari :', self)
self.Y3=QLabel('Kabinet Dapur :', self)

def line(self):
self.line1=QLineEdit(self)
self.line2=QLineEdit(self)
self.line4=QLineEdit(self)
self.line5=QLineEdit(self)
self.line6=QLineEdit(self)
self.line7=QLineEdit(self)
self.line8=QLineEdit(self)
self.pie=QPushButton('Pie Chart',self)
self.pie.clicked.connect(self.process_pie)
self.delete=QPushButton('Hapus',self)
self.delete.clicked.connect(self.hapus)
self.back=QPushButton('Kembali',self)
self.back.clicked.connect(self.kembali)
self.back.move(30,550)

def layout(self):
self.layout=QFormLayout()
self.layout.addRow(self.judul, self.line1)
self.layout.addRow(self.ketX, self.line2)
self.layout.addRow(self.X1, self.line4)
self.layout.addRow(self.X2, self.line5)
self.layout.addRow(self.Y1, self.line6)
self.layout.addRow(self.Y2, self.line7)
self.layout.addRow(self.Y3, self.line8)
self.layout.addRow(self.pie)
self.layout.addRow(self.delete)
self.setLayout(self.layout)

def process_pie(self):
title=str(self.line1.text())
sumbuX=str(self.line2.text())
labels = ['Tong Sampah', 'Tempat Tidur', 'Rak Penyimpanan',
'Lemari', 'Kabinet Dapur']
X1=int(self.line4.text())
X2=int(self.line5.text())
X3=int(self.line6.text())
X4=int(self.line7.text())
X5=int(self.line8.text())

plt.title(title)
plt.xlabel(sumbuX)
x=[X1,X2,X3,X4,X5]
plt.pie(x, labels=labels, autopct='%1.1f%%', shadow=True,
startangle=90)
plt.axis('equal')
plt.show()
def hapus(self):
pesan=QMessageBox.question(self,'Warning', "Are you gonna delete
the data?",
QMessageBox.Yes | QMessageBox.No)
if pesan ==QMessageBox.Yes:
from chart import Chart
self.a= Chart()
self.a.show()
self.hide()
if pesan == QMessageBox.No:
pass

def kembali(self):
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
ex=Chart()
ex.show()
sys.exit
c. Analisis Script Program Chart
Script Keterangan
import sys Digunakan untuk
from PySide2.QtCore import* mengimport
from PySide2.QtGui import* modul PySide2
from PySide2.QtWidgets import* yang berfungsi
import matplotlib.pyplot as plt untuk membuat
tampilan dan
menjalankan
program serta
untuk
membangun
visualisasi data
pada program
Python.
class Chart(QWidget): Digunakan untuk
def __init__(self): membuat sebuah
QWidget.__init__(self) tampilan dan
self.setWindowTitle('Chart | PT. Home Center memanggil
Indonesia') beberapa script
frame=self.frameGeometry() program pada
menu chart.
center=QDesktopWidget().availableGeometry().center()
frame.moveCenter(center)
icon=QIcon('grafik.png')
self.setWindowIcon(icon)
self.resize(450,600)
self.background()
self.label()
self.line()
self.layout()
def background(self): Digunakan untuk
bg=QLabel(self) menampilkan
bg.setPixmap(QPixmap('bg.png')) background
bg.setScaledContents(True) tampilan dan isi
bg.resize(450,600) konten pada
menu chart
def label(self): secara berurutan.
self.judul=QLabel('Nama Meubel :', self)
self.ketX=QLabel('Penjualan :', self)
self.X1=QLabel('Tong Sampah :', self)
self.X2=QLabel('Tempat Tidur :', self)
self.Y1=QLabel('Rak Penyimpanan :', self)
self.Y2=QLabel('Lemari :', self)
self.Y3=QLabel('Kabinet Dapur :', self)

def line(self):
self.line1=QLineEdit(self)
self.line2=QLineEdit(self)
self.line4=QLineEdit(self)
self.line5=QLineEdit(self)
self.line6=QLineEdit(self)
self.line7=QLineEdit(self)
self.line8=QLineEdit(self)
self.pie=QPushButton('Pie Chart',self)
self.pie.clicked.connect(self.process_pie)
self.delete=QPushButton('Hapus',self)
self.delete.clicked.connect(self.hapus)
self.back=QPushButton('Kembali',self)
self.back.clicked.connect(self.kembali)
self.back.move(30,550)

def layout(self):
self.layout=QFormLayout()
self.layout.addRow(self.judul, self.line1)
self.layout.addRow(self.ketX, self.line2)
self.layout.addRow(self.X1, self.line4)
self.layout.addRow(self.X2, self.line5)
self.layout.addRow(self.Y1, self.line6)
self.layout.addRow(self.Y2, self.line7)
self.layout.addRow(self.Y3, self.line8)
self.layout.addRow(self.pie)
self.layout.addRow(self.delete)
self.setLayout(self.layout)

def hapus(self):
pesan=QMessageBox.question(self,'Warning', "Are
you gonna delete the data?",
QMessageBox.Yes |
QMessageBox.No)
if pesan ==QMessageBox.Yes:
from chart import Chart
self.a= Chart()
self.a.show()
self.hide()
if pesan == QMessageBox.No:
pass

def kembali(self):
from menu_utama import menuutama
self.a=menuutama()
self.a.show()
self.hide()
def process_pie(self): Digunakan untuk
title=str(self.line1.text()) proses dalam
sumbuX=str(self.line2.text()) pembuatan
labels = ['Tong Sampah', 'Tempat Tidur', 'Rak grafiknya.
Penyimpanan', 'Lemari', 'Kabinet Dapur']
X1=int(self.line4.text())
X2=int(self.line5.text())
X3=int(self.line6.text())
X4=int(self.line7.text())
X5=int(self.line8.text())

plt.title(title)
plt.xlabel(sumbuX)
x=[X1,X2,X3,X4,X5]
plt.pie(x, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
plt.axis('equal')
plt.show()
if __name__=='__main__': Digunakan untuk
app=QApplication(sys.argv) mengeksekusikan
ex=Chart() program yang
ex.show() dibuat.
sys.exit

2.3 Penutup
2.3.1 Kesimpulan
Dari penugasan program python GUI dengan PySide2 dapat diambil kesimpulan
sebagai berikut:
a. GUI merupakan sebuah modul dari program Python.
b. Modul GUI, Core, dan Widget dapat menampilkan tampilan pada program
python.
c. Matplotlib berfungsi untuk membangun visualisasi data pada program python.
2.3.2 Saran
Dari penugasan program Python GUI dengan PySide2 dapat diberikan saran
sebagai berikut:
a. Praktikan harus tetap saling bekerja sama dengan baik.
b. Praktikan harus memiliki hubungan berkomunikasi yang baik.
c. Praktikan dapat saling mengingatkan jika ada agenda praktikum.
d. Praktikan diharapkan untuk mencari dan membaca materi Python GUI dengan
PySide2 terlebih dahulu.

Anda mungkin juga menyukai