PyQt5 Örneklerle Eğitim: Oluşturma Python Qt ile GUI'ler

⚡ Akıllı Özet

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, macOSve Linux.

  • 🔘 What is PyQt: A Python binding for the Qt C++ framework, maintained by Riverbank Computing.
  • ☑️ Sürümleri: PyQt4 binds Qt 4.x and 5.x; PyQt5 targets only the Qt 5.x series.
  • Kurulum: 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.
  • 🤖 Yapay zekâya hazır: PyQt builds desktop front-ends that run and visualize machine learning models.

PyQt5 Eğitimi

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

PyQt nedir?

PyQT bir Python Aynı zamanda platformlar arası uygulama geliştirme çerçevesi olarak da işlev gören açık kaynaklı widget-araç seti Qt'nin bağlanması. Qt popüler bir C++ framework for writing GUI applications for all major desktop, mobile, and embedded platforms (it supports Linux, Windows, macOS, Android, iOS, Raspberry Pi ve daha fazlası).

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

PyQt'un önemli özellikleri şunlardır:

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

  • Grafik Kullanıcı Arayüzleri
  • SQL Veritabanları
  • Web araç setleri
  • XML işleme

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.

PyQt Sürümleri

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 Qt3D çerçevesi için bağlamalar. Qt3D, 2D/3D görüntülemeyle gerçek zamanlı simülasyon sistemleri oluşturmak için kullanılan bir uygulama çerçevesidir.

PyQt5 nasıl kurulur

Bu PyQt5 eğitiminde PyQt kurulumunun iki yolunu göreceğiz:

  • Tekerlek dosyalarını kullanma
  • Kaynaktan Oluşturma ve Yükleme

Qt (cute olarak telaffuz edilir) karmaşık bir sistemdir ve PyQt kod tabanı derlenmiş C++ hem de Python kaputun altındaki kod. Sonuç olarak, onu kaynaktan oluşturmak ve kurmak diğerlerine kıyasla karmaşık bir süreçtir. Python kütüphaneler. Ancak PyQt5'i tekerlekleri kullanarak kolayca kurabilirsiniz.

Tekerlekli kurulum

Tekerlekler yeni standarttır Python paketleme ve dağıtım biçimi. Basitçe söylemek gerekirse, bir tekerlek özel bir adı ve . olan bir ZIP arşividir.naber dosya uzantısı. Tekerlekler pip (Python'ın paket yöneticisi), varsayılan olarak son sürümlerine dahil edilmiştir. Python.

Yani, eğer varsa Python 3.4 veya üzeri yüklüyse, zaten pip'iniz var. Ancak, daha eski bir sürüm kullanıyorsanız 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:

) 1 Adım Komut istemini açın.
Komut İstemi'ni veya PowerShell'i açın Windows makinesi.

PyQt5'i yükleyin

) 2 Adım Aşağıdakileri yazın.

 pip install PyQt5

) 3 Adım Kurulum başarılı.
Bu PyQt5 eğitimindeki bu adım, PyQt5 whl paketini (yaklaşık 50 MB) indirecek ve sisteminize kuracaktır.

PyQt5'i yükleyin

Alternatif olarak, bir de indirebilirsiniz Windows sürümü için ikili Python bilgisayarınıza yüklendi.

Tamamlandığında, ilk GUI uygulamanızı yazmak için bu PyQt5 eğitimindeki bir sonraki bölüme geçin.

Temel PyQt Concepts ve Programlar

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.

ateş et Python IDLE ve aşağıdakileri yazın:

1 programı

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

Dosyayı app.py olarak kaydedin (ad önemli değil) ve programı çalıştırmak için F5 tuşuna basın. Alternatif olarak, uygulamayı başlatmak için kaydettiğiniz dosyaya çift tıklayın. Her şeyi doğru yaptıysanız, "app.py" başlıklı yeni bir pencere açılacaktır. GuruAşağıda gösterildiği gibi 99.

Temel PyQt 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

Bu ifade, bir GUI oluşturmak için ihtiyaç duyduğunuz tüm modülleri geçerli ad alanına aktarır. QtWidgets modülü bu derste kullanacağınız tüm önemli widget'ları içerir. Python Qt öğretici.

app = QApplication(sys.argv)

Burada QApplication sınıfının bir nesnesini yaratıyorsunuz. Bu adım PyQt5 için bir zorunluluktur; Her UI uygulaması, uygulamaya bir tür giriş noktası olarak bir QApplication örneği oluşturmalıdır. Oluşturmazsanız hatalar gösterilecektir.

sys.argv, uygulamayı kabuk aracılığıyla başlatırken veya arayüzü otomatikleştirirken uygulamaya iletebileceğiniz komut satırı parametrelerinin listesidir.

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

Sonra, QWidget sınıfının bir nesnesini yaparız. QWidget, Qt'deki tüm UI nesnelerinin temel sınıfıdır ve bir uygulamada gördüğünüz hemen hemen her şey bir widget'tır. Buna diyaloglar, metinler, düğmeler, çubuklar vb. dahildir. Karmaşık kullanıcı arayüzleri tasarlamanıza olanak tanıyan özellik, widget'ların iç içe geçebilmesidir, yani bir widget'ın içinde başka bir widget'ın içinde bulunan bir widget'ınız olabilir. Bunu bir sonraki bölümde eylem halinde göreceksiniz.

w.resize(300,300)

QWidget sınıfının yeniden boyutlandırma yöntemi, herhangi bir widget'in boyutlarını ayarlamanıza olanak tanır. Bu durumda pencereyi 300 x 300 piksel olarak yeniden boyutlandırdınız.

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

`setWindowTitle()` metodu, argüman olarak bir dize geçirmenize olanak tanır ve bu dizeyi pencerenin başlığı olarak ayarlar. PyQt5 örneğinde, başlık çubuğu şu şekilde görüntülenecektir: Guru99

w.show()

show() basitçe widget'ı monitör ekranında görüntüler.

sys.exit(app.exec_())

app.exec_() yöntemi Qt/'yi başlatır.C++ olay döngüsü. Bildiğiniz gibi PyQt büyük oranda şu şekilde yazılmıştır: 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 programlar. Qt uygulama üzerinde kontrole sahip olduğundan, Python olaylar, biz onları uygulamanın içinde ayarlamadığımız sürece işlenmez. Ayrıca exec yönteminin adında bir alt çizgi bulunduğunu unutmayın; bunun nedeni exec() işlevinin zaten bir anahtar kelime olmasıdır. Python and the underscore resolves the naming conflict.

Boş pencerelerin ötesinde

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 ve aşağıdakileri yazın.

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 aşağıda gösterildiği gibi bir miktar metin ve bir düğme içeren yeni bir pencere açılacaktır.

Boşun ötesinde Windows

  1. İlk penceredeki butona tıkladığınızda yazdığınız metnin yer aldığı yeni bir mesaj kutusu açılacak.
  2. Artık ek metnin görünürlüğünü değiştirmek için Ayrıntıları Gizle/Ayrıntıları Göster düğmesine tıklayabilirsiniz.

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

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

Bu, PyQt5 örneklerinde kullandığınız diğer bazı widget'ları (QLabel, QPushButton ve QMessage) içe aktarır.Box.

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

Burada, bir mesaj kutusu bileşeni oluşturan ve düğmelere ve diğer alanlara bazı metinler ekleyen dialog adında bir yöntem tanımladınız.

Diyalog yöntemi, belirli bir widget'ta (bu durumda btn PushButton) bir düğmeye basıldığında programın ana bloğundan çağrılır. Bu düğmede tetiklenen click olayı bu işlevin yürütülmesine neden olur. Böyle bir fonksiyona Qt'de slot adı verilir ve hakkında daha fazla bilgi edineceksiniz. sinyalleri hem de yuvaları önümüzdeki paragraflarda.

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)

Bu uygulamaya iki yeni widget eklediniz: QLabel ve QPushButton. QLabel, bir widget içindeki düzenlenemeyen metni veya yer tutucuları yazdırmak için kullanılırken, QPushButton tıklanabilir bir düğme oluşturmak için kullanılır.

Burada dikkat edilmesi gereken kritik nokta, label ve btn nesnelerini oluşturduğunuzda, window nesnesini (w) QLabel ve QPushButton yapıcılarına aktarıyor olmanızdır. PyQt5'te yuvalama bu şekilde çalışır. Başka bir widget'ın içinde bir widget oluşturmak için ana widget'ın referansını çocuğun yapıcısına iletirsiniz.

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

move(), bir widget'in ana widget'a göre konumunu ayarlamak için kullanılır. İlk durumda, etiket pencerenin solundan 100 piksel ve üstünden 130 piksel taşınacaktır.

Benzer şekilde, düğme pencerenin solundan 110 piksel ve üst kısmından 150 piksel uzağa yerleştirilecektir. Bu örnek, yerleşim planlarını elde etmenin kaba bir yoludur ve genellikle üretimde kullanılmaz; buraya yalnızca öğrenme amacıyla dahil edilmiştir. Qt, bu PyQt eğitiminin gelecek bölümlerinde ayrıntılı olarak göreceğiniz farklı düzenleri destekler.

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 olaylar. app.exec_() yönteminin kontrolü Qt'ye aktardığını hatırlayın. olay döngü. Olay döngüsünün amacı budur: olayları dinlemek ve yanıt olarak eylemler gerçekleştirmek.

Bir kullanıcının bir düğmeye tıklaması gibi bir olay meydana geldiğinde, karşılık gelen Qt widget'ı bir işaret. Bu sinyaller aşağıdakilere bağlanabilir: Python fonksiyonlar (bu örnekteki diyalog fonksiyonu gibi) böylece bir sinyal tetiklendiğinde fonksiyon yürütülür. Bu işlevler denir yuvaları Qt dilinde.

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 işaret bir tarafından tetiklenir Widget, bağlı yarık fonksiyon yürütülecektir. Özetle, sinyaller ve yuvalar Qt tarafından nesneler arasında iletişim kurmak ve bileşenlerin yeniden kullanılabilirliğini ve etkileşimini kolaylaştırmak için kullanılır.

Artık widget'ları nasıl yerleştireceğinizi ve sinyalleri ve yuvaları kullanarak etkileşimleri nasıl uygulayacağınızı bildiğinize göre, PyQt uygulamalarınızda kullanabileceğiniz faydalı widget'ların ve diğer sınıfların bir listesini burada bulabilirsiniz.

Bileşenler ve Widget'lar

PyQt'ta GUI uygulamaları oluşturmak için çok sayıda widget bulunmaktadır. Ancak PyQt5 ile sınıfların farklı modüller halinde yeniden karıştırılması ve lisanslarda revizyonlar yapıldı.

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.

PyQt5 Dizin Yapısı

PyQt5 Dizin Yapısı

Bunlar, tarafından kullanılan temel modüllerdir. PythonQt bağlaması, özellikle 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: Diğer modüller tarafından kullanılan temel grafiksel olmayan sınıfları içerir. Burası Qt olay döngüsünün, sinyallerin ve yuva bağlantısının vb. uygulandığı yerdir.
  • QtWidget'lar: Contains most of the widgets available in PyQt5.
  • QtGui: GUI bileşenlerini içerir ve QtCore modülünü genişletir.
  • QtNetwork: Qt aracılığıyla ağ programlamayı uygulamak için kullanılan sınıfları içerir. TCP sunucularını, TCP yuvalarını, UDP yuvalarını, SSL işlemeyi, ağ oturumlarını ve DNS aramalarını destekler.
  • QtMultimedya: provides low-level multimedia functionality.
  • QtSql: SQL veritabanları için veritabanı entegrasyonunu uygular. ODBC'yi destekler, MySQL, Oracle, SQLite, ve PostgreSQL.

PyQt5 Widget'ları

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

  • QLineDüzenle: Kullanıcının tek satırlık metin girmesine olanak sağlayan giriş alanıdır.
line = QLineEdit()
  • QRadioButton: 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: Seçilebilir öğelerin listesini içeren bir açılır menüyü görüntülemek için kullanılır.
drop = QComboBox(w)
drop.addItems(["item one", "item two", "item three"])
  • QKontrolBox: Seçili olduğunda işaretlenen etiketin önünde, radyo düğmelerine benzer şekilde seçilebilir bir kare kutu görüntüler.
check = QCheckBox("button title")
  • QMenüBar: 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: Pencere içerisinde hareket ettirilebilen yatay çubuk veya bölmedir. Düğmeler ve diğer widget'lar içerebilir.
  • 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.
  • QScrollBarBu, kullanıcının bir pencere içinde yukarı ve aşağı kaydırmasını sağlayan kaydırma çubukları oluşturmak için kullanılır. Hareketli bir kaydırıcıdan ve bir kaydırıcıdan oluşur. track ve kaydırıcıyı yukarı veya aşağı kaydırmak için iki düğme.
scroll = QScrollBar()
  • QSplitter: Ayırıcılar, widget'ların düzgün bir şekilde gruplandırılması ve karmaşık görünmemesi için bir pencerenin içeriğini ayırmak için kullanılır. QSplitter, PyQt5'te bulunan birincil düzen işleyicilerinden biridir ve içeriği hem yatay hem de dikey olarak bölmek için kullanılır.
  • 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.

Düzenler ve Temalar

Önceki PyQt5 örneklerinde, GUI'nizdeki widget'ların konumlarını ayarlamak için yalnızca move() ve resize() yöntemlerini kullanıyordunuz.

Ancak PyQt, uygulamalar için gelişmiş kullanıcı arayüzleri oluşturmak için kullanılabilecek sağlam bir düzen yönetimi motoruna sahiptir. Bu bölümde, Qt'da düzenleri oluşturmak ve yönetmek için kullanılan iki önemli sınıfı öğreneceksiniz.

  1. QBoxDüzen
  2. QGrid Düzeni

QBoxDüzen

QBoxDüzen, düzenin alt bileşenlerini yatay veya dikey bir satırda hizalamak için kullanılır. Q'dan miras kalan iki ilgi sınıfıBoxDüzen:

  • QHBoxDüzen: alt widget'ları yatay olarak hizalamak için kullanılır.
  • QVBoxDüzen: alt widget'ları dikey olarak hizalamak için kullanılır.

Örneğin, üç düğme QH ile bu şekilde hizalanıyorBoxDüzen görünecek.

QBoxDüzen

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

Ve QV'de bu şekilde görüneceklerBoxDüzen.

QBoxDüzen

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

Bu noktada açıklamaya ihtiyaç duyan tek işlev addWidget() yöntemidir. H'ye widget eklemek için kullanılırBox veya VBox düzen. Bir sonraki bölümde göreceğiniz gibi farklı sayıda parametre aldığı diğer düzenlerde de kullanılır. Widget'lar düzenin içinde onları eklediğiniz sıraya göre görünecektir.

QGrid Düzeni

QGridLayout, widget'ların bir ızgara biçiminde (bir matris veya 2B dizi gibi) düzenlendiği arayüzler oluşturmak için kullanılır. Bir ızgara düzenine öğe eklemek için, ızgaradaki satır ve sütunların sayısını ve bu öğelerin konumunu tanımlamak üzere matris gösterimini kullanabilirsiniz.

Örneğin, 3*3'lük bir ızgara (yani üç satır ve üç sütundan oluşan bir ızgara) oluşturmak için aşağıdaki kodu yazacaksınız:

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

Bu çıktı olacaktır:

QGrid Düzeni

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

  • Izgaraya eklemek istediğiniz widget nesnesi
  • Nesnenin x koordinatı
  • Nesnenin y koordinatı
  • 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_())

Izgara şöyle görünecek:

QGrid Düzeni

Birden fazla satır veya sütunu yaymak için rowspan ve colspan parametrelerini addWidget() işlevine de iletebilirsiniz.

Örneğin,

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

Bu, her iki sütuna da uzanan bir düğme oluşturacaktır.

QGrid Düzeni

Temalar

PyQt5, uygulamalarınızda kullanabileceğiniz bazı yerleşik temalarla birlikte gelir. setStyle() QApplication örneğinde çağrılan yöntem, uygulamanıza belirli bir tema ayarlamak için kullanılır.

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.

Temalar

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

İşte sonuç.

Temalar

setPalette() yöntemini kullanmak için öncelikle bir palet tanımlamanız gerekir. Bu, QPalette sınıfının bir nesnesini oluşturarak yapılır.

 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)

Uygulamanız için bazı temel temalar oluşturmak istiyorsanız yapmanız gereken tek şey budur. PyQt ayrıca widget'larınızın görünümünü tanımlamak için stil sayfaları kullanmanıza da olanak tanır. CSS'ye aşinaysanız, Qt Style Sheets'i kullanarak uygulamanız için gelişmiş stilleri kolayca tanımlayabilirsiniz.

SSS

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.

Bu yazıyı şu şekilde özetleyin: