Tutorial PyQt5 dengan Contoh: Mendesain GUI menggunakan PyQt di Python

Apa itu PyQt?

PyQt adalah pengikatan python dari widget-toolkit Qt sumber terbuka, yang juga berfungsi sebagai kerangka kerja pengembangan aplikasi lintas platform. Qt adalah alat yang populer C++ kerangka kerja untuk menulis aplikasi GUI untuk semua platform desktop, seluler, dan tertanam utama (mendukung Linux, WindowsBahasa Inggris: , 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.

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 tingkat lanjut 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 kerangka Qt versi 4.x dan 5.x sementara PyQt5 menyediakan pengikatan hanya untuk versi 5.x. Akibatnya, PyQt5 tidak kompatibel dengan modul versi lama yang tidak digunakan lagi. Dalam tutorial GUI Qt ini, PyQt5 akan digunakan untuk demonstrasi contoh. Selain kedua versi tersebut,

Riverbank Computing juga menyediakan PyQt3D—binding python untuk kerangka Qt3D. Qt3D adalah framework aplikasi yang digunakan untuk membuat sistem simulasi real-time dengan rendering 2D/3D.

Bagaimana cara menginstal PyQt5

Dalam tutorial PyQt5 ini, kita akan melihat dua cara menginstal PyQt:

  • Menggunakan file Roda
  • Membangun dan Memasang dari Sumber

Qt (diucapkan lucu) adalah sistem yang kompleks, dan basis kode PyQt berisi kompilasi C++ dan Python kode di balik layar. Akibatnya, proses pembuatan dan pemasangannya dari sumber menjadi rumit dibandingkan dengan pustaka python lainnya. Namun, Anda dapat memasang PyQt5 dengan mudah menggunakan wheels.

Pemasangan dengan roda

Roda adalah standar baru Python format pengemasan dan distribusi. Sederhananya, roda adalah arsip ZIP dengan nama khusus dan .apa ekstensi file. Roda dapat dipasang menggunakan pip (Python's manajer paket), yang disertakan secara default di versi terbaru Python.

Jadi, jika Anda memiliki Python 3.4 atau yang lebih baru terpasang, Anda sudah memiliki pip. Namun, jika Anda menggunakan versi lama Python, Anda harus mengunduh dan menginstal pip sebelum melanjutkan. Anda dapat mencari petunjuknya di tautan ini: https://pypi.org/project/pip/.

Untuk menginstal PyQt5,

Langkah 1) Buka Prompt perintah.
Buka Command Prompt atau PowerShell di Anda Windows mesin.

instal PyQt5

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.

instal PyQt5

Alternatifnya, Anda juga dapat mengunduh a Windows biner untuk versi python yang diinstal di komputer Anda.

Setelah selesai, lanjutkan ke bagian berikutnya dalam tutorial PyQt5 ini untuk menulis aplikasi GUI pertama Anda.

PyQt Dasar Concepts dan Program

Sekarang Anda telah berhasil menginstal PyQt5 di komputer Anda, Anda siap untuk menulis Python Aplikasi desain GUI.

Mari kita mulai dengan aplikasi sederhana dalam tutorial PyQt5 ini yang akan menampilkan jendela kosong di layar Anda.

Jalankan python Anda IDLE dan ketik yang 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 penting) 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.

PyQt Dasar Concepts

Besar! Bekerja. Memang tidak banyak, tapi cukup untuk memahami dasar-dasarnya. Sekarang dalam tutorial PyQt ini, mari kita lihat secara detail fungsi setiap baris dalam program Anda.

from PyQt5.QtWidgets import QApplication, QWidget

Pernyataan ini mengimpor semua modul yang Anda perlukan untuk membuat GUI ke dalam namespace saat ini. Modul QtWidgets berisi semua widget utama yang akan Anda gunakan dalam hal ini Python Tutorial Qt.

app = QApplication(sys.argv)

Di sini, Anda membuat objek 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 mengotomatisasi 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 buat 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 lainnya. Anda akan melihat ini beraksi di bagian berikutnya.

w.resize(300,300)

Metode pengubahan ukuran kelas QWidget memungkinkan Anda mengatur dimensi widget apa pun. Dalam hal ini, Anda telah mengubah ukuran jendela menjadi 300px kali 300px.

Di sini, Anda harus ingat bahwa widget dapat disarangkan bersama-sama, widget terluar (yaitu widget tanpa induk) disebut Window.

w.setWindowTitle("Guru99")

Metode setWindowTitle() memungkinkan Anda meneruskan string sebagai argumen yang akan menyetel judul jendela ke string yang Anda teruskan. Dalam contoh PyQt5, bilah judul akan menampilkan Guru99.

w.show()

show() cukup menampilkan widget di layar monitor.

sys.exit(app.exec_())

Metode app.exec_() memulai Qt/C++ lingkaran peristiwa. Seperti yang Anda ketahui, PyQt sebagian besar ditulis C++ dan menggunakan mekanisme event loop untuk mengimplementasikan eksekusi paralel. app.exec_() memberikan 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, event python tidak diproses kecuali kita mengaturnya di dalam aplikasi. Perhatikan juga bahwa metode exec memiliki garis bawah pada 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 antarmuka yang lebih terlibat sehingga pengguna dapat benar-benar berinteraksi. Sekali lagi, nyalakan IDLE dan tuliskan 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 berkas 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.

Lebih dari kosong Windows

  1. Setelah Anda mengklik tombol di jendela pertama, kotak pesan baru akan terbuka dengan teks yang telah Anda tulis.
  2. Anda sekarang dapat mengeklik tombol Sembunyikan Detail/Tampilkan Detail untuk mengubah visibilitas teks tambahan.

Seperti yang Anda lihat, karena kami tidak menetapkan judul jendela apa pun di kotak pesan, judul default disediakan oleh python sendiri.

Sekarang sudah 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 mendefinisikan metode bernama dialog yang membuat widget kotak pesan dan menetapkan 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 tersebut menyebabkan fungsi ini dijalankan. Fungsi seperti itu disebut slot di Qt, dan Anda akan mempelajarinya lebih lanjut sinyal dan slot dalam paragraf yang akan datang.

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 di 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 objek label dan btn, Anda meneruskan objek window (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 turunan.

label.move(100,130)
btn.move(110,150)

move() digunakan untuk mengatur posisi widget terhadap widget induknya. Dalam kasus pertama, label akan dipindahkan 100px dari kiri dan 130px dari atas jendela.

Demikian pula, tombol akan ditempatkan 110px dari kiri dan 150px dari atas jendela. Contoh ini merupakan 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 detail di bagian selanjutnya dari tutorial PyQt ini.

btn.clicked.connect(dialog)

Terakhir, 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. Ingatlah bahwa metode app.exec_() mentransfer kontrol ke Qt Peristiwa-lingkaran. Inilah gunanya loop peristiwa: untuk mendengarkan peristiwa dan melakukan tindakan sebagai respons.

Setiap kali suatu peristiwa terjadi, seperti pengguna mengklik tombol, widget Qt yang sesuai akan memunculkan a sinyal. Sinyal-sinyal ini dapat dihubungkan fungsi python (seperti fungsi dialog pada contoh ini) sehingga fungsi tersebut dijalankan ketika sinyal dipicu. Fungsi-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 a sinyal dipicu oleh a Widget, yang terhubung celah fungsi akan dijalankan. Singkatnya, sinyal dan slot digunakan oleh Qt untuk berkomunikasi antar objek dan memfasilitasi penggunaan kembali dan interaktivitas komponen.

Sekarang setelah Anda mengetahui cara menyusun widget dan mengimplementasikan interaksi menggunakan sinyal dan slot, berikut adalah daftar widget 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, telah terjadi perombakan kelas menjadi modul yang berbeda dan revisi 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

Struktur Direktori PyQt5

Ini adalah modul dasar yang digunakan oleh Pythonpengikatan Qt, khususnya PyQt5.

  • Qt: Ini menggabungkan semua kelas/modul yang disebutkan di bawah ke dalam satu modul. Ini sangat meningkatkan memori yang digunakan oleh aplikasi. Namun, mengelola kerangka kerja lebih mudah hanya dengan mengimpor satu modul.
  • QtCore: Berisi kelas inti non-grafis yang digunakan oleh modul lain. Di sinilah loop peristiwa Qt, sinyal, dan konektivitas slot, dll. diimplementasikan.
  • QtWidget: Berisi sebagian besar widget yang tersedia di Pyqt5.
  • QtGui: Berisi komponen GUI dan memperluas modul QtCore.
  • Jaringan Qt: Berisi kelas yang digunakan untuk mengimplementasikan pemrograman jaringan melalui Qt. Ini 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

  • QLineSunting: Ini adalah kolom masukan yang memungkinkan satu baris teks dimasukkan oleh pengguna.
    line = QLineEdit()
  • Tombol QRadio: Ini adalah kolom input 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 dropdown dengan daftar item yang dapat dipilih.
    drop = QComboBox(w)
    drop.addItems(["item one", "item two", "item three"])
  • Periksa QBox: 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 konten jendela menjadi beberapa halaman yang dapat diakses melalui tab berbeda di atas widget. Ini terdiri dari dua bagian: bilah tab dan halaman tab.
  • QScrollBar: Digunakan untuk membuat bilah gulir yang memungkinkan pengguna menggulir ke atas dan ke bawah dalam jendela. Ini terdiri dari penggeser yang dapat digerakkan, jalur penggeser, dan dua tombol untuk menggulir penggeser ke atas atau ke bawah.
    scroll = QScrollBar()
  • Pemisah Q: Splitter digunakan untuk memisahkan konten jendela agar widget dikelompokkan dengan benar dan tidak terlihat berantakan. QSplitter adalah salah satu penangan tata letak utama yang tersedia di PyQt5 dan digunakan untuk membagi konten baik secara horizontal maupun vertikal.
  • QDock: Widget dok adalah subjendela dengan dua properti:
  • Itu dapat dipindahkan di dalam jendela utama dan
  • Itu 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 dua kelas penting yang digunakan di Qt untuk membuat dan mengelola tata letak.

  1. QBoxtata ruang
  2. QGridLayout

QBoxtata ruang

QBoxTata letak digunakan untuk menyelaraskan widget anak tata letak dalam baris horizontal atau vertikal. Dua kelas kepentingan yang diwarisi dari QBoxTata letaknya adalah:

  • QHBoxTata Letak: digunakan untuk melapisi widget anak secara horizontal.
  • QVBoxTata Letak: digunakan untuk melapisi widget anak secara vertikal.

Misalnya, ini adalah bagaimana tiga tombol disejajarkan dengan QHBoxTata letak akan terlihat.

QBoxtata ruang

import sys
from PyQt5.QtWidgets import *

if __name__ == "__main__":

    app = QApplication([])
    w = QWidget()
    w.setWindowTitle("Musketeers")

    btn1 = QPushButton("Athos")
    btn2 = QPushButton("Porthos")
    btn3 = QPushButton("Aramis")

    hbox = QHBoxLayout(w)

    hbox.addWidget(btn1)
    hbox.addWidget(btn2)
    hbox.addWidget(btn3)

    w.show()

    sys.exit(app.exec_())

Dan seperti inilah tampilannya di QVBoxLayout.

QBoxtata ruang

import sys
from PyQt5.QtWidgets import *

if __name__ == "__main__":

    app = QApplication([])
    w = QWidget()
    w.setWindowTitle("Musketeers")

    btn1 = QPushButton("Athos")
    btn2 = QPushButton("Porthos")
    btn3 = QPushButton("Aramis")

    vb = QVBoxLayout(w)

    vb.addWidget(btn1)
    vb.addWidget(btn2)
    vb.addWidget(btn3)

    w.show()

    sys.exit(app.exec_())

Satu-satunya fungsi yang memerlukan penjelasan pada saat ini adalah metode addWidget(). Ini digunakan untuk memasukkan widget ke dalam HBox atau VBox tata letak. Ini juga digunakan dalam tata letak lain yang memerlukan jumlah parameter berbeda seperti yang akan Anda lihat di bagian berikutnya. Widget akan muncul di dalam tata letak sesuai urutan Anda memasukkannya.

QGridLayout

QGridLayout digunakan untuk membuat antarmuka yang widgetnya ditata dalam bentuk grid (seperti matriks atau array 2D). Untuk menyisipkan elemen dalam tata letak kisi, Anda bisa 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:

QGridLayout

Metode addWidget() Dalam tata letak kisi menggunakan argumen berikut:

  • Objek widget yang ingin Anda tambahkan ke grid
  • Koordinat x benda tersebut
  • Koordinat y benda tersebut
  • Rentang baris (default =0)
  • Rentang kolom (default=0)

Untuk memahaminya lebih baik, Anda dapat memasukkan setiap widget secara manual seperti gambar 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_())

Seperti inilah tampilan gridnya:

QGridLayout

Anda juga dapat meneruskan parameter rowpan dan colspan ke addWidget() untuk menjangkau lebih dari satu baris atau kolom.

Sebagai contoh,

grid.addWidget(QPushButton("Button five"),2,0,1,0)

Ini akan membuat tombol yang membentang di kedua kolom.

QGridLayout

Tema

PyQt5 hadir dengan beberapa tema bawaan yang dapat Anda gunakan di aplikasi Anda. Itu setGaya() metode yang dipanggil pada instance QApplication digunakan untuk mengatur tema tertentu pada aplikasi Anda.

Misalnya, menambahkan baris kode berikut akan mengubah tema aplikasi Anda dari default ke Fusion

app.setStyle("Fusion")

Seperti inilah tampilan contoh sebelumnya di Fusion Theme

Tema

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.

Tema

Untuk menggunakan metode setPalette(), Anda perlu menentukan palet terlebih dahulu. Hal ini dilakukan dengan membuat objek kelas QPalette.

 qp = QPalette()

Perhatikan bahwa kelas QPalette termasuk dalam modul QtGui dan Anda perlu mengimpornya agar dapat 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 familiar dengan CSS, Anda dapat dengan mudah menentukan gaya tingkat lanjut untuk aplikasi Anda menggunakan Qt Style Sheets.

Ringkasan

  • PyQt adalah pengikatan python untuk C++ Kerangka UI, Qt.
  • PyQt4 dan PyQt5 adalah dua versi utama yang dikembangkan oleh Riverbank Computing.
  • Modul utama kerangka PyQt adalah:
    1. Qt
    2. QtCore
    3. QtWidget
    4. QtGui
    5. QtSql
    6. Jaringan Qt
  • PyQt mendukung berbagai widget seperti:
    1. kancing-kancing
    2. Label teks
    3. Bidang teks
    4. Tombol radio dan kotak centang
    5. Toolbar dan Menu bar
    6. perangkat web
    7. Tabs
    8. Dermaga
  • Di PyQt, interaktivitas diimplementasikan menggunakan sinyal dan slot.
  • An peristiwa adalah tindakan yang dilakukan oleh pengguna di GUI (seperti mengklik tombol).
  • A sinyal dimunculkan oleh widget yang sesuai ketika suatu peristiwa terjadi di dalamnya.
  • A celah adalah fungsi yang terhubung ke sinyal dan dijalankan ketika sinyal dinaikkan.
  • PyQt memiliki mesin tata letak yang kuat dan mendukung desain dan manajemen tata letak tingkat lanjut. Ini adalah dua skema tata letak yang sering digunakan di PyQt:
    1. Box tata ruang
    2. Tata Letak Grid
  • Perancang PyQt memungkinkan Anda membuat tema khusus untuk aplikasi GUI dan memiliki dukungan bawaan untuk style sheet.
  • qtcreator Python dapat digunakan untuk membuat antarmuka pengguna serta aplikasi mandiri.