Tutorial PyQt5 dengan Contoh: Membuat Python GUI dengan Qt

โšก Ringkasan Cerdas

PyQt is a Python binding for the cross-platform Qt widget toolkit, letting developers build native desktop GUIs. It wraps more than six hundred C++ classes covering windows, buttons, layouts, signals, slots, and themes for Windows, macOS, dan Linux.

  • ๐Ÿ”˜ What is PyQt: A Python binding for the Qt C++ framework, maintained by Riverbank Computing.
  • โ˜‘๏ธ Versi: PyQt4 binds Qt 4.x and 5.x; PyQt5 targets only the Qt 5.x series.
  • โœ… instalasi: The pip package manager installs PyQt5 from a wheel with a single command.
  • ๐Ÿงช First app: QApplication and QWidget create and display a basic window on screen.
  • ๏ธ Signals and slots: Widget events raise signals that connect to Python slot functions.
  • ๐Ÿค– Siap untuk AI: PyQt builds desktop front-ends that run and visualize machine learning models.

Tutorial PyQt5

The sections below take you from PyQt basics through installation, core widgets, layouts, and themes with runnable examples.

Apa itu PyQt?

PyQt adalah Python binding of the open-source widget-toolkit Qt, which also functions as a cross-platform application development framework. Qt is a popular C++ framework for writing GUI applications for all major desktop, mobile, and embedded platforms (it supports Linux, Windows, macOS, Android, iOS, Raspberry Pi, dan lainnya).

PyQt is free software developed and maintained by Riverbank Computing, a company based in England, whereas Qt is developed by a Finnish firm called The Qt Company.

Features of PyQt

Berikut adalah fitur penting dari PyQt:

PyQt consists of more than six hundred classes covering a range of features such as:

  • Antarmuka Pengguna Grafis
  • Database SQL
  • Perangkat web
  • Pemrosesan XML
  • jaringan

These features can be combined to create advanced UIs as well as standalone applications. A lot of major companies across all industries use Qt. Some examples are LG, Mercedes, AMD, Panasonic, and Harman.

Versi PyQt

PyQt is available in two editions, PyQt4 and PyQt5. PyQt4 provides glue code for binding 4.x and 5.x versions of the Qt framework while PyQt5 provides a binding for only the 5.x versions. As a result, PyQt5 is not backward compatible with the deprecated modules of the older version. In this PyQt GUI tutorial, PyQt5 will be used for the demonstration of examples. Apart from these two versions, Riverbank Computing also provides PyQt3Dโ€”the Python bindings for the Qt3D framework. Qt3D is an application framework used to create real-time simulation systems with 2D/3D rendering.

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 code under the hood. As a result, it is a complicated process to build and install it from the source compared to other Python libraries. However, you can easily install PyQt5 using 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, you must download and install pip before going forward. You can search for instructions at this link: https://pypi.org/project/pip/.

To install 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 binary for the version of 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

Now that you have successfully installed PyQt5 on your computer, you are ready to write Python GUI applications.

Let us start with a simple app in this PyQt5 tutorial which will display an empty window on your screen.

Fire up your 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

Great! It is working. It is not much, but it is enough to grasp the basics. Now in this PyQt tutorial, let us see in detail what each of the lines in your program does.

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.

In this PyQt5 example, you did not pass any arguments to QApplication. Therefore, you can also replace it with the code below and not even have to import the sys module.

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.

Here, you should remember that widgets could be nested together; the outermost widget (i.e., the widget with no parent) is called a Window.

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++ and uses the event loop mechanism to implement parallel execution. app.exec_() passes the control over to Qt, which will exit the application only when the user closes it from the GUI. That is why ctrl+c will not exit the application as in other Python programs. Since Qt has control over the app, Python events are not processed unless we set them up inside the application. Also, note that the exec method has an underscore in its name; this is because exec() was already a keyword in Python and the underscore resolves the naming conflict.

Di luar jendela kosong

In the previous section, you saw how to make a basic widget in Qt. It is now time to make some more involved interfaces with which the users can truly interact. Again, fire up your 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_())

Save the file as appone.py or anything you like and press F5 to run the program. If you have not made any mistakes, the 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.

As you can see, since we had not set any window title in the message box, a default title was provided by Python itu sendiri.

Now that it is working, let us take a look at the extra code that you have added to the previous PyQt5 example.

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")

This is the main section of the app and, as in the previous example, you start by creating an instance of QApplication followed by a simple widget, i.e. an instance of 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)

Finally, this is an example of signals and slots in Qt. In GUI-based applications, functions are executed based on the actions performed by the user, like hovering over an element or clicking a button. These actions are called 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.

Subsequently, the basic syntax to trigger a slot function in response to the signal from an event is as follows:

 widget.signal.connect(slot)

This means that whenever 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.

Therefore, it is crucial to have a high-level view of the structure of PyQt5. In this section, you will see how PyQt5 is organized internally and learn about the different modules, libraries, and API classes provided by PyQt5.

Struktur Direktori PyQt5

Struktur Direktori PyQt5

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

  • Qt: It combines all the classes/modules mentioned below into a single module. It considerably increases the memory used by the application. However, it is easier to manage the framework by only importing one module.
  • QtCore: Berisi kelas inti non-grafis yang digunakan oleh modul lain. Di sinilah loop peristiwa Qt, sinyal, dan konektivitas slot, dll. diimplementasikan.
  • QtWidget: Contains most of the widgets available in 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: provides low-level multimedia functionality.
  • QtSql: mengimplementasikan integrasi database untuk database SQL. Mendukung ODBC, MySQL, Oracle, SQLite, dan PostgreSQL.

Widget PyQt5

Here is a list of the most frequently used widgets in PyQt5:

  • QLineSunting: Ini adalah kolom masukan yang memungkinkan satu baris teks dimasukkan oleh pengguna.
line = QLineEdit()
  • Tombol QRadio: This is an input field with a selectable button, similar to the radio buttons in 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: It displays a horizontal menu bar at the top of a window. You can only add objects of the QMenu class to this bar. Those QMenu objects can further contain strings, QAction objects or other QMenu objects.
  • QToolBar: Ini adalah bilah atau panel horizontal yang dapat dipindahkan di dalam jendela. Ini mungkin berisi tombol dan widget lainnya.
  • QTab: It is used to break down the contents of a window into multiple pages that can be accessed through different tabs on top of the widget. It consists of two sections: the tab bar and the tab page.
  • 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.
  • QDock: A dock widget is a sub-window with two properties: it can be moved within the main window, and it can be docked outside the parent window to another location on the screen.

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

The addWidget() method in the grid layout takes these arguments:

  • Objek widget yang ingin Anda tambahkan ke grid
  • Koordinat x benda tersebut
  • Koordinat y benda tersebut
  • The row-span (default = 0)
  • The col-span (default = 0)

To understand it better, you can manually insert each widget as shown below.

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.

For example, adding the following line of code will change the theme of your application from default to Fusion.

app.setStyle("Fusion")

This is how the previous example will look in the Fusion Theme.

Tema

Another useful function for theming your apps is the setPalette() method. Here is the code for changing the color of different widgets using 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()

Notice that the QPalette class belongs to the QtGui module and you will need to import it for this to work. Once you have created the QPalette object, use the setColor() method to pass the name of a widget whose color you want to change and the color you want to be set.

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

This will change the color of the window to black. After you have defined your color scheme, use the setPalette() function to apply the palette to your application.

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 ships with Python and suits small, simple tools. PyQt offers far more widgets, a visual designer, and a native look, making it better for large, professional desktop applications โ€” at the cost of a steeper learning curve and GPL licensing.

Both bind the same Qt libraries and share almost identical APIs. The key difference is licensing: PyQt uses GPL or a paid commercial license, while PySide (Qt for Python) uses the LGPL, allowing closed-source distribution for free.

Qt Designer is a drag-and-drop tool that saves your layout as an XML .ui file. Convert it to Python with the pyuic5 utility, or load it at runtime using uic.loadUi().

PyQt6 binds the newer Qt 6 framework and requires fully scoped enums, such as Qt.AlignmentFlag.AlignLeft. PyQt5 targets Qt 5 and remains the most widely used version. PyQt6 also drops some deprecated modules and adds better high-DPI support.

Use PyInstaller: run pyinstaller โ€“onefile โ€“windowed app.py to bundle your script, PyQt5, and the Qt libraries into a single executable. The โ€“windowed flag hides the console. fbs and cx_Freeze are popular alternatives.

PyQt5 is beginner-friendly if you know basic Python. Understanding classes, objects, and the signals-and-slots pattern helps most. Qt Designer lets you build layouts visually, so you can create working windows before mastering every widget by hand.

PyQt builds desktop front-ends for machine learning models โ€” dashboards that load data, trigger training or inference, and display predictions, charts, or images. It pairs well with NumPy, pandas, and Matplotlib, wrapping a trained model in a friendly GUI.

Yes. GitHub Copilot autocompletes common PyQt5 patterns like QApplication setup, widget creation, and signal-slot connections from a comment or function name. Always run the generated window to confirm layouts and event handlers behave as intended.

Ringkaslah postingan ini dengan: