Tutorial PyQt5 dengan Contoh:Desain GUI menggunakan PyQt dengan Python
Apa itu PyQt?
PyQt adalah python binding dari widget-toolkit Qt sumber terbuka, yang juga berfungsi sebagai kerangka kerja pengembangan aplikasi lintas platform. Qt adalah framework C++ yang populer untuk menulis aplikasi GUI untuk semua platform desktop, seluler, dan tertanam utama (mendukung Linux, Windows, MacOS, Android, iOS, Raspberry Pi, dan lainnya).
PyQt adalah perangkat lunak gratis yang dikembangkan dan dikelola oleh Riverbank Computing, sebuah perusahaan yang berbasis di Inggris, sedangkan Qt dikembangkan oleh perusahaan Finlandia bernama The Qt Company.
Dalam tutorial PyQt5 ini, Anda akan mempelajari:
Fitur PyQT
Versi PyQt
Cara menginstal PyQt5
Konsep dan Program Dasar PyQt
Komponen dan Widget
Tema
Fitur PyQT
Berikut adalah fitur penting dari PyQt:
Pelajari PyQt yang terdiri dari lebih dari enam ratus kelas yang mencakup berbagai fitur seperti
Antarmuka Pengguna Grafis
Database SQL
Perangkat web
Pemrosesan XML
Jaringan
Fitur-fitur ini dapat digabungkan untuk membuat UI canggih serta aplikasi mandiri. Banyak perusahaan besar di semua industri menggunakan Qt. Beberapa contohnya adalah LG, Mercedes, AMD, Panasonic, Harman, dll.
Versi PyQt
PyQt tersedia dalam dua edisi, PyQt4 dan PyQt5. PyQt4 menyediakan kode lem untuk mengikat versi 4.x dan 5.x dari kerangka kerja Qt sementara PyQt5 menyediakan pengikatan hanya untuk versi 5.x. Akibatnya, PyQt5 tidak kompatibel dengan modul usang dari versi lama. Dalam tutorial GUI Qt ini, PyQt5 akan digunakan untuk demonstrasi contoh. Selain dua versi ini,
Riverbank Computing juga menyediakan PyQt3D—binding python untuk kerangka kerja Qt3D. Qt3D adalah kerangka kerja aplikasi yang digunakan untuk membuat sistem simulasi waktu nyata dengan rendering 2D/3D.
Cara menginstal PyQt5
Dalam tutorial PyQt5 ini, kita akan melihat dua cara menginstal PyQt:
Menggunakan file Roda
Membuat dan Memasang dari Sumber
Qt (diucapkan lucu) adalah sistem yang kompleks, dan basis kode PyQt berisi kode C++ dan Python yang dikompilasi di bawah tenda. Akibatnya, ini adalah proses yang rumit untuk membangun dan menginstalnya dari sumbernya dibandingkan dengan pustaka python lainnya. Namun, Anda dapat dengan mudah menginstal PyQt5 menggunakan roda.
Pemasangan dengan roda
Wheels adalah format kemasan dan distribusi Python standar baru. Sederhananya, roda adalah arsip ZIP dengan nama khusus dan .whl ekstensi file. Roda dapat diinstal menggunakan pip (pengelola paket Python), yang disertakan secara default di versi terbaru Python.
Jadi, jika Anda menginstal Python 3.4 atau lebih baru, Anda sudah memiliki pip. Namun, jika Anda menggunakan versi Python yang lebih lama, Anda harus mengunduh dan menginstal pip sebelum melanjutkan. Anda dapat mencari petunjuk untuk itu di tautan ini:https://pypi.org/project/pip/.
Untuk menginstal PyQt5,
Langkah 1) Buka Command prompt. Buka Command Prompt atau PowerShell di mesin Windows Anda.
Langkah 2) Ketik berikut ini.
pip install PyQt5
Langkah 3) Instalasi berhasil. Langkah dalam tutorial PyQt5 ini akan mengunduh paket whl PyQt5 (sekitar 50 MB) dan menginstalnya di sistem Anda.
Atau, Anda juga dapat mengunduh biner Windows untuk versi python yang terinstal di komputer Anda.
Setelah selesai, lanjutkan ke bagian berikutnya dalam tutorial PyQt5 ini untuk menulis aplikasi GUI pertama Anda.
Konsep dan Program Dasar PyQt
Sekarang Anda telah berhasil menginstal PyQt5 di komputer Anda, Anda siap untuk menulis aplikasi desain GUI Python.
Mari kita mulai dengan aplikasi sederhana dalam tutorial PyQt5 ini yang akan menampilkan jendela kosong di layar Anda.
Jalankan python IDLE Anda dan ketik berikut ini:
Program 1
import sys
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == "__main__":
app = QApplication(sys.argv)
w = QWidget()
w.resize(300,300)
w.setWindowTitle("Guru99")
w.show()
sys.exit(app.exec_())
Simpan sebagai app.py (nama tidak masalah) dan tekan F5 untuk menjalankan program. Atau, cukup klik dua kali file yang Anda simpan untuk meluncurkan aplikasi. Jika Anda telah melakukan semuanya dengan benar, jendela baru akan terbuka dengan judul Guru99 seperti yang ditunjukkan di bawah ini.
Besar! Bekerja. Tidak banyak, tetapi cukup untuk memahami dasar-dasarnya. Sekarang dalam tutorial PyQt ini, mari kita lihat secara detail apa yang dilakukan setiap baris dalam program Anda.
from PyQt5.QtWidgets import QApplication, QWidget
Pernyataan ini mengimpor semua modul yang Anda butuhkan untuk membuat GUI ke dalam namespace saat ini. Modul QtWidgets berisi semua widget utama yang akan Anda gunakan dalam tutorial Python Qt ini.
app = QApplication(sys.argv)
Di sini, Anda membuat objek dari kelas QApplication. Langkah ini merupakan keharusan untuk PyQt5; setiap aplikasi UI harus membuat instance QApplication, sebagai semacam titik masuk ke dalam aplikasi. Jika Anda tidak membuatnya, kesalahan akan ditampilkan.
sys.argv adalah daftar parameter baris perintah yang dapat Anda berikan ke aplikasi saat meluncurkannya melalui shell atau saat mengotomatiskan antarmuka.
Dalam contoh PyQt5 ini, Anda tidak memberikan argumen apa pun ke QApplications. Oleh karena itu, Anda juga dapat menggantinya dengan kode di bawah ini dan bahkan tidak perlu mengimpor modul sys.
app = QApplication([])
w = QWidget()
Selanjutnya, kita membuat objek dari kelas QWidget. QWidget adalah kelas dasar dari semua objek UI di Qt, dan hampir semua yang Anda lihat di aplikasi adalah widget. Itu termasuk dialog, teks, tombol, bilah, dan sebagainya. Fitur yang memungkinkan Anda mendesain antarmuka pengguna yang kompleks adalah widget dapat disarangkan, yaitu, Anda dapat memiliki widget di dalam widget, yang ada di dalam widget lain. Anda akan melihat ini beraksi di bagian berikutnya.
w.resize(300,300)
Metode pengubahan ukuran kelas QWidget memungkinkan Anda menyetel dimensi widget apa pun. Dalam hal ini, Anda telah mengubah ukuran jendela menjadi 300px kali 300px.
Di sini, Anda harus ingat bahwa widget dapat disatukan, widget terluar (yaitu, widget tanpa induk) disebut Window.
w.setWindowTitle("Guru99")
Metode setWindowTitle() memungkinkan Anda meneruskan string sebagai argumen yang akan mengatur judul jendela ke string yang Anda lewati. Dalam contoh PyQt5, bilah judul akan menampilkan Guru99.
w.show()
show() hanya menampilkan widget di layar monitor.
sys.exit(app.exec_())
Metode app.exec_() memulai loop peristiwa Qt/C++. Seperti yang Anda ketahui, PyQt sebagian besar ditulis dalam C++ dan menggunakan mekanisme loop peristiwa untuk mengimplementasikan eksekusi paralel. app.exec_() meneruskan kontrol ke Qt yang akan keluar dari aplikasi hanya ketika pengguna menutupnya dari GUI. Itulah sebabnya ctrl+c tidak akan keluar dari aplikasi seperti pada program python lainnya. Karena Qt memiliki kontrol atas aplikasi, kejadian python tidak diproses kecuali kami mengaturnya di dalam aplikasi. Juga, perhatikan bahwa metode exec memiliki garis bawah dalam namanya; ini karena exec() sudah menjadi kata kunci dalam python dan garis bawah menyelesaikan konflik penamaan.
Di luar jendela kosong
Di bagian sebelumnya, Anda melihat cara membuat widget dasar di Qt. Sekarang saatnya untuk membuat beberapa antarmuka yang lebih terlibat yang dengannya pengguna dapat benar-benar berinteraksi. Sekali lagi, jalankan IDLE Anda dan tulis yang berikut ini.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox
def dialog():
mbox = QMessageBox()
mbox.setText("Your allegiance has been noted")
mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru")
mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
mbox.exec_()
if __name__ == "__main__":
app = QApplication(sys.argv)
w = QWidget()
w.resize(300,300)
w.setWindowTitle("Guru99")
label = QLabel(w)
label.setText("Behold the Guru, Guru99")
label.move(100,130)
label.show()
btn = QPushButton(w)
btn.setText('Beheld')
btn.move(110,150)
btn.show()
btn.clicked.connect(dialog)
w.show()
sys.exit(app.exec_())
Simpan file sebagai appone.py atau apa pun yang Anda suka dan tekan F5 untuk menjalankan program. Jika Anda tidak melakukan kesalahan, IDLE akan membuka jendela baru dengan beberapa teks dan tombol seperti yang ditunjukkan di bawah ini.
Setelah Anda mengklik tombol di jendela pertama, kotak pesan baru akan terbuka dengan teks yang telah Anda tulis.
Sekarang Anda dapat mengeklik tombol Sembunyikan Detail/Tampilkan Detail untuk mengalihkan visibilitas teks tambahan.
Seperti yang Anda lihat, karena kami belum menetapkan judul jendela apa pun di kotak pesan, judul default disediakan oleh python itu sendiri.
Sekarang setelah berfungsi, mari kita lihat kode tambahan yang telah Anda tambahkan ke contoh PyQt5 sebelumnya.
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QMessageBox
Ini mengimpor beberapa widget lagi yang telah Anda gunakan dalam contoh PyQt5, yaitu QLabel, QPushButton, dan QMessageBox.
def dialog():
mbox = QMessageBox()
mbox.setText("Your allegiance has been noted")
mbox.setDetailedText("You are now a disciple and subject of the all-knowing Guru")
mbox.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
mbox.exec_()
Di sini, Anda telah menetapkan metode bernama dialog yang membuat widget kotak pesan dan menyetel beberapa teks ke tombol dan bidang lainnya.
Metode dialog dipanggil dari blok utama program ketika sebuah tombol ditekan di widget tertentu (dalam hal ini, btn PushButton). Peristiwa klik yang dipicu pada tombol itu menyebabkan fungsi ini dijalankan. Fungsi seperti itu disebut slot di Qt, dan Anda akan mempelajari lebih lanjut tentang sinyal dan slot di paragraf mendatang.
if __name__ == "__main__":
app = QApplication(sys.argv)
w = QWidget()
w.resize(300,300)
w.setWindowTitle("Guru99")
Ini adalah bagian utama aplikasi dan seperti pada contoh sebelumnya, Anda mulai dengan membuat instance QApplication diikuti dengan widget sederhana, yaitu instance QWidget.
label = QLabel(w)
btn = QPushButton(w)
Anda telah menambahkan dua widget baru dalam aplikasi ini:QLabel dan QPushButton. QLabel digunakan untuk mencetak teks atau placeholder yang tidak dapat diedit di dalam widget, sedangkan QPushButton digunakan untuk membuat tombol yang dapat diklik.
Hal penting yang perlu diperhatikan di sini adalah ketika Anda membuat label dan objek btn, Anda meneruskan objek jendela (w) ke konstruktor QLabel dan QPushButton. Beginilah cara kerja bersarang di PyQt5. Untuk membuat widget di dalam widget lain, Anda meneruskan referensi widget induk ke konstruktor anak.
label.move(100,130)
btn.move(110,150)
move() digunakan untuk mengatur posisi widget sehubungan dengan widget induknya. Dalam kasus pertama, label akan dipindahkan 100 piksel dari kiri dan 130 piksel dari atas jendela.
Demikian pula, tombol akan ditempatkan 110px dari kiri dan 150px dari atas jendela. Contoh ini adalah cara kasar untuk mencapai tata letak dan umumnya tidak digunakan dalam produksi; itu hanya disertakan di sini untuk tujuan pembelajaran. Qt mendukung tata letak berbeda yang akan Anda lihat secara mendetail di bagian mendatang dari tutorial PyQt ini.
btn.clicked.connect(dialog)
Akhirnya, ini adalah contoh sinyal dan slot di Qt. Dalam aplikasi berbasis GUI, fungsi dijalankan berdasarkan tindakan yang dilakukan oleh pengguna, seperti mengarahkan kursor ke elemen atau mengklik tombol. Tindakan ini disebut peristiwa . Ingat bahwa metode app.exec_() mentransfer kontrol ke Qt event- lingkaran. Inilah gunanya loop peristiwa:untuk mendengarkan peristiwa dan melakukan tindakan sebagai tanggapan.
Setiap kali suatu peristiwa terjadi, seperti pengguna mengklik tombol, widget Qt yang sesuai memunculkan sinyal . Sinyal ini dapat dihubungkan ke fungsi python (seperti fungsi dialog dalam contoh ini) sehingga fungsi tersebut dijalankan saat sinyal dipicu. Fungsi ini disebut slot dalam istilah Qt.
Selanjutnya, sintaks dasar untuk memicu fungsi slot sebagai respons terhadap sinyal dari suatu peristiwa adalah sebagai berikut
widget.signal.connect(slot)
Artinya, setiap kali sinyal dipicu oleh widget , slot connected yang terhubung fungsi akan dijalankan. Singkatnya, sinyal dan slot digunakan oleh Qt untuk berkomunikasi antar objek dan memfasilitasi penggunaan kembali komponen dan interaktivitas.
Sekarang setelah Anda mengetahui cara membuat sarang widget dan menerapkan interaksi menggunakan sinyal dan slot, berikut adalah daftar widget yang berguna dan kelas lain yang dapat Anda gunakan di aplikasi PyQt Anda.
Komponen dan Widget
Ada banyak widget yang tersedia di PyQt untuk membuat aplikasi GUI. Namun, dengan PyQt5, ada perombakan kelas menjadi modul yang berbeda dan revisi dalam lisensi.
Oleh karena itu, sangat penting untuk memiliki pandangan tingkat tinggi tentang struktur PyQt5. Di bagian ini, Anda akan melihat bagaimana PyQt5 diatur secara internal dan mempelajari berbagai modul, pustaka, dan kelas API yang disediakan oleh PyQt5.
Struktur Direktori PyQt5
Ini adalah modul dasar yang digunakan oleh pengikatan Qt Python, khususnya PyQt5.
Qt :Ini menggabungkan semua kelas/modul yang disebutkan di bawah ini menjadi satu modul. Ini sangat meningkatkan memori yang digunakan oleh aplikasi. Namun, lebih mudah untuk mengelola kerangka kerja dengan hanya mengimpor satu modul.
QtCore :Berisi kelas non-grafis inti yang digunakan oleh modul lain. Di sinilah Qt event loop, sinyal, dan konektivitas slot, dll. diimplementasikan.
QtWidget :Berisi sebagian besar widget yang tersedia di Pyqt5.
QtGui :Berisi komponen GUI dan memperluas modul QtCore.
QtNetwork :Berisi kelas-kelas yang digunakan untuk mengimplementasikan pemrograman jaringan melalui Qt. Mendukung server TCP, soket TCP, soket UDP, penanganan SSL, sesi jaringan, dan pencarian DNS.
QtMultimedia menyediakan fungsionalitas multimedia tingkat rendah.
QtSql :mengimplementasikan integrasi database untuk database SQL. Mendukung ODBC, MySQL, Oracle, SQLite, dan PostgreSQL.
Widget PyQt5
Berikut adalah daftar widget yang paling sering digunakan di PyQt5
QLineEdit :Ini adalah bidang input yang memungkinkan satu baris teks dimasukkan oleh pengguna.
line = QLineEdit()
QRadioButton :Ini adalah bidang masukan dengan tombol yang dapat dipilih, mirip dengan tombol radio di html.
rad = QRadioButton("button title")
rad.setChecked(True) #to select the button by default.
QComboBox :Digunakan untuk menampilkan menu tarik-turun dengan daftar item yang dapat dipilih.
drop = QComboBox(w)
drop.addItems(["item one", "item two", "item three"])
QCheckBox :Menampilkan kotak persegi yang dapat dipilih di depan label yang dicentang jika dipilih, mirip dengan tombol radio.
check = QCheckBox("button title")
QMenuBar :ini menampilkan bilah menu horizontal di bagian atas jendela. Anda hanya dapat menambahkan objek kelas QMenu ke bilah ini. Objek QMenu tersebut selanjutnya dapat berisi string, objek QAction, atau objek QMenu lainnya.
QToolBar :Ini adalah bilah atau panel horizontal yang dapat dipindahkan di dalam jendela. Ini mungkin berisi tombol dan widget lainnya.
QTab :digunakan untuk memecah isi jendela menjadi beberapa halaman yang dapat diakses melalui tab yang berbeda di atas widget. Ini terdiri dari dua bagian:bilah tab dan laman tab.
QScrollBar :Digunakan untuk membuat bilah gulir yang memungkinkan pengguna untuk menggulir ke atas dan ke bawah di dalam jendela. Ini terdiri dari penggeser yang dapat dipindahkan, trek penggeser, dan dua tombol untuk menggulir penggeser ke atas atau ke bawah.
scroll = QScrollBar()
Pemisah QS :Splitter digunakan untuk memisahkan isi dari sebuah window sehingga widgets dikelompokkan dengan benar dan tidak terlihat berantakan. QSplitter adalah salah satu pengendali tata letak utama yang tersedia di PyQt5 dan digunakan untuk membagi konten baik secara horizontal maupun vertikal.
QDock :Widget dok adalah sub-jendela dengan dua properti:
Itu dapat dipindahkan di dalam jendela utama dan
Ini dapat dipasang di luar jendela induk ke lokasi lain di layar.
Tata Letak dan Tema
Pada contoh PyQt5 sebelumnya, Anda hanya menggunakan metode move() dan resize() untuk mengatur posisi widget di GUI Anda.
Namun, PyQt memiliki mesin manajemen tata letak yang kuat yang dapat digunakan untuk membuat antarmuka pengguna tingkat lanjut untuk aplikasi. Di bagian ini, Anda akan mempelajari tentang dua kelas penting yang digunakan di Qt untuk membuat dan mengelola tata letak.
QBoxLayout
QGridLayout
QBoxLayout
QBoxLayout digunakan untuk menyelaraskan widget anak tata letak dalam baris horizontal atau vertikal. Dua kelas minat yang diwarisi dari QBoxLayout adalah:
QHBoxLayout:digunakan untuk melapisi widget anak secara horizontal.
QVBoxLayout:digunakan untuk melapisi widget anak secara vertikal.
Misalnya, seperti inilah tampilan tiga tombol yang disejajarkan dengan QHBoxLayout.
Satu-satunya fungsi yang memerlukan penjelasan apa pun pada saat ini adalah metode addWidget(). Ini digunakan untuk memasukkan widget ke dalam tata letak HBox atau VBox. Ini juga digunakan dalam tata letak lain di mana dibutuhkan sejumlah parameter yang berbeda seperti yang akan Anda lihat di bagian berikutnya. Widget akan muncul di dalam tata letak sesuai urutan saat Anda memasukkannya.
QGridLayout
QGridLayout digunakan untuk membuat antarmuka di mana widget diletakkan dalam bentuk kisi (seperti matriks atau larik 2D). Untuk menyisipkan elemen dalam tata letak kisi, Anda dapat menggunakan representasi matriks untuk menentukan jumlah baris dan kolom dalam kisi serta posisi elemen tersebut.
Misalnya, untuk membuat kisi 3*3 (yaitu, kisi dengan tiga baris dan tiga kolom), Anda akan menulis kode berikut:
Import sys
from PyQt5.QtWidgets import *
if __name__ == "__main__":
app = QApplication([])
w = QWidget()
grid = QGridLayout(w)
for i in range(3):
for j in range(3):
grid.addWidget(QPushButton("Button"),i,j)
w.show()
sys.exit(app.exec_())
Ini akan menjadi output:
Metode addWidget() Dalam tata letak kisi, gunakan argumen berikut:
Objek widget yang ingin Anda tambahkan ke kisi
Koordinat x objek
Koordinat y objek
Rentang baris (default =0)
Span col (default=0)
Untuk memahaminya dengan lebih baik, Anda dapat memasukkan setiap widget secara manual seperti yang ditunjukkan di bawah ini
import sys
from PyQt5.QtWidgets import *
if __name__ == "__main__":
app = QApplication([])
w = QWidget()
grid = QGridLayout(w)
grid.addWidget(QPushButton("Button one"),0,0)
grid.addWidget(QPushButton("Button two"),0,1)
grid.addWidget(QPushButton("Button three"),1,0)
grid.addWidget(QPushButton("Button four"),1,1)
w.show()
sys.exit(app.exec_())
Inilah yang akan terlihat seperti kisi-kisi:
Anda juga dapat meneruskan parameter rowspan dan colspan ke addWidget() untuk menjangkau lebih dari satu baris atau kolom.
Ini akan membuat tombol yang membentang di kedua kolom.
Tema
PyQt5 hadir dengan beberapa tema bawaan yang dapat Anda gunakan di aplikasi Anda. setStyle() metode yang dipanggil pada instance QApplication digunakan untuk menyetel tema tertentu ke aplikasi Anda.
Misalnya, menambahkan baris kode berikut akan mengubah tema aplikasi Anda dari default ke Fusion
app.setStyle("Fusion")
Beginilah tampilan contoh sebelumnya di Fusion Theme
Fungsi lain yang berguna untuk memberi tema pada aplikasi Anda adalah metode setPalette(). Berikut kode untuk mengubah warna widget yang berbeda menggunakan setPalette().
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPalette
if __name__ == "__main__":
app = QApplication([])
app.setStyle("Fusion")
qp = QPalette()
qp.setColor(QPalette.ButtonText, Qt.black)
qp.setColor(QPalette.Window, Qt.black)
qp.setColor(QPalette.Button, Qt.gray)
app.setPalette(qp)
w = QWidget()
grid = QGridLayout(w)
grid.addWidget(QPushButton("Button one"),0,0)
grid.addWidget(QPushButton("Button two"),0,1)
grid.addWidget(QPushButton("Button three"),1,0)
grid.addWidget(QPushButton("Button four"),1,1)
w.show()
sys.exit(app.exec_())
Inilah hasilnya.
Untuk menggunakan metode setPalette(), Anda harus mendefinisikan palet terlebih dahulu. Ini dilakukan dengan membuat objek dari kelas QPalette.
qp = QPalette()
Perhatikan bahwa kelas QPalette milik modul QtGui dan Anda harus mengimpornya agar ini berfungsi. Setelah Anda membuat objek QPalette, gunakan metode setColor() untuk meneruskan nama widget yang warnanya ingin Anda ubah dan warna yang ingin Anda atur.
qp.setColor(QPalette.Window, Qt.black)
Ini akan mengubah warna jendela menjadi hitam. Setelah Anda menentukan skema warna, gunakan fungsi setPalette() untuk menerapkan palet ke aplikasi Anda.
app.setPalette(qp)
Hanya itu yang perlu Anda lakukan jika ingin membuat beberapa tema dasar untuk aplikasi Anda. PyQt juga memungkinkan Anda menggunakan stylesheet untuk menentukan tampilan widget Anda. Jika Anda terbiasa dengan CSS, Anda dapat dengan mudah menentukan gaya lanjutan untuk aplikasi Anda menggunakan Qt Style Sheets.
Ringkasan
PyQt adalah ikatan python untuk kerangka kerja UI C++, Qt.
PyQt4 dan PyQt5 adalah dua versi utama yang dikembangkan oleh Riverbank Computing.
Modul utama kerangka kerja PyQt adalah:
Qt
QtCore
QtWidget
QtGui
QtSql
QtNetwork
PyQt mendukung berbagai widget seperti:
Tombol
Label teks
Bidang teks
Tombol radio dan Kotak Centang
Bilah alat dan bilah Menu
Webkit
Tab
Dok
Di PyQt, interaktivitas diimplementasikan menggunakan sinyal dan slot.
Sebuah acara adalah tindakan yang dilakukan oleh pengguna di GUI (seperti mengklik tombol).
Sebuah sinyal dimunculkan oleh widget yang sesuai ketika suatu peristiwa terjadi di dalamnya.
Sebuah slot adalah fungsi yang terhubung ke sinyal dan dijalankan saat sinyal dinaikkan.
PyQt memiliki mesin tata letak yang tangguh dan mendukung desain dan pengelolaan tata letak tingkat lanjut. Ini adalah dua skema tata letak yang sering digunakan di PyQt:
Tata Letak Kotak
Tata Letak Kotak
Desainer PyQt memungkinkan Anda membuat tema khusus untuk aplikasi GUI dan memiliki dukungan bawaan untuk lembar gaya.
Python pencipta Qt dapat digunakan untuk membuat antarmuka pengguna serta aplikasi mandiri.