Asisten :
Fahri Dwi Hariyadi 11211037
Disusun Oleh :
Zain Achmad Kahfi 05221022
15 Mei 2023
Dasar Teori
Pada minggu ini kami praktikum modul 13 yang berjudul PyQt5 : LayOut. Tujuan
dilakukannya praktikum modul ini yaitu praktikan diharapkan mampu menggunakan layout pada
PyQt5.
CORELAP (Computerized Relationship Layout Technique) yaitu salah satu dari algoritma
konstruksi yang menentukan penyusunan tata letak yang setiap departemen prinsip kerjanya
menggunakan perhitungan TCR (Total Closeness Rating). TCR merupakan jumlah nilai-nilai
numerik yang menyatakan hubungan kedekatan antardepartemen. Hubungan ini terlihat dari
huruf masing- masing yang telah diberi bobot. Bobot kedekatan yang digunakan yaitu:
A = 6 (Mutlak harus dekat)
B = 5 (Sangat penting didekatkan) I = 4 (Penting didekatkan)
O = 3 (Dapat didekatkan)
U = 2 (Tidak penting didekatkan) X = 1 (Dihindari untuk didekatkan)
Termasuk hal yang penting dalam pemrograman berbasis GUI adalah managemen layout.
Managemen layout adalah suatu teknik atau cara bagaimana kita meletakkan widget-widget di
atas window. Managemen layout tersebut bisa dilakukan dengan dua cara: dengan absolute
positioning atau layout classes[1].
• Absolute Positioning
Yaitu dengan cara kita mendefinisikan widget-widget dengan koordinat-koordinat absolute
secara manual. Kita bisa menempatkan tombol di koordinat tertentu, lalu menempatkan widget
lain di koordinat yang lain. Akan tetapi, dengan absolute positioning, ada beberapa kekurangan
yang harus kita ketahui terlebih dahulu [2]. Ukuran dan posisi dari widget tidak akan berpindah
dan berubah apa bila ukuran window berubah.Penampilan aplikasi kemungkinan besar akan
berbeda di platform yang berbeda. Jika kita mengganti font, itu bisa merusak/mengganggu
kesuluruhan penampilan layout. Jika kita berkeinginan untuk mengubah tampilan layout, maka
kita perlu mengubah satu-persatu widget yang ada pada layout. Dan ini akan menghabiskan waktu
serta tenaga yang banyak.
Layout Classes
Dengan menggunakan kelas layout, memanajemen layout pada window jadi lebih mudah dan
praktis. Ini adalah cara yang direkomendasikan. Management layout pada PySide yang paling
dasar adalah dengan menggunakan kelas PySide.QtGui.QHBoxLayout dan QtGui.QVBoxLayout.
Keduanya menatawidget secara horizontal dan vertikal di window.
Box Layout
Kelas Pyside.QtGui.QBoxLayout menempatkan widget-widget pada window secara horizontal
atau secara vertikal [4]. Ia mengambil ruang kosong dari parent layout, lalu membagi-baginya
menjadi kotak-kotak, dan tiap kotak-kotak tersebut akan diisi oleh widget.
1
2
Source Code
No. Kalku.py
1. import sys
14. self.setWindowTitle("Kalkulator")
18. self.setCentralWidget(self._centralWidget)
19. self._centralWidget.setLayout(self.generalLayout)
20. self._createDisplay()
21. self._createButton()
24. self.display.setFixedHeight(35)
25. self.display.setAlignment(Qt.AlignRight)
26. self.display.setReadOnly(True)
3
27. self.generalLayout.addWidget(self.display)
29. self.buttons = {}
32. (0, 2), '/': (0, 3), 'C': (0, 4), '4': (1, 0), '5': (1,
1), '6': (1, 2), '*': (1, 3), '(': (1, 4), '1': (2,
33. (2, 1), '3': (2, 2), '-': (2, 3), ')': (2, 4), '0': (3,
0), '00': (3, 1),'.': (3, 2), '+': (3, 3), '=': (3,
34.
38. buttonsLayout.addWidget(self.buttons[btnText],
40.
41. self.generalLayout.addLayout(buttonsLayout)
43. self.display.setText(text)
44. self.display.setFocus()
48. self.setDisplayText('')
49.
54. self._connectSignals()
56. result =
self._evaluate(expression=self._views.displayText())
57. self._views.setDisplayText(result)
4
59. if self._views.displayText() == ERROR_MSG:
60. self._views.clearDisplay()
62. self._views.setDisplayText(expression)
66. btn.clicked.connect(partial(self._buildExpression,
btnText))
67.
68.
self._views.buttons['='].clicked.connect(self._calculateResult)
69.
70.
self._views.display.returnPressed.connect(self._calculateResult)
71.
self._views.buttons['C'].clicked.connect(self._views.clearDisplay)
72.
75. try:
80.
84. views.show()
90. main()
5
Screenshot
1. Tampilan awal program, ketika user menjalankan program, program akan menampilkan layout kalkulator yang
siap digunakan.
Tampilan program, ketika user mengkalkulasi angka maka program akan memproses perhitungan tersebut
dan menghasilkansebuah hasil sebagai berikut.
6
Pembahasan
Kalkulator.py
No. Penjelasan
11-13 Membuat class Bernama CalcUI yang akan berisi layout aplikasi kalkulator
28-41 Membuat fungsi untuk menampilkan tombol (button) yang umum tersedia pada kalkulator
42-49 Program untuk menampilkan input berupa tombol yang di klik oleh user ke output pada
display
50-54 Membuat class Bernama CalcController yang akan berisi operasi matematika serta
koneksi antar class
7
Kesimpulan
Adapun kesimpulan yang dapat diperoleh dalam praktikum Algoritman dan Pemrograman yaitu, PyQt merupakan
suatu lintasan GUI perangkat Qt yang mengikat Python, dan diimplementasikan sebagai plug-in. Selain itu, PyQt
juga menyediakan sejumlah widget seperti tombol, label, textbox dan lain lain yang diperlukan untuk merancang
sebuah GUI. PyQt5 memiliki istilah widget yang digunakan Qt sebagai objek antarmuka utama. Pengguna dapat
berinteraksi langsung dengan antarmuka pengguna grafis melalui widget yang disediakan oleh PyQt5. Antarmuka
dapat terdiri dari beberapa widget yang dipasang di jendela utama. PyQt5 memiliki metode untuk penempatan
widget secara otomatis yang disebut layout. Ada berbagai jenis layout, seperti horizontal, vertikal, dan grid.
Pengaturan widget dapat dioptimalkan menggunakan tata letak.
Saran
Saran saya adalah agar kakak asdos serta asprak tetap semangat dalam menjalankan
amanahnya mengajari kami mengenai pemrograman. Mohon maaf apabila selama praktikum
kami ada kesalahan dan terimakasih telah mengajari kami para praktikan. Sekian terimakasih.
8
Daftar Pustaka
Huda, N. (2017, September). Management Layout Pada PySide. Retrieved from jagongoding:
https://jagongoding.com/python/pyside/management-layout-pada-pyside/