Jalankan QTDesigner dari PyChram untuk menghasilkan antarmuka GUI dan mengubahnya
menjadi file .py menggunakan PyUIC.
2.
Klik kanan file .ui yang sudah dibuat (guipertama.ui) dan pilih ExternalTools-> PyUIC di
daftar pop-up.
Langkah berikutnya adalah Buka File guipertama.py pada pycharm:
Hasilnya :
Memilih Jenis Form untuk Top Level Window:
Keterangan :
New, digunakan untuk membuat form baru
Open, digunakan untuk membuka file .ui yang sebelumnya sudah dibuat
Save, digunakan untuk menyimpan rancangan tampilan form ke dalam file .ui
Send to Back, digunakan untuk menempatkan control dibelakang control lainnya
Bring to Front, digunakan untuk menempatkan control di depan control lainnya
Edit Widgets, mode penyuntingan (edting) yang digunakan untuk melakukan pengaturn
control-kontrol di dalam form, seperti nama objek, pengaturan posisi objek (jika tidak
menggunakan layout), teks yang ditampilkan pada suatu objek tertentu, dan sebagainya.
Edit Signal/Slots, mode penyuntingan yang digunakan untuk melakukan pengaturan
signal dan slot dari control-kontrol yang ada di dalam form
Edit Buddies, mode penyuntingan untuk pembuatan buddy, misalnya kita dapat
mengkaitkan label tertentu dengan control lineEdit. Pada control label, dapat dilakukan
penambahan tanda & di depan huruf tertentu (misalnya huruf S). dengan cara ini, lineEdit
dapat diaktifkan hanya menekan tombol Alt+S
Edit Tab Order, mode penyuntingan untuk mengatur urutan tab. Melalui pengaturan
seperti ini, control-kontrol dapat diaktifkan melalui penekanan tombol Tab sesuai urutan
yang ditetapkan
Lay Out Horizontally, digunakan untuk mengatur control-kontrol (yang dipilih) di dalam
form secara horizontal
Lay Out Vertically, digunakan untuk mengatur control-kontrol (yang dipilh) di dalam
form seara vertical.
Lay Out Horizontally in Splitter, digunakan untuk mengatur control-kontrol (yang
dipilih) di dalam form secara horizontal disertai dengan control splitter ditengahnya.
Melalui cara ini, control di dalam form dapat diperbesar atau diperkecil dengan
menggeser splitter ke kiri atau ke kanan
Lay Out Vertically in Splitter, digunakan untuk mengatur control-kontrol (yang dipilih)
di dalam form secara vertikal disertai dengan control splitter ditengahnya. Melalui cara
ini, control di dalam form dapat diperbesar atau diperkecil dengan menggeser splitter ke
atas dan ke bawah
Lay Out in a Grid, digunakan untuk mengatur control-kontrol (yang dipilih) ke dalam
bentuk tabular atau grid.
Lay Out in Form Layout, digunakan untuk mengatur control-kontrol (yang dipilih)
menggunakan jenis form Layout.
Break Layout, digunakan untuk menghapus layout yang telah diterapkan untuk control-
kontrol tertentu
Adjust Size, digunakan untuk menyetel ukuran control-kontrol yang dipilih
2. Widget Box:
Adalah bagian yang berisi daftar control yang dapat ditempatkan ke dalam form. Control-kontrol
tersebut dikelompokkan berdasarkan kategori tertentu: Layouts, Spacers, dll. Untuk menempatkan
salah satu control dari Widget Box ke form dengan melakukan drag-and-drop ke dalam form.
3. Form
Adalah komponen utama di dalam Qt Designer yang merupakan wadah dari control-kontrol lain..
tampilan yang ada di bagian ini akan menjadi tampilan program
4. Object Inspector
Adalah bagian yang menunjukkan daftar control di dalam form. Kontrol-kontrol tersebut
ditampilkan secara hirarkis berdasarkan hubungan orang tua-anak (parent-child), seperti gambar
dibawah.
5. Property Editor
Digunakan untuk menentukan nilai-nilai property dari objek yang sedang aktif (objek yang sedang
dipilih di dalam form). Daftar properti yang ditampilkan pada property Editor tergantung dari kelas
atau jenis objek yang dipilih sebagai contoh. Prpoerty Editor akan menampilkan daftar property
yang berbeda untuk objek dari kelas QLineEdit dan QPushButton.
6. Action Editor
Bagian digunakan untuk membuat aksi-aksi yang nantinya dapat dikaitkan denan menu dan
toolbar. Dengan menunjuk ke satu aksi tertentu, suatu item menu dan toolbar akan memiliki
perilaku yang sama. Pembuatan aksi dilakukan untk mencegah adanya duplikasi kode. Seperti
gambar bagian action Editor dibawah ini.
7. Signal/Slot Editor
Digunakan untuk membuat hubungan signal dan slot dari suatu control tertentu yang terdapat di
dalam form. Dengan mendefinisikan hubungan tersebut di dalam Signal/Slot Editor, kita tidak
perlu lagi megggunakan metode connect() di dalam kode program. Seperti gambar dibawah.
8 Resource Browser
Digunakan untuk mengatur daftar file resource yang digunakan di dalam program (jika ada),
seperti file gambar, audio, dll. Seperti gambar dibawah.
5. Klik toolbar Lay Out Horizontally untuk menjadikan kedua control di atas disusun secara
horizontal. Tampilan terakhir yang diperoleh adalah sebagai Berikut:
dan pilih toolbar Lay Out Vertically, maka tampilan form di atas akan menjadi gambar dibawah
ini.
3. Menggunakan Grid Layout:
Grid Layout akan menjadikan control-kontrol di dalam form disusun secara tabular (terdiri dari
baris dan kolom). Sebagai contoh, misalnya kita memiliki control-kontrol yang tersusun tidak
teratur, seperti berikut:
Lakukan pilih toolbar Layout in Grid, maka tampilan form di atas akan menjadi seperti dibawah
ini.
Arahkan petunjuk mouse ke bagian tengah dari kedua control di atas (Splitter), Jika penunjuk
mouse digeser ke atas, maka tinggi PushButton 1 akan berkurang dan tinggi PushButton 2 akan
bertambah, dan begitu sebaliknya.
7. Menghapus Layout
Untuk menghapus layout yang sedang aktif, pilih toolbar Break Layout. Setelah Layout
dihilangkan maka control-kontrol yang berada di dalam layout bersangkutan akan diurai kembali
menjadi bagian yang saling terpisah satu sama lain.
Layout Vertikal Layout dengan Splitter di atas akan dihapus dengan klik toolbar Break
Layout, hasilnya (kembali seperti semula/awal) seperti gambar dibawah ini.
Model Penyuntingan (Editing) Form pada Qt Designer :
Pada saat bekerja dengan Qt Designer, terdapat empat mode penyunting form, yaitu: Edit
Widget, Edit Signals/Slots, Edit Buddies, dan Edit Tab Order. Keempat mode tersebut dapat
diaktifkan melalui toolbar, seperti gambar dibawah.
Pada dialog di atas, pilih signal clicked() untuk pushButton1 dan slot clear() untuk lineEdit1, lalu
klik OK.
7. Masih di mode Edit Signals/Slots, klik kembali pushButton2 dan drag ke form, lalu drop
Pada dialog di atas, pilih signal clicked() untuk pushButton2 dan slot reject() untuk Dialog, lalu
OK.
Langkah-langkah yang dilakukan di atas akan membuat dua buah hubungan signal dan slot,
yaitu:
Antara signal clicked() milik pushButton1 dengan slot clear() milik lineEdit1.
Antara signal clicked() milik pushButton2 dengan slot reject() milik Dialog (objek dari
kelas QDialog).
Hubungan signal dan slot yang dibuat melaui proses di atas secara otomatis akan ditampilkan
juga pada bagian Signal/Slot Editor, seperti berikut:
Untuk memeriksa pengaruh yang ditimbulkan dari signal dan slot yang dibuat di atas, yaitu
dengan memilih menu Form | Preview atau cukup dengan menekan tombol Ctrl+R. hasilnya
seperti gambar dibawah ini.
Ketika tombol pertama (Kosongkan) dipilih, teks pada lineEdit1 akan dihapus. Ini artinya, ketika
signal clicked() pada pushButton1 terjadi, metode clear() milik lineEdit1 akan dipanggil.
Jika yang dipilih adalah tombol kedua (Keluar), maka form atau dialog akan ditutup. Kali ini,
ketika signal clicked() pada pushButton2 terjadi, metode reject() pada objek Dialog akan
dipanggil.
10. Tekan tombol Alt+N dan Alt+H secara bergantian untuk melihat pengaruh yang
ditimbukan oleh buddy
Pada contoh di atas, kita menentukan buddy untuk label1 dan label2. Ketika tombol Alt+N ditekan,
focus akan diarahkan ke control lineEdit1. Jika Alt+H yang ditekan, maka focus akan diarahkan
ke control lieEdt2
Huruf yang diawali dengan tanda & pada control label akan ditampilkan dengan garis bawah.
4. Mode Edit Tab Order
Mode ini digunakan untuk mengatur urutan focus dari control-konrol yang terdapat di dalam form
pada saat user menekan tombol Tab. Perlu diperhatikan bahwa tidak semua control (widget) dapat
dikenai focus. Untuk mendemonstrasikan fungsi dari mode Edit Tab Order, silahkan dibuat form
baru dan tempatkan beberapa control ke dalamnya, lalu klik toolbar Edit Tab Order.
Contoh tampilan form yang berada di dalam mode ini sebegai berikut :
Urutan focus dari control-kontrol di dalam form di atas dapat diubah dengan melakukan klik
pada angka-angka yang ditampilkan.
Untuk melihat hasilnya, pilih menu Form | Preview, lalu tekan tombol tab beberapa kali.
2. Form yang telah dirancang dikonversikan ke dalam kode Python (menjadi kelas):
mengkonversikan file .ui ke file .py (disimpan dengan nama hallo_gui.py)
# -*- coding: utf-8 -*-
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(511, 332)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(60, 60, 151, 16))
self.label.setObjectName("label")
self.nameEdit = QtWidgets.QLineEdit(Dialog)
self.nameEdit.setGeometry(QtCore.QRect(60, 100, 391, 20))
self.nameEdit.setObjectName("nameEdit")
self.helloButton = QtWidgets.QPushButton(Dialog)
self.helloButton.setGeometry(QtCore.QRect(160, 160, 75, 23))
self.helloButton.setObjectName("helloButton")
self.exitButton = QtWidgets.QPushButton(Dialog)
self.exitButton.setGeometry(QtCore.QRect(270, 160, 75, 23))
self.exitButton.setObjectName("exitButton")
self.retranslateUi(Dialog)
self.exitButton.clicked.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
class MainForm(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.helloButton.clicked.connect(self.helloButtonClick)
def helloButtonClick(self):
QMessageBox.information(self, 'Demo Qt Designer', 'Hallo %s, apa kabar?' %
self.ui.nameEdit.text())
form = MainForm()
form.show()
a.exec_()
Penjelasan :
Agar kelas Ui_Dialog yang terdapat di dalam file hallo_gui.py dapat dikenal dari file
DemoQtDesigner.py, maka perlu mengimpor file tersebut menggunakan kode berikut:
From hallo_gui import *
Selanjutnya untuk membuat objek (instance) dari kelas Ui_Dialog, gunakan kode berikut:
self.ui = Ui_Dialog()
pada baris kode di atas, self.ui adalah objek dari kelas Ui_Dialog. Untuk memanggil metode
setupUi() yang didefinisikan di dalam kelas Ui_Dialog, kode yang diperlukan adalah sebagai
berikut:
self.ui.setupUi(self)
Tampilan di atas diperoleh ketika pegguna program telah mengisi nama ke kotak yan disediakan
dan memilih tombol Hallo. Tombol Keluar yang terdapat pada contoh di atas berguna untuk
menutup form. Karena form tersebut merupakan form utama, maka menutup form berarti juga
menghentikan eksekusi program.