Anda di halaman 1dari 23

MODUL II

PYTHON GUI DENGAN PYSIDE2

2.1 Landasan Teori


2.1.1 GUI(Graphical User Interface)
GUI (Graphical User Interface) adalah sebuah media virtual yeng
memudahkan pengguna memberikan perintah tanpa harus repot mengetik perintah,
hanya dengan menggunakan sebuah perintah yang diubah menjadi sebuah ikon
dalam layar dengan mengklik untuk menjalankan fungsinya. Contohnya icon
jendela window, program mc.word dan masih banyak lagi.
GUI (Graphical User Interface) memiliki sebuah kelebihan yaitu desainnya
menarik karena menggunakan mode grafis antarmuka (Venkateshwaran L,2013).
Memudahkan interaksi pengguna dan kumputer dengan tidak harus mengetik
sebuah masukan lagi. Terlebih lagi mudah digunakan dan mudah dipelajari. Namun
GUI (Graphical User Interface) juga punya kekurangan yaitu, menggunakan lebih
banyak memori komputer karena tujuannya adalah untuk membuatnya ramah
pengguna dan bukan sumber daya yang dioptimalkan. Akibatnya bisa menjadi
lambat pada komputer dengan spesifikasi rendah. GUI menjadi lebih kompleks jika
pengguna perlu berkomunikasi dengan komputer secara langsung.Tugas tertentu
mungkin memakan waktu lama karena banyak menu untuk memilih pilihan yang
diinginkan.Perintah tersembunyi harus dicari menggunakan file Bantuan (Help).
Aplikasi berbasis GUI membutuhkan lebih banyak RAM untuk dapat dijalankan.
Menggunakan lebih banyak daya dalam pemrosesannya dibandingkan dengan jenis
antarmuka lainnya.

2.1.2 PySide2
PySide2 merupakan sebuah modul Python yang mengikat crosss-platform
GUI toolkit QT (Martin,F,2015). PySide dikembangkan oleh perusahaan The Qt
Company di bawah proyek Qt untuk Python tentang porting PySide yang merbah
seri Qt4 menjadi Qt5. Penggunaan PySide2 juga dibatasi untuk Python seri 3
khususnya Python 3.4 ke atas. Kelebihannya yaitu dari Boost C++ untuk binding
dan kemudian beralih ke generator yang mengikat Shiboken untuk mengurangi
ukuran binary dan jejak memori.
2.2 Hasil Praktikum
2.2.1 Flowchart Menu Utama AVOSKIN Technology
Flowchart pada program menu utama dapat dilihat pada gambar 2.1

Gambar 2.1 Flowchart Menu Utama AVOSKIN Technology

Analisis :
Flowchart Menu Utama AVOSKIN Technology terdapat beberapa pilihan
menu, yang pertama kita mulai dan masuk pada menu utama, di menu utama
terdapat dua pilihan yaitu data perusahaan dimana di dapatra perusaha terdapat dua
pilihan juga yaitu daftar produk dan daftar karyawan. Pada daftar produk berisi
nama produk, stock produk, harga produk, permintaan, dan nomor produk.
Sedangkan pada daftar karyawan berisi nama, jabatan, domisili, divisi, dan NIK
karyawan. Selanjutnya kita msuk pada pilihan perhitungan pada menu utama,
dimana di perhitungan ini terdapat dua pilihan yaitu gaji karyawan dan transaksi,
dimana didalam gaji karyawan digunakan untuk menghitung gaji karyawan
perbulan, dimana kita perlu memasukan nama, posisi, gaji, bonus dan akan keluar
gaji totalnya. Sedangkan pada perhitunga transaksi digunakan untuk menghitung
transaksi pembelian.

2.2.2 Program Menu Utama AVO TECHNOLOGY


Program menu utama merupakan sebuah program yang menampilkan
tampilan awal dari sebuah masukan. Tujuannya untuk memudahkan pengguna
dalam mengakses sebuah menu yang akan dipilih. Jika tak dibuat menu utama maka
pengguna akan kesulitan dalam mengakses menu yang diketahui sangat banyak.
Untuk itu, maka dibuatlah sebuah menu utama.
Pada program yang kami buat ini memiliki sebuah pilihan yang mencakup
data dan perhitungan. Disini ada submenu dari data yang mencakup data karyawan
dan data produk yang di jual. Sedangkan untuk submenu perhitungan mencakup
gaji karyawan dan transaksi. .

a) Hasil Running Program Menu Utama


Hasil Running Program Menu Utama dapat dilihat pada gambar 2.2

Gambar 2.2 Hasil Running Menu Utama

Analisis:
Tampilan program di atas merupakan menu utama dari program yang kami
buat dari AVOSKIN Technology yang mencakup menu Data dan Perhitungan.
Apabila salah satu dari menu tersebut dipilih, maka akan muncul submenu. Untuk
menu Data terdapat pilihan submenu Daftar Produk dan Daftar Karyawan.
Sedangkan untuk menu Perhitungan terdapat pilihan submenu Gaji Karyawan dan
Transaksi.

a) Script Program Menu Utama


import sys
from PySide2.QtGui import*
from PySide2.QtCore import*
from PySide2.QtWidgets import*

class menu(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Menu Utama')
icon=QIcon('menu.png')
self.setWindowIcon(icon)
self.resize(600,400)
frame=self.frameGeometry()
tengah=QDesktopWidget().availableGeometry().center()
frame.moveCenter(tengah)
self.setStyleSheet("background-color:tan;")

self.menu2()

def menu2 (self):


judul1=QLabel('<h1><font color =brown>AVO</font></h1>',self)
judul1.setFont(QFont('Algerian',6))
judul1.move(270,80)

judul2=QLabel('<h1><font color
=brown>Welcome</font></h1>',self)
judul2.setFont(QFont('Algerian',5))
judul2.move(260,50)

judul3=QLabel('<h1><font color
=brown>TECHNOLOGY</font></h1>',self)
judul3.setFont(QFont('Algerian',5))
judul3.move(250,110)

mainmenu=self.menuBar()
filemenu=mainmenu.addMenu('File')
akunmenu=mainmenu.addMenu('Account')

outaction=QAction('Logout',self)
outaction.setShortcut('CTRL+L')
exitaction=QAction('exit',self)
exitaction.setShortcut('CTRL+E')

hitungaction=QAction(QIcon('hitung.png'), 'Perhitungan',self)
tabelaction=QAction(QIcon('tabel.png'), 'Data',self)

filemenu.addAction(outaction)
filemenu.addAction(exitaction)
akunmenu.addAction(hitungaction)
akunmenu.addAction(tabelaction)

hitungaction.triggered.connect(self.konten2)
tabelaction.triggered.connect(self.konten1)

outaction.triggered.connect(self.logout)
exitaction.triggered.connect(self.exit_app)

def exit_app(self):
self.close()

def logout (self):


from masuk import LoginForm
self.a=LoginForm()
self.a.show()
self.hide()

def konten1 (self):


button3=QPushButton('Daftar Produk',self)
button3.setIcon(QIcon('produk.png'))
button3.clicked.connect(self.produk)
button3.resize(160,60)
button3.move(340,230)
button3.show()

button4=QPushButton('Daftar Karyawan',self)
button4.setIcon(QIcon('karyawan.png'))
button4.clicked.connect(self.karyawan)
button4.resize(160,60)
button4.move(110,230)
button4.show()

def konten2 (self):


button5=QPushButton('Transaksi',self)
button5.setIcon(QIcon('transaksi.png'))
button5.clicked.connect(self.transaksi)
button5.setGeometry(340,230,160,60)
button5.show()

button6=QPushButton('Gaji Karyawan',self)
button6.setIcon(QIcon('distribusi.png'))
button6.clicked.connect(self.gaji)
button6.setGeometry(110,230,160,60)
button6.show()

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

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

def karyawan(self):
from karyawan import karyawan
self.b=karyawan()
self.b.show()
self.hide()

def produk(self):
from produk import produk
self.b=produk()
self.b.show()
self.hide()

if __name__== '__main__':
app = QApplication(sys.argv)
mainmenu=menu()
mainmenu.show()
sys.exit(app.exec_())
b) Analisis Script Program Menu Utama
Analisis Script Program Menu Utama dapat dilihat pada Tabel 2.1
Tabel 2.1 Analisis Script Program Menu Utama
Script Keterangan
import sys Digunakan untuk mengambil
modul sys. Modul ini untuk
mengakses fungsi – fungsi
yang ada pada python.

from PySide2.QtGui import* Digunakan untuk mengimport


modul QtGui dari library
PySide2.

from PySide2.QtCore import* Digunakan untuk mengimport


modul Qtcore dari library
PySide2

from PySide2.QtWidgets import* Digunakan untuk mengimport


modul QtWidgets dari library
PySide2

class menu(QWidget): Digunakan untuk membuat


class dengan nama yang telah
diinput, dengan menurunkan
class QtWidget

def __init__(self): Digunakan untuk sebuah


konstruktor dari class yang
telah diinput sebelumnya.
self.setWindowTitle('Menu Utama') Digunakan untuk judul jendela
yaitu 'Menu Utama'
Tengah=QDesktopWidget(). Digunakan untuk mendapatkan
availableGeometry().center()
frame.moveCenter(Tengah) titik tengah dari jendela yang
kita buat

judul1=QLabel('<h1><font color Digunakan untuk membuat


=brown>AVO</font></h1>',self)
judul1.setFont(QFont('Algerian',6)) sebuah label text dengan nama,
judul1.move(270,80) warna dan besar text yang telah
diinput.
Script Keterangan
self.pilihan() Digunakan untuk memanggil
fungsi yang dipilih
button3.clicked.connect(self.produk) Digunakan untuk
menghubungkan tombol
dengan fungsi yang dipilih
self.produk() Digunakan sebagai variable
perumpamaan untuk
selanjutnya ditampilkan
dengan masukan yang telah di
input
self.b.show() Digunakan untuk digunakan
untuk menampilkan program.
self.hide() Digunakan untuk
Menyembunyikan
tampilan yang dibuat
from produk import produk Digunakan untuk menginport
masukan dari file yang telah
ditentukan.
button3=QPushButton('Daftar Digunakan untuk membuat
Produk',self)
sebuah tombol tekan di jendela
dengan nama yang telah
diinput
icon=QIcon('menu.png') Digunakan untuk
menambahkan icon di jendela
dengan icon yang telah diiput.
if __name__=='__main__': Digunakan untuk
mendefinisikan program utama
yang akan dijalankan
app=QApplication(sys.argv) Digunakan untuk membuat
aplikasi
program utama.

ex=menu() Digunakan untuk mengambil


nama class program.
ex.show() Digunakan untuk
menampilkan program yang
telah di buat.
sys.exit() Digunakan agar pengguna bisa
mengakhiri/keluar dari
program Python.
2.2.3 Program Menu Gaji Karyawan AVO TECHNOLOGY
Program Data adalah sebuah program yang didalamnya berisi daftar nama
produk dan nama karyawan. Dalam program kali ini membahas tentang daftar
produk AVO TECHNOLOGY lengkap dengan nama dan harganya. Tujuannya
adalah untuk mempermudah dalam melihat buku-buku yang ada.

a) Hasil Running Program Gaji Karyawan


Hasil Running Program Gaji Karyawan dapat dilihat pada gambar 2.3

Gambar 2.3 Hasil Running Gaji


Analisis :
Program gaji karyawan adalah program yang menampilkan total gaji
karyawan yang berasal dari gaji(/bulan) dimana gaji perbulan ini besar kecilnya
berdasarkan jabatanya , semakin tinggi juga semakin besar ditambah bonus bonus
yang didapat. Sehingga keluarlah total gaji yang didapat karyawan tersebut selama
satu bulan.

b) Script Program Menu Gaji Karyawan


import sys
from PySide2.QtGui import*
from PySide2.QtCore import*
from PySide2.QtWidgets import*

class gaji(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('GAJI KARYAWAN')
frame=self.frameGeometry()
Tengah=QDesktopWidget().availableGeometry().center()
frame.moveCenter(Tengah)
self.resize(450,250)
self.setStyleSheet("background-color:lavender;")
icon=QIcon('uang.jpg')
self.setWindowIcon(icon)

self.unit()
self.unit2()
self.unit3()
self.tataletak()

def unit(self):
self.buku = QLabel('Nama Karyawan : ', self)
self.harga = QLabel('Posisi Kerja : ', self)
self.gaji = QLabel('Gaji(/bulan) : ', self)
self.bonus = QLabel('Bonus(Rp) : ', self)
self.total = QLabel('Total Gaji : ', self)

def unit2(self):
self.line1 = QComboBox(self)

self.line1.addItems(['Aisyahna','Dodit','Elisabeth','Fransiska','Gendis',

'Heriawan','Risna','Raja','Ratu','Satriwan'])
self.line2 = QComboBox(self)

self.line2.addItems(['spv.HRD','spv.IT','spv.Accounting','spv.Administrat
or','spv.Engineering','staff.HRD','staff.IT',

'staff.Accounting','staff.administrator','staff.engineering'])
self.line2.activated[str].connect(self.hitung1)
self.line3 = QLineEdit(self)
self.line3.setReadOnly(True)
self.line4 = QLineEdit(self)
self.line5 = QLineEdit(self)
self.line5.setReadOnly(True)

def unit3(self):
self.hitung =QPushButton('TOTAL GAJI',self)
self.hitung.clicked.connect(self.hitung2)
self.hps=QPushButton('DELETE',self)
self.hps.clicked.connect(self.hapus)
self.back=QPushButton('HOME',self)
self.back.clicked.connect(self.kembali)

def tataletak(self):
self.layout = QFormLayout()
self.layout.addRow(self.buku, self.line1)
self.layout.addRow(self.harga, self.line2)
self.layout.addRow(self.gaji, self.line3)
self.layout.addRow(self.bonus, self.line4)
self.layout.addRow(self.total, self.line5)
self.layout.addRow(self.hitung)
self.layout.addRow(self.hps)
self.layout.addRow(self.back)
self.setLayout(self.layout)

def hitung1(self, hrg_unit):


try:
if str(hrg_unit)=='spv.HRD':
a = 10000000
elif str(hrg_unit)=='spv.IT':
a = 15000000
elif str(hrg_unit)=='spv.Accounting':
a = 13000000
elif str(hrg_unit)=='spv.Administrator':
a = 9000000
elif str(hrg_unit)=='spv.Engineering':
a = 14000000
elif str(hrg_unit)=='staff.HRD':
a = 8000000
elif str(hrg_unit)=='staff.IT':
a = 8500000
elif str(hrg_unit)=='staff.Accounting':
a = 6000000
elif str(hrg_unit)=='staff.administrator':
a = 5500000
elif str(hrg_unit)=='staff.engineering':
a = 9000000
else:
a = 0
self.line3.setText(str(a))
except:
print('False')

def hitung2(self):
upah =float(self.line3.text())
bonus = float(self.line4.text())
totalgaji = upah + bonus
self.line5.setText(str(totalgaji))

def hapus(self):
pesan =QMessageBox.question(self, 'PERINGATAN', "Anda Yakin Ingin
Menghapus?",
QMessageBox.Yes |QMessageBox.No)
if pesan == QMessageBox.Yes:
from gaji import gaji
self.a = gaji()
self.a.show()
self.hide()
if pesan == QMessageBox.No:
pass

def kembali(self):
from mainmenu import menu
self.b=menu()
self.b.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
ex= gaji()
ex.show()
sys.exit()

c) Analisis Script Program Gaji Karyawan


Analisis Script Program Gaji Karyawan dapat dilihat pada table 2.2 berikut
Tabel 2.2 Analisis Script Program Gaji Karyawan
Script Keterangan
self.line2.activated[str]. Digunakan untuk menghubungkan
connect(self.hitung1)
kombo box dengan nilai inputan
hitung1
self.line3 = QLineEdit(self) Digunakan untuk membuat sebuah
Form yang nantinya dapat diisi
dengan teks maupun angka.
Script Keterangan
self.line3.setReadOnly(True) Digunakan untuk membuat form
yang dibuat tak bisa diubah lagi
isinya.
self.layout.addRow(self.buku, Digunakan untuk menambah baris.
self.line1)
self.setLayout(self.layout) Digunakan untuk perintah untuk
menampilkan layout yang telah
diatur.
try: Digunakan untuk membuat sebuah
if str(hrg_unit)=='spv.HRD':
a = 10000000 script perandaian bernilai benar pada
list pertama dengan input 'spv.HRD'
elif str(hrg_unit)=='spv.IT': Digunakan untuk perintah untuk
a = 15000000
menampilkan layout yang telah
diatur
else: Digunakan untuk membuat sebuah
a = 0
script perandaian bernilai benar pada
list pertama dengan input 'spv.IT'
self.line3.setText(str(a)) Digunakan untuk membuat sebuah
script perandaian bernilai benar pada
list selanjutnya dengan inputan
tersedia.
except: Digunakan untuk membuat sebuah
print('False')
script perandaian bernilai salah pada
list selanjutnya dengan inputan
tersedia.
upah =float(self.line3.text()) Digunakan untuk menampilkan data
dengan tipe data string.
totalgaji = upah + bonus Digunakan sebagai rumus
perhitungan dari data upah dan
bonus.
pesan =QMessageBox.question(self, Digunakan untuk sebuah pesan
'PERINGATAN', "Anda Yakin Ingin
Menghapus?", pertanyaan pada tombol yang
bernilai yes atau no.
QMessageBox.Yes |QMessageBox.No)

2.2.4 Program Menu Transaksi AVO TECHNOLOGY


Program kalkulator adalah sebuah program yang di dalamnya menjalankan
program perhitungan. Yang mana pada pilihan menu kedua dari program kalkulator
saya adalah transaksi. Berarti ditujukan untuk memberikan sebuah perhitungan
tentang penjualan buku yang terjadi.
a) Hasil Running Program Transaksi
Hasil Running Program Transaksi dapat dilihat pada gambar 2.3
Gambar 2.4 Hasil Running Transaksi
Analisis :
Tampilan di atas merupakan hasil Running submenu Transaksi. Dimana
ddialamnya terdiri atas transaksi yang dilakukan penjual dan pembeli mulai dari
waktu transaksi, jenis produk yang dibeli, harga barang, jumlah permintaan,
discount, harga barang setelah dipotong discount, dan yang terakhir bayar.

b) Script Program Transaksi


import sys
from PySide2.QtGui import*
from PySide2.QtCore import*
from PySide2.QtWidgets import*
class transaksi(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('Transaksi')
frame=self.frameGeometry()
Tengah=QDesktopWidget().availableGeometry().center()
frame.moveCenter(Tengah)
self.resize(500,400)
icon=QIcon('transaksi.png')
self.setWindowIcon(icon)
self.setStyleSheet("background-color:lavender;")
self.data()
self.data2()
self.data3()
self.layout()

def data(self):
self.tanggal = QLabel('Tanggal :',self)
self.produk = QLabel('Jenis Produk :',self)
self.harga = QLabel('Harga :',self)
self.permintaan = QLabel('Jumlah Permintaan :',self)
self.pajak = QLabel('Discount(%) :',self)
self.total = QLabel('Harga Barang :',self)
self.pendapatan = QLabel('Bayar :',self)

def data2(self):
self.line1 = QDateEdit(self)
self.line2 = QComboBox(self)
self.line2.addItems(['Miraculous Retinol Series','BLP X Avoskin
Multipurpose Tinted Sunscreen 5gr-Medium',
'BLP X Avoskin Multipurpose
Tinted Sunscreen 5gr - beige','BLP X Avoskin Multipurpose Tinted Sunscreen
30gr-sand',
'Miraculous Retinol Sheet
Mask','Miraculous Refining AHA-BHA-PHA Sheet Mask',
'Natural Sublime Facial
Cleanser','The Great Shield Sunscreen 5ml','Perfect Hydrating Treatment
Essence 100ml',
'Silky Luz The Bohemian Soap'])
self.line2.activated[str].connect(self.hitung1)
self.line3 = QLineEdit(self)
self.line4 = QSpinBox(self)
self.line5 = QLineEdit(self)
self.line6 = QLineEdit(self)
self.line6.setReadOnly(True)
self.line7 = QLineEdit(self)
self.line7.setReadOnly(True)

def data3(self):
self.hitung = QPushButton('Count',self)
self.hitung.clicked.connect(self.hitung2)
self.hps = QPushButton('Delete',self)
self.hps.clicked.connect(self.hapus)
self.back = QPushButton('Home',self)
self.back.clicked.connect(self.kembali)

def layout(self):
self.layout=QFormLayout()
self.layout.addRow(self.tanggal,self.line1)
self.layout.addRow(self.produk,self.line2)
self.layout.addRow(self.harga,self.line3)
self.layout.addRow(self.permintaan,self.line4)
self.layout.addRow(self.pajak,self.line5)
self.layout.addRow(self.total,self.line6)
self.layout.addRow(self.pendapatan,self.line7)
self.layout.addRow(self.hitung)
self.layout.addRow(self.hps)
self.layout.addRow(self.back)
self.setLayout(self.layout)

def hitung1(self,hrg_unit):
try:
if str(hrg_unit)=='Miraculous Retinol Series':
a = 404000
elif str(hrg_unit)=='BLP X Avoskin Multipurpose Tinted
Sunscreen 5gr-Medium':
a = 59000
elif str(hrg_unit)=='BLP X Avoskin Multipurpose Tinted
Sunscreen 5gr - beige':
a = 59000
elif str(hrg_unit)=='BLP X Avoskin Multipurpose Tinted
Sunscreen 30gr-sand':
a = 189000
elif str(hrg_unit)=='Miraculous Retinol Sheet Mask':
a = 35000
elif str(hrg_unit)=='Natural Sublime Facial Cleanser':
a = 98000
elif str(hrg_unit)=='Silky Luz The Bohemian Soap':
a = 39000
elif str(hrg_unit)=='Miraculous Refining AHA-BHA-PHA Sheet
Mask':
a = 35000
elif str(hrg_unit)=='The Great Shield Sunscreen 5ml':
a = 50000
elif str(hrg_unit)=='Perfect Hydrating Treatment Essence
100ml':
a = 270000
else:
a = 0
self.line3.setText(str(a))
except:
print('False')

def hitung2(self):
hrg_unit=float(self.line3.text())
permintaan=float(self.line4.text())
pendapatan=float(self.line4.text())
pajak=float(self.line5.text())
barang=hrg_unit*permintaan
self.line6.setText(str(barang))
pendapatan=barang-((pajak/100)*barang)
self.line7.setText(str(pendapatan))

def hapus(self):
pesan = QMessageBox.question(self,'PERINGATAN!',"Anda Yakin Ingin
Menghapus Data?" ,
QMessageBox.Yes | QMessageBox.No)
if pesan == QMessageBox.Yes:
from transaksi import transaksi
self.a = transaksi()
self.a.show()
self.hide()
if pesan == QMessageBox.No:
pass

def kembali(self):
from mainmenu import menu
self.b = menu()
self.b.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
ex=transaksi()
ex.show()
sys.exit()

2.2.5 Program Menu Daftar Produk AVO TECHNOLOGY


Tampilan di atas termasuk hasil Running submenu dari menu Data yang
pertama yaitu Daftar Buku Sakura. Di dalamnya berisi data-data dari nama buku
lengkap dengan nama pengarang dan harganya.

a) Hasil Running Program Daftar Produk


Hasil Running Program Daftar Produk dapat dilihat pada gambar 2.6 dibawah
ini
Gambar 2.6 Hasil Running Daftar Produk

Analisis:
Pada hasil running program daftar produk ini didalamnya terdapat daftar-daftar
produk, nomor produk, harga produk, stock produk, dan permintaan perharinya
sehingga program ini sangat membantu dalam melihat dat-data produk barang.

b) Script Daftar Produk


import sys
from PySide2.QtGui import*
from PySide2.QtCore import*
from PySide2.QtWidgets import*

class produk(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('DAFTAR PRODUK')
frame=self.frameGeometry()
tengah=QDesktopWidget().availableGeometry().center()
frame.moveCenter(tengah)
self.resize(1055,380)
self.setStyleSheet("background-color:khaki;")
icon=QIcon('daftarproduk.png')
self.setWindowIcon(icon)
retail=QLabel(self)
label=QLabel('<h2>DAFTAR PRODUK</h2>',self)
label.setFont(QFont('Times New Roman',8))
label.move(460,20)
self.konten()
self.push()

def konten(self):
konten=QTableWidget(self)
konten.setRowCount(10)
konten.setColumnCount(5)
konten.setGeometry(50,75,955,210)
konten.show()
data_produk = {'Nomor Produk':
['3a','3b','3c','3d','3e','3f','3g','3h','3i','3j',
'Daftar Produk': ['Miraculous Retinol
Series','BLP X Avoskin Multipurpose Tinted Sunscreen 5gr-Medium',
'BLP X Avoskin Multipurpose
Tinted Sunscreen 5gr - beige','BLP X Avoskin Multipurpose Tinted Sunscreen
30gr-sand ',
'Miraculous Retinol Sheet Mask
','Miraculous Refining AHA-BHA-PHA Sheet Mask ',
'Natural Sublime Facial
Cleanser ','The Great Shield Sunscreen 5ml ','Perfect Hydrating Treatment
Essence 100ml ',
'Silky Luz The Bohemian Soap ']
,
'Harga':
['404.000','59.000','59.000','189.000','35.000',

'35.000','98.100','50.000','270.000','39.000'],
'Stok' :
['69','119','45','76','38','98','56','30','60','35'] ,
'Permintaan/hari' :
['5','23','36','10','45','33','23','6','21','11']}
headers=[]
for r,key in enumerate(data_produk.keys()):
headers.append(key)
for i,tabel in enumerate(data_produk[key]):
isi=QTableWidgetItem(tabel)
konten.setItem(i,r,isi)
konten.setHorizontalHeaderLabels(headers)
konten.resizeColumnsToContents()
konten.resizeRowsToContents()

def push(self):
back1=QPushButton('HOME',self)
back1.setFont(QFont('Times New Roman',10))
back1.setGeometry(500,320,100,30)
back1.clicked.connect(self.kembali)

def kembali(self):
from mainmenu import menu
self.kembali=menu()
self.kembali.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
form=produk()
form.show()
sys.exit()

c) Analisis Script Program Daftar Produk


Analisis Script Program Daftar Produk dapat dilihat pada tabel 2.3
Tabel 2.3 Analisis Script Program Daftar Produk
Script Keterangan
konten=QTableWidget(self) Digunakan untuk membuat tabel di
window
konten.setRowCount(10) Digunakan untuk membuat baris tabel
sebanyak 10 baris
konten.setColumnCount(5) Digunakan untuk kolom sebanyak 5 kolom
konten.setGeometry(50,75,955,210) Digunakan untuk konfikurasi x sebesar
(50,955) dan y sebesar (75,210)
konten.show() Digunakan untuk menampilkan tabel pada
window.
headers=[] Digunakan untuk membuat variable
kosong pada header
Script Keterangan
data_produk = {'Nomor Digunakan untuk Isi tabel berupa tipe data
Produk': ['3a','3b..]}
list yang ada didalam dictionary.

for r,key in enumerate (data_ Digunakan untuk memisahkan atau


produk.
keys ()): membagi anggota didalam dictionary
menjadi beberapa bagian.
headers.append(key) Digunakan untuk menambah data dan
diletakkan dibelakang data sebelumnya.
isi=QTableWidgetItem(tabel) Digunakan untuk mengambil library
widget item.
konten.setItem(i,r,isi) Digunakan untuk mengatur isi dari konten.
konten.setHorizontalHeaderLabels Digunakan untuk memberikan label header
(headers)
secara horizontal
konten.resizeColumnsToContents() Digunakan untuk mengatur ukuran kolom
tabel sesuai dengan isi
konten.resizeRowsToContents() Digunakan untuk mengatur ukuran baris
tabel sesuai dengan isi

2.2.6 Program Menu Daftar Karyawan AVO TECHNOLOGY


Program Data adalah sebuah program yang didalamnya berisi daftar nama
buku dan nama karyawan. Untuk program data kedua ini membahas tentang daftar
karyawan sakura lengkap dengan posisi kerja. Tujuannya mempermudah dalam
memberikan tugas kerja.

a) Hasil Running Program Daftar Karyawan


Hasil Running Program Daftar Karyawan dapat dilihat pada gambar 2.5

Gambar 2.5 Hasil Running Daftar Karyawan


Analisis :
Tampilan di atas merupakan hasil Running Daftar Karyawan di AVO
TECHNOLOGY. Program ini berisi data-data dari nama karyawan, posisi bekerja,
domisili, devisi, dan NIK mereka.

b) Script Program Daftar Karyawan


import sys
from PySide2.QtGui import*
from PySide2.QtCore import*
from PySide2.QtWidgets import*

class karyawan(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('DAFTAR KARYAWAN')
frame=self.frameGeometry()
tengah=QDesktopWidget().availableGeometry().center()
frame.moveCenter(tengah)
self.resize(580,380)
self.setStyleSheet("background-color:khaki;")
icon=QIcon('daftarkaryawan.png')
self.setWindowIcon(icon)
retail=QLabel(self)
label=QLabel('<h2>DAFTAR KARYAWAN</h2>',self)
label.setFont(QFont('Times New Roman',8))
label.move(180,20)
self.dftr_krywn()
self.button()

def dftr_krywn(self):
konten=QTableWidget(self)
konten.setRowCount(10)
konten.setColumnCount(5)
konten.setGeometry(50,75,495,210)
konten.show()
daftar_karyawan = {'Nama':
['Aisyahna','Dodit','Elisabeth','Fransiska','Gendis',

'Heriawan','Risna','Raja','Ratu','Satriwan'] ,
'Jabatan':
['Supervisor','Supervisor','Staff','Supervisor','Staff','Staff','Super
visor','Staff','Staff','Staff'] ,
'Domisili':
['Salatiga','Solo','Jakarta','Bekasi','Bogor','Depok','Tangerang','Sem
arang','Boyolali','Pati']
'Divisi': :
['HRD','IT','IT','Accounting','Accounting','Administrator','Engineerin
g','Administrator','Engineering','Accounting'] ,
'NIK': :
['A101','C091','C122','B211','B112','D108','E031','D093','E071','B314'
]}
headers=[]
for r,key in enumerate(daftar_karyawan.keys()):
headers.append(key)
for i,tabel in enumerate(daftar_karyawan[key]):
isi=QTableWidgetItem(tabel)
konten.setItem(i,r,isi)
konten.setHorizontalHeaderLabels(headers)
konten.resizeColumnsToContents()
konten.resizeRowsToContents()
def button(self):
back1=QPushButton('HOME',self)
back1.setFont(QFont('Times New Roman',10))
back1.setGeometry(240,320,100,30)
back1.clicked.connect(self.kembali)

def kembali(self):
from mainmenu import menu
self.kembali=menu()
self.kembali.show()
self.hide()

if __name__=='__main__':
app=QApplication(sys.argv)
form=karyawan()
form.show()
sys.exit()

2.2.7 Program Menu Data Masuk AVO TECHNOLOGY


Program Data adalah sebuah program yang didalamnya berisi daftar nama
barang dan nama karyawan. Untuk program data ini membahas tentang Prograam
masuk lengkap dengan username, password, dan email. Tujuannya mempermudah
dalam input data karyawan, Hasil Running Program Masuk dapat dilihat pada
gambar 2.7
a) Hasil Running Program Masuk

Gambar 2.7 Hasil Running Program Masuk

Analisis :
Program Masuk diatas didalamnya menjalankan data untuk login atau
masuk dimana utuk masuk kita harus memasukan username, password, dan email
lalu baru bisa login kedalamya.

b) Script Program Masuk


import sys
from PySide2.QtGui import*
from PySide2.QtCore import*
from PySide2.QtWidgets import*
class Login(QWidget):
def __init__(self):
QWidget.__init__(self)
self.setWindowTitle('Login Form')
icon = QIcon('Login.png')
self.setWindowIcon(icon)
self.resize(500,200)
self.setStyleSheet("background-color:white;")

layout = QGridLayout()
label_name = QLabel('<font size ="4">Username</font>')
self.lineEdit_username = QLineEdit()
self.lineEdit_username.setPlaceholderText('Please Input Your
Username')
layout.addWidget(label_name,0,0)
layout.addWidget(self.lineEdit_username,0,1)

label_password = QLabel('<font size ="4">Password</font>')


self.lineEdit_password = QLineEdit()
self.lineEdit_password.setPlaceholderText('Please Input Your
Password')
layout.addWidget(label_password,1,0)
layout.addWidget(self.lineEdit_password,1,1)

label_email = QLabel('<font size ="4">Email</font>')


self.lineEdit_email = QLineEdit()
self.lineEdit_email.setPlaceholderText('Please Input Your Email')
layout.addWidget(label_email,2,0)
layout.addWidget(self.lineEdit_email,2,1)

button_login = QPushButton('Login')
button_login.clicked.connect(self.cek_password)
layout.addWidget(button_login,9,0,6,2)
layout.setRowMinimumHeight(2,30)
self.setLayout(layout)

def cek_password(self):
msg = QMessageBox()
if self.lineEdit_username.text()=='D600200157' and
self.lineEdit_password.text()=='D600200157':
msg.setText('SUKSES')
msg.exec_()

from mainmenu import menu


self.a=menu()
self.a.show()
self.hide()
else:
msg.setText('SANDI/USERNAME SALAH')
msg.exec_()

if __name__=='__main__':
app = QApplication(sys.argv)
form = Login()
form.show()
sys.exit(app.exec_())
c) Analisis Script Program Masuk
Analisis Script Program Masuk dapat dilihat pada tabel 2.4
Tabel 2.4 Analisis Script Program Masuk
Script Keterangan
if Digunakan ebagai perandaian apabila
self.lineEdit_username.text
()== memasukkan password dan username yang
'D600200157' tertuliskan maka akan muncul label
And ‘SUKSES’
self.lineEdit_password.text
()
=='D600200174':

msg.setText('SUKSES')
msg.setText('SANDI/USERNAME Digunakan apabila memasukkan password
SALAH')
dan username salah maka akan muncul
label ‘SANDI/USERNAME SALAH’

msg.exec_() Digunakan untuk memanggil fungsi


self.lineEdit_username.setP Digunakan untuk menuliskan teks pada tag
laceholderText('Please Input
Your Username') input HTML
self.lineEdit_password = Digunakan untuk memanggil fungsi
QLineEdit()
2.2 Penutup
2.3.1 Kesimpulan
Kesimpulan dari Praktikum Programa Komputer Modul yang telah dilaksanakan
ini adalah:
a. PySide2 merupakan sebuah modul tambahan dari Python yang dilengkapi class-
patform GUI Qt5 yang merupakan lanjutan dari PySide sebelumnya.
b. GUI merupakan sebuah media virtual yang menggunakan icon tampilan sebagai
media printa tanpa repot mengetik lagi.
c. Dalam membuat tombol tekan dalam tampilan kita menggunakan perintah
“QPushButton”
d. Untuk menghubungkan sebuah tombol dengan sebuah perintah lainnya
digunakan inputan “clicked.connect”
e. Untuk membuat sebuah label text dalam PySide2 digunakan inputan “QLabel”,
serta jika ingin inputa label text tidak bisa dirubah-rubah maka tambahkan
sebuah inoutan “setReadOnly(True)”.

2.3.2 Saran
Saran dari praktikum modul II yang telah dilaksanakan adalah:
a. Video praktikum ditambah subtitle agar lebih jelas.
b. Dalam penjelasan materi bisa ditambahkan backsound agar tidak bosan bagi
pendengarnya dengan catatan memperhatikan volume backsound..
c. Dalam penyampaian materi lebih padat dan ringkas agar tidak memakan banyak
waktu.
d. Untuk post tes materi waktu pengerjaanya bisa diperpanjang lagi.
e. Terkait tugas pendahuluan, saat pembuatan program lebih baik diberi refrensi
cara pembuatanya.
LEMBAR KEGIATAN ASISTENSI
PRAKTIKUM PEMROGRAMAN KOMPUTER
JURUSAN TEKNIK INDUSTRI

Modul : I (Pyton GUI dengan Pyside2)


Kelompok : 05
Nama Anggota : 1. Rianata Divaseptya Ekasanti (D600200157)
2. Ivan Nanda Prayoga (D600200174)
Asisten : Rima Amalia
NO TANGGAL KETERANGAN PARAF
1. 8 Juni 2021 - Program diperbaiki
- Lembar asistensi
diperbaiki
- Laporan lanjutkan dan
dirapikan

2. 9 Juni 2021 - Program ACC


- Cek margin
- Penggunaan bahasa asing
diitalic
- Laporan diperbaiki dan
lanjutkan
- Format laporan dibaca
lagi.

Anda mungkin juga menyukai