Tutorial PyQt5 dengan Contoh: Membuat Python GUI dengan Qt

⚡ Ringkasan Cerdas

PyQt adalah sebuah Python Sebuah binding untuk toolkit widget Qt lintas platform, yang memungkinkan pengembang untuk membangun GUI desktop asli. Ia membungkus lebih dari enam ratus widget. C++ kelas yang mencakup jendela, tombol, tata letak, sinyal, slot, dan tema untuk Windows, macOS, dan Linux.

  • 🔘 Apa itu PyQt? A Python pengikatan untuk Qt C++ kerangka kerja, yang dikelola oleh Riverbank Computing.
  • ☑️ Versi: PyQt4 mengikat Qt 4.x dan 5.x; PyQt5 hanya menargetkan seri Qt 5.x.
  • instalasi: Manajer paket pip menginstal PyQt5 dari sebuah wheel hanya dengan satu perintah.
  • 🧪 Aplikasi pertama: QApplication dan QWidget membuat dan menampilkan jendela dasar di layar.
  • Signals dan slot: Peristiwa widget memicu sinyal yang terhubung ke Python fungsi slot.
  • 🤖 Siap untuk AI: PyQt membangun antarmuka pengguna desktop yang menjalankan dan memvisualisasikan model pembelajaran mesin.

Tutorial PyQt5

Bagian-bagian di bawah ini akan membimbing Anda dari dasar-dasar PyQt hingga instalasi, widget inti, tata letak, dan tema dengan contoh yang dapat dijalankan.

Apa itu PyQt?

PyQt adalah Python Qt adalah sebuah perangkat lunak yang terintegrasi dengan perangkat lunak widget sumber terbuka, yang juga berfungsi sebagai kerangka kerja pengembangan aplikasi lintas platform. Qt adalah perangkat lunak yang populer. C++ kerangka kerja 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.

Fitur-fitur PyQt

Berikut adalah fitur penting dari PyQt:

PyQt 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 menciptakan UI tingkat lanjut serta aplikasi mandiri. Banyak perusahaan besar di berbagai industri menggunakan Qt. Beberapa contohnya adalah LG, Mercedes, AMD, Panasonic, dan Harman.

Versi PyQt

PyQt tersedia dalam dua edisi, PyQt4 dan PyQt5. PyQt4 menyediakan kode penghubung untuk mengikat versi 4.x dan 5.x dari kerangka kerja Qt, sedangkan PyQt5 hanya menyediakan pengikatan untuk versi 5.x. Akibatnya, PyQt5 tidak kompatibel dengan modul yang sudah usang dari versi yang lebih lama. Dalam tutorial GUI PyQt ini, PyQt5 akan digunakan untuk demonstrasi contoh. Selain kedua versi ini, Riverbank Computing juga menyediakan PyQt3D—yang Python Binding untuk framework 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++ ke Python kode di balik layar. Akibatnya, proses membangun dan menginstalnya dari kode sumber menjadi lebih rumit dibandingkan dengan yang lain. Python Namun, Anda dapat dengan mudah menginstal PyQt5 menggunakan wheel.

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 PythonAnda harus mengunduh dan menginstal pip sebelum melanjutkan. Anda dapat mencari petunjuk 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 diinstal pada komputer Anda.

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

PyQt Dasar Concepts dan Program

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

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

Nyalakan Python 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 file tidak masalah) dan tekan F5 untuk menjalankan program. Atau, cukup klik dua kali file yang telah 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

Bagus! Berhasil. Memang tidak banyak, tetapi cukup untuk memahami dasar-dasarnya. Sekarang, dalam tutorial PyQt ini, mari kita lihat secara detail apa yang dilakukan oleh 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 QApplication. 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 perlu ingat bahwa widget dapat saling bersarang; widget terluar (yaitu, widget tanpa induk) disebut Jendela.

w.setWindowTitle("Guru99")

Metode setWindowTitle() memungkinkan Anda untuk memberikan string sebagai argumen yang akan mengatur judul jendela ke string yang Anda berikan. 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_() menyerahkan kendali ke Qt, yang hanya akan keluar dari aplikasi ketika pengguna menutupnya dari GUI. Itulah mengapa ctrl+c tidak akan keluar dari aplikasi seperti pada aplikasi lain. Python program. Karena Qt memiliki kendali atas aplikasi tersebut, Python Peristiwa tidak akan diproses kecuali kita mengaturnya di dalam aplikasi. Selain itu, perhatikan bahwa metode exec memiliki garis bawah dalam namanya; ini karena exec() sudah menjadi kata kunci di Python dan garis bawah menyelesaikan konflik penamaan.

Di luar jendela kosong

Pada bagian sebelumnya, Anda telah melihat cara membuat widget dasar di Qt. Sekarang saatnya membuat antarmuka yang lebih kompleks yang dapat diinteraksikan oleh pengguna. Sekali lagi, jalankan Qt Anda. 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 file tersebut sebagai appone.py atau nama lain yang Anda inginkan, lalu tekan F5 untuk menjalankan program. Jika Anda tidak melakukan kesalahan, maka... 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 belum mengatur judul jendela apa pun di kotak pesan, judul default diberikan secara otomatis. Python itu sendiri.

Sekarang setelah berhasil, 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 ke 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 dari aplikasi dan, seperti pada contoh sebelumnya, Anda mulai dengan membuat instance QApplication diikuti oleh 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 dieksekusi berdasarkan tindakan yang dilakukan oleh pengguna, seperti mengarahkan kursor ke suatu elemen atau mengklik tombol. Tindakan-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 Python fungsi (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 kejadian adalah sebagai berikut:

 widget.signal.connect(slot)

Ini berarti bahwa setiap kali sebuah 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 gambaran umum tentang struktur PyQt5. Pada bagian ini, Anda akan melihat bagaimana PyQt5 diorganisasikan 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.

  • QtIni menggabungkan semua kelas/modul yang disebutkan di bawah ini ke dalam satu modul tunggal. Hal ini secara signifikan meningkatkan penggunaan memori oleh aplikasi. Namun, lebih mudah untuk mengelola kerangka kerja dengan hanya 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 QRadioIni 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 dari 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.
  • QTabDigunakan untuk membagi isi jendela menjadi beberapa halaman yang dapat diakses melalui tab berbeda di bagian atas widget. Terdiri dari dua bagian: bilah tab dan halaman tab.
  • QScrollBarIni digunakan untuk membuat bilah gulir yang memungkinkan pengguna untuk menggulir ke atas dan ke bawah di dalam jendela. Ini terdiri dari penggeser yang dapat digerakkan, sebuah penggeser track, dan dua tombol untuk menggulir slider 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.
  • QDockWidget dock adalah jendela bagian dalam dengan dua properti: dapat dipindahkan di dalam jendela utama, dan dapat ditambatkan 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() pada layout grid menerima argumen-argumen berikut:

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

Untuk memahaminya 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_())

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.

Sebagai contoh, menambahkan baris kode berikut akan mengubah tema aplikasi Anda dari default menjadi Fusion.

app.setStyle("Fusion")

Beginilah tampilan contoh sebelumnya pada Tema Fusion.

Tema

Fungsi berguna lainnya untuk mengubah tema aplikasi Anda adalah metode setPalette(). Berikut adalah kode untuk mengubah warna berbagai widget 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 ini berfungsi. Setelah Anda membuat objek QPalette, gunakan metode setColor() untuk memberikan nama widget yang warnanya ingin Anda ubah dan warna yang ingin Anda tetapkan.

 qp.setColor(QPalette.Window, Qt.black)

Ini akan mengubah warna jendela menjadi hitam. Setelah Anda menentukan skema warna Anda, gunakan fungsi setPalette() untuk menerapkan palet tersebut 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.

Pertanyaan Umum Demo Slot

Tkinter mengirimkan barang-barang dengan Python dan cocok untuk alat-alat kecil dan sederhana. PyQt menawarkan lebih banyak widget, perancang visual, dan tampilan asli, sehingga lebih baik untuk aplikasi desktop profesional yang besar — ​​dengan konsekuensi kurva pembelajaran yang lebih curam dan lisensi GPL.

Keduanya menggunakan pustaka Qt yang sama dan memiliki API yang hampir identik. Perbedaan utamanya adalah lisensi: PyQt menggunakan GPL atau lisensi komersial berbayar, sedangkan PySide (Qt untuk Python) menggunakan lisensi LGPL, yang memungkinkan distribusi kode sumber tertutup secara gratis.

Qt Designer adalah alat seret dan lepas yang menyimpan tata letak Anda sebagai file XML .ui. Konversikan ke Python dengan utilitas pyuic5, atau memuatnya saat runtime menggunakan uic.loadUi().

PyQt6 mengikat kerangka kerja Qt 6 yang lebih baru dan membutuhkan enum dengan cakupan penuh, seperti Qt.AlignmentFlag.AlignLeft. PyQt5 menargetkan Qt 5 dan tetap menjadi versi yang paling banyak digunakan. PyQt6 juga menghilangkan beberapa modul yang sudah usang dan menambahkan dukungan DPI tinggi yang lebih baik.

Gunakan PyInstaller: jalankan pyinstaller –onefile –windowed app.py untuk menggabungkan skrip Anda, PyQt5, dan pustaka Qt ke dalam satu file yang dapat dieksekusi. Flag –windowed menyembunyikan konsol. fbs dan cx_Freeze adalah alternatif populer.

PyQt5 mudah digunakan oleh pemula jika Anda mengetahui dasar-dasarnya. PythonMemahami kelas, objek, dan pola sinyal-dan-slot sangat membantu. Qt Designer memungkinkan Anda membangun tata letak secara visual, sehingga Anda dapat membuat jendela yang berfungsi sebelum menguasai setiap widget secara manual.

PyQt membangun antarmuka pengguna desktop untuk model pembelajaran mesin — dasbor yang memuat data, memicu pelatihan atau inferensi, dan menampilkan prediksi, grafik, atau gambar. PyQt cocok dipadukan dengan NumPy, pandas, dan Matplotlib, serta membungkusnya.ping Model terlatih dalam antarmuka pengguna grafis (GUI) yang ramah.

Ya. GitHub Copilot melengkapi otomatis pola PyQt5 umum seperti pengaturan QApplication, pembuatan widget, dan koneksi sinyal-slot dari komentar atau nama fungsi. Selalu jalankan jendela yang dihasilkan untuk memastikan tata letak dan penanganan peristiwa berfungsi sebagaimana mestinya.

Ringkaslah postingan ini dengan: