Anda di halaman 1dari 10

TECHNICAL REPORT

PEMROGRAMAN DESKTOP
MODUL 1

Disusun Oleh :

TGL. PRAKTIKUM : 5 Novemebr 2020


NAMA : Prasetyo Adi Pratama Nugroho
NRP : 190411100072
KELOMPOK :2
DOSEN : Dian Neipa Purnamasari, M .Tr.T

TELAH DISETUJUI TANGGAL :


...........................................
ASISTEN PRAKTIKUM

Iffatus Syahrani
(NIM)

LABORATORIUM MULTIMEDIA COMPUTING


JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO MADURA
BAB I
TUJUAN DAN DASAR TEORI

A. TUJUAN
1. Mahasiswa mampu mengetahui dasar modul didalam PyQt5
2. Mahasiswa mampu membuat program GUI sederhana

B. DASAR TEORI
PyQt adalah toolkit GUI crossplatform, yang diimplementasikan sebagai
plug-in di python dengan komponen-komponen yang banyak sekali
didalamnya untuk mempermudah membuat program berbasis GUI.
Penjelasan Class dan Object, Class adalah tipe data yang tidak hanya
berisi data tetapi juga method, sedangkan object merupakan variable dengan
typedata class.
BAB II
PEMBAHASAN

A. SOAL
1. Dengan coding (tanpa qtdesigner), Buat tampilan seperti berikut
a.

b.

B. JAWABAN
1. Code Program
a. import sys
from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout,
QPushButton, QStyleFactory

class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Angka')
self.setLayout(QGridLayout())
self.tampilan()
self.show()

def tampilan(self):
container = QWidget()
container.setLayout(QGridLayout())

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

self.layout().addWidget(container)

self.show()

app = QApplication([])
mw = MainWindow()
app.setStyle(QStyleFactory.create('Fusion'))
app.exec_()

b. import sys
from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout,
QPushButton, QStyleFactory

class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Calculator')
self.setLayout(QGridLayout())
self.tombol()

self.show()

def tombol(self):
container = QWidget()
container.setLayout(QGridLayout())
tombol = ['Cls','Bck','','Close',
'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0','.','=','+']

#MEMBUAT LIST DENGAN NILAI DARI X BERASAL DARI FOR X IN


RANGE(5) DAN Y BERASAL DARI FOR Y IN RANGE(4)
#HASILNYA NANTI AKAN MENJADI POSISI = [(0,0),(0,1),
(0,2),DST]
posisi = [(x,y) for x in range(5) for y in range(4)]

for pos,tmbl in zip(posisi,tombol):#MEMAKAI ZIP UNTUK


MENGGABUNGKAN 2 LIST DAN DI LOOPING SECARA BERSAMAN
if tmbl != '':
container.layout().addWidget(QPushButton(tmbl),
*pos)#PAKAI BINTANG BIAR NILANYA TERBACA

self.layout().addWidget(container)

self.show()

app = QApplication([])
mw = MainWindow()
app.exec_()

B. Penjelasan Code Program


1. yang a
a. untuk pertama saya import modul sys dan modul yang ada di PyQt5
b. lalu membuat class MainWindow dengan parameter QWidget
c. lalu membuat method __init__ untuk inisialisasi class, didalam method
__init__ terdapat syntax super().__init__()
d. lalu set nama window dari program dengan syntax
self.setWindowTitle(‘Angka’)
e. lalu set type layout yang digunakan, saya menggunakan type grid
layout dengan syntax self.Layout(QGridLayout())
f. lalu saya memanggil method yang saya buat dengan nama tampilan()
dimana disitulah saya membuat tampilannya
g. self.show untuk menampilkan
h. membuat method tampilan, lalu membuat variable container dengan
typedatanya QWidget untuk tempat mengatur layout
i. lalu langsung menambahkan Widget didalam variable container
dengan syntax
container.layout().addWidget(QWidget,x,y,rows,columns), dimana
ada 5 parameter QWidget adalah Widget yang ditambahlan. Lalu x, y
untuk penempatan. rows dan columns untuk seberapa panjang ukuran
widget tersebut
j. lalu menambahkan variable container kedalam method tampilan agar
bisa ditampilkan saat dipanggil dimethod __init__
k. self.show untuk menampilkan
l. lalu menambahkan variable app = QApplication([]) agar program bisa
berjalan
m. memanggil class MainWindow()
n. lalu syntax app.exec_() untuk mengeksekusi program agar berjalan
terus hingga user menutup program tersebut.
2. yang b
a. untuk pertama saya import modul sys dan modul yang ada di PyQt5
b. lalu membuat class MainWindow dengan parameter QWidget
c. lalu membuat method __init__ untuk inisialisasi class, didalam
method __init__ terdapat syntax super().__init__()
d. lalu set nama window dari program dengan syntax
self.setWindowTitle(‘Calculator’)
e. lalu set type layout yang digunakan, saya menggunakan type grid
layout dengan syntax self.Layout(QGridLayout())
f. lalu saya memanggil method yang saya buat dengan nama tombol()
dimana disitulah saya membuat tampilan tombol kalkulatornya
g. didalam method tombola saya membuat variable container dengan
typedata QWidget dan menset type layout dengan Grid Layout
h. saya membuat list dari tombol-tombol yang akans aya tampilkan
didalam kalkulator secara berurutan sesuai dengan posisinya nanti agar
mudah mengaturnya
i. lalu saya membuat list dimana isi list tersebut adalah untuk
menentukan posisi dari tombol-tombol yang saya buat, karena
mengatur posisi dalam QWidget berdasarkan x, y maka dalam list
tersebut saya menggunakan looping.
j. posisi = [(x,y) for x in range(5) for y in range(4)] syntax ini
maksudnya nanti data dialam list saya akan seperti [(x,y),(x,y),
(x,y),dst] dimana nilai x diambil dari setiap iterasi (for x in range(5))
dan nilai y diambil dari setiap iterasi (for y in range(4)), untuk lebih
jelasnya jika syntax tersebut di print maka data yang keluar adalah
berupa list seperti [(0,0),(0,1),(0,2),…,(4,3)].
konsepnya jika diuraikan sama seperti nested loop seperti dibawah ini:
for x in range (5):
for y in range(4):
posisi.append(x,y)
k. lalu untuk mengatur posisi saya langsung menggunakan looping lagi,
syntaxnya for pos,tmbl in zip(posisi,tombol):
if tmbl != ‘’:
container.layout().addWidget(QPushButton(tmbl),
*pos)
saya menggunakan syntax zip, maksud dari syntax zip adalah
menggabungkan dua list dalam looping for untuk dilooping secara
bersamaa. jika diuraikan maka seperti menggabungkan 2 loop. missal:
- for pos in posisi:
(syntax selanjutnya)
- for tmbl in tombol:
(syntax selanjutnya)
syntax saya adalah menggabungkan dari 2 looping diatas, dimana
nanti nilai dari setiap index di variable posisi akan disimpan sementara
di variable pos, dan tombol disimpan didalam variable tmbl
l. didalam for saya melakukan penkondisian dengan if tmbl != ‘’: ,
maksudnya adalah jika variable tmbl tidak sama dengan ‘’ maka
program tidak akan melakukan perintah dibawah, dimana perintah
dibawah adalah untuk memasukkan widget dan mengatur posisi.
Untuk penambahan variable pos saya menggunakan *pos karena efek
dari di zip tadi maka type datanya akan berupa tuple dan harus
menggunakan *pos agar nilai dapat dibaca oleh program.
m. lalu menambahkan variable container ke tombol
n. self.show unutk menampilkan
o. lalu menambahkan variable app = QApplication([]) agar program bisa
berjalan
p. memanggil class MainWindow()
q. lalu syntax app.exec_() untuk mengeksekusi program agar berjalan
terus hingga user menutup program tersebut.

C. Hasil Running Program


a.
b.
BAB II
PENUTUP

A. Kesimpulan
1. Modul didalam PyQt5 sangat melengkapi kebutuhan untuk membuat
program berbasis GUI dalam bahasa Python
2. dalam membuat program GUI seperti diatas menggunakan metode OOP
lebih cepat daripada metode Procedural.

B. Saran
Perbanyak latihan dan mencoba membuat program meskipun hanya
program sederhana, jika menemukan source code milik orang lain ntah dari
teman, internet atau darimanapun sebaiknya pelajari source code tersebut
terlebih dahulu daripada langung mengcopas source code tersebut agar lebih
mengerti.

Anda mungkin juga menyukai