Membuat GUI Sederhana dengan PyQt5: Tutorial QGridLayout untuk Pemula Part 1

 

**Pendahuluan**  

PyQt5 adalah salah satu library Python terbaik untuk membangun antarmuka grafis (GUI) yang interaktif. Dalam artikel ini, kita akan membuat aplikasi desktop sederhana menggunakan **QGridLayout**—sebuah komponen tata letak yang memungkinkan penempatan widget (seperti tombol, label, dll.) dalam bentuk grid (baris dan kolom). Kode ini cocok untuk pemula yang ingin memahami dasar-dasar PyQt5 dan manajemen tata letak.  


---


### **Struktur Proyek**  

Proyek ini terdiri dari dua file:  

1. **`main.py`**: File utama untuk menjalankan aplikasi.  

2. **`MainForm.py`**: File yang berisi logika GUI dan tata letak.  


---


### **File `main.py`**  

```python

#!/usr/bin/python3


#########################################################

# Nama file: main.py

#########################################################


import sys

from PyQt5.QtWidgets import QApplication


from MainForm import *


if __name__ == '__main__':

   a = QApplication(sys.argv)     # Inisialisasi aplikasi Qt

   form = MainForm()              # Membuat objek form

   form.show()                    # Menampilkan form

   a.exec_()                      # Memulai event loop aplikasi

```  


**Penjelasan Kode:**  

1. **`QApplication(sys.argv)`**: Membuat instance aplikasi Qt. Argumen `sys.argv` digunakan untuk menangani parameter command line.  

2. **`MainForm()`**: Membuat objek dari kelas `MainForm` yang didefinisikan di `MainForm.py`.  

3. **`form.show()`**: Menampilkan window GUI ke layar.  

4. **`a.exec_()`**: Memulai event loop untuk menjaga aplikasi tetap berjalan sampai pengguna menutupnya.  


---


### **File `MainForm.py`**  

```python

#########################################################

# Nama file: MainForm.py

#########################################################


from PyQt5.QtWidgets import QWidget, QPushButton, QGridLayout


class MainForm(QWidget):

   def __init__(self):

      super().__init__()          # Memanggil konstruktor parent class (QWidget)

      self.setupUi()              # Memanggil metode untuk menyusun UI

      

   def setupUi(self):

      # Konfigurasi window utama

      self.resize(300, 100)       # Ukuran window (lebar, tinggi)

      self.move(300, 300)         # Posisi window di layar (x, y)

      self.setWindowTitle('Demo QGridLayout')  # Judul window


      # Membuat 4 tombol

      self.button1 = QPushButton('Button 1')

      self.button2 = QPushButton('Button 2')

      self.button3 = QPushButton('Button 3')

      self.button4 = QPushButton('Button 4')

      

      # Membuat layout grid dan menambahkan tombol

      layout = QGridLayout()

      layout.addWidget(self.button1, 0, 0)  # Baris 0, Kolom 0

      layout.addWidget(self.button2, 0, 1)  # Baris 0, Kolom 1

      layout.addWidget(self.button3, 1, 0)  # Baris 1, Kolom 0

      layout.addWidget(self.button4, 1, 1)  # Baris 1, Kolom 1

      

      self.setLayout(layout)      # Mengatur layout untuk window utama

```  


**Penjelasan Kode:**  

1. **`QWidget`**: Kelas dasar untuk membuat window GUI.  

2. **`QGridLayout()`**: Layout yang mengatur widget dalam bentuk grid (baris dan kolom).  

3. **`addWidget()`**: Metode untuk menambahkan widget ke grid dengan parameter `(baris, kolom)`.  

   - Contoh: `layout.addWidget(self.button1, 0, 0)` menempatkan `button1` di baris 0, kolom 0.  

4. **`setLayout(layout)`**: Menerapkan layout ke window utama.  


**Hasil Tampilan:**  

```

---------------------------

|      Button 1 | Button 2 |

|--------------------------|

|      Button 3 | Button 4 |

---------------------------

```  


---


### **Mengapa Menggunakan QGridLayout?**  

1. **Responsif**: Widget akan menyesuaikan ukuran secara otomatis ketika window di-resize.  

2. **Presisi**: Kontrol penuh atas posisi widget menggunakan sistem baris dan kolom.  

3. **Flexibel**: Mendukung penggabungan sel (row/column spanning) untuk desain kompleks.  


---


### **Cara Menjalankan Aplikasi**  

1. Pastikan PyQt5 sudah terinstall:  

   ```bash

   pip install PyQt5

   ```  

2. Simpan kedua file (`main.py` dan `MainForm.py`) dalam folder yang sama.  

3. Jalankan melalui terminal:  

   ```bash

   python main.py

   ```  


---


### **Tips untuk Pemula**  

1. **Eksperimen dengan Grid**: Coba ubah nilai baris dan kolom di `addWidget()` untuk melihat perubahannya.  

   Contoh:  

   ```python

   layout.addWidget(self.button1, 0, 0)  

   layout.addWidget(self.button2, 0, 1)  

   layout.addWidget(self.button3, 0, 2)  # Menambahkan kolom ketiga

   ```  

2. **Tambahkan Widget Lain**: Coba ganti `QPushButton` dengan widget lain seperti `QLabel` atau `QLineEdit`.  

3. **Pelajari Layout Lainnya**: PyQt5 menyediakan layout alternatif seperti `QVBoxLayout` (vertikal) dan `QHBoxLayout` (horizontal).  


---


### **Kesimpulan**  

Dengan PyQt5 dan QGridLayout, Anda bisa membuat GUI yang terstruktur dan responsif hanya dengan beberapa baris kode. Latih kemampuan Anda dengan menambahkan lebih banyak widget atau menggabungkan beberapa jenis layout. Jika mengalami error, pastikan semua widget sudah ditambahkan ke layout dan tidak ada typo pada nama variabel.  


**Selamat mencoba!** 🚀  


---  

**Bacaan Lanjutan:**  

- [Dokumentasi Resmi PyQt5](https://www.riverbankcomputing.com/static/Docs/PyQt5/)  

- [Tutorial QGridLayout Lengkap](https://www.pythonguis.com/tutorials/pyqt-layouts/)

Komentar