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
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.
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.
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()
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()
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()
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.
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 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()
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()
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.
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()
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()
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.
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)
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_()
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’
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