Ana içeriğe atla

PySide6 Eğitimi: Python ile GUI Uygulamaları Geliştirme

İlk masaüstü uygulamanızı oluşturmak ve popüler veri bilimi kütüphanelerinden veri görselleştirmelerini içine eklemek için PySide6'nın temellerini öğrenin.
Güncel 3 Eki 2026  · 14 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Gerçeği kabul edelim: Teknik olmayan paydaşlar ya da son kullanıcılar, bir veri uygulayıcısı olarak oluşturduğunuz Jupyter Notebook'lar veya Python betikleriyle ilgilenmez. Çözümle etkileşim kurmak ve sonuçları bizzat görmek isterler.

Bu nedenle çalışmalarımızı içgörü raporlarına, panolara veya veri bilimi uygulamalarına dönüştürmemiz gerekir. Raporlar, panolar ve web uygulamaları yaygınken, daha az keşfedilmiş bir alternatif masaüstü uygulamalarıdır.

Kullanıcıların düğmelere tıklayabildiği, formları doldurabildiği ve menülerde gezinebildiği — hem de masaüstünüzde net ve hoş bir arayüzle — bir uygulama tasarlayabildiğinizi hayal edin. Ne kadar havalı olurdu?

Bu eğitimde PySide6'yı tanıtacak, ilk kurulumlarda size yardımcı olacak ve ilk masaüstü uygulamanızı oluşturacağız. Ayrıca yaygın olarak kullanılan widget'ları keşfedecek, popüler veri bilimi kütüphanelerinden veri görselleştirmelerini dahil edecek ve faydalı kaynaklar paylaşacağız.

PySide6 nedir?

PySide6, çekici ve sezgisel grafik arayüzlerle Python programlama dili kullanarak yazılım uygulamaları oluşturmanızı sağlayan bir araç takımıdır.

Yazılım için bir yapı taşları seti gibidir; programlamaya yeni başlayanların bile bir uygulamayı oluşturan görsel ve etkileşimli öğeleri bir araya getirmesine olanak tanır. PySide6 ile fikirlerinizi Windows, Mac, Linux ve hatta mobil platformlarda çalışan gerçek, işlevsel uygulamalara dönüştürebilirsiniz.

PySide6 kurulumu

Kurulum için, Python'un zaten yüklü olduğunu ve alışık olduğunuz IDE'yi kullandığınızı varsayıyoruz. Kurulum oldukça basittir.

Terminalinizi açın ve aşağıdakini çalıştırın; hazırsınız.

pip3 install pyside6

İlk PySide6 Uygulamanızı Oluşturma

Artık kütüphaneyi başarıyla kurduğunuza göre, sıradaki adım ilk PySide6 uygulamanızı oluşturmaktır. Bu aynı zamanda, masaüstü uygulamalarının tadını verirken kurulumun düzgün çalışıp çalışmadığını test etmenin bir yoludur.

“main.py” adlı bir Python dosyası oluşturun ve aşağıdaki kodu kopyalayıp yapıştırın.

import sys
from PySide6.QtWidgets import QApplication, QLabel
app = QApplication(sys.argv)
label = QLabel('Hello, PySide6!')
label.show()
sys.exit(app.exec_())

Kodu bir dakika içinde anlayacağız, ancak önce Python dosyasını terminalinizden aşağıdaki gibi çalıştırın:

python3 run main.py

Tebrikler, ilk masaüstü uygulamanızı oluşturdunuz! Şuna benzer bir şey görüyor olmalısınız:

“Hello, PySide6” masaüstü uygulaması (Görsel: yazar)

“Hello, PySide6” masaüstü uygulaması (Görsel: yazar)

Şimdi, az önce gördüğümüz basit PySide6 betiğini parçalara ayıralım. Önce ilgili modülleri içe aktarıyoruz:

import sys
from PySide6.QtWidgets import QApplication, QLabel
  • sys, Python yorumlayıcısı tarafından kullanılan veya sürdürülen bazı değişkenlere erişim sağlayan bir Python standart kitaplık modülüdür. Bir PySide6 uygulaması bağlamında genellikle komut satırı argümanları için kullanılır. Daha fazla bilgi için komut satırı argüman ayrıştırma eğitimimize göz atın.
  • QApplication ve QLabel, PySide6.QtWidgets içinden içe aktarılır. QApplication, herhangi bir GUI uygulaması için gerekli olan PySide6'daki temel uygulama yönetimi sınıfıdır. QLabel, metin görüntüleyen ve basit bir mesaj göstermek için kullandığımız bir widget'tır.

Sonra bir QApplication örneği oluşturuyoruz.

app = QApplication(sys.argv)

Bu, her PySide6 uygulamasında gereklidir. sys.argv, komut satırı argümanlarını uygulamaya iletmek için kullanılır. Komut satırı argümanlarını kullanmasanız bile sys.argv yine de gereklidir; çünkü QApplication'ı bazı varsayılanlarla başlatır.

label = QLabel('Hello, PySide6!')

Daha sonra "Hello, PySide6!" metniyle bir QLabel widget'ı oluşturuyoruz. Bu, uygulama penceremizde görüntülenecek metindir.

label.show()

Bu satır, label'ı görünür hale getirir. Varsayılan olarak, PySide6'daki widget'lar siz açıkça göstermedikçe görünür değildir.

sys.exit(app.exec_())

Son olarak bu satır, uygulamanın olay döngüsünü başlatır. QApplication'ın exec_() yöntemi, fare tıklamaları ve klavye tuşlamaları gibi tüm olayların işlendiği uygulamanın ana döngüsüne girer. sys.exit() çağrısı, uygulama kapatıldığında temiz bir çıkış yapılmasını sağlar. Olay döngüsü, QApplication örneği pencerenin kapanması gibi bir çıkış sinyali alana kadar çalışır.

Daha önce çıktıda gördüğümüz gibi, betiğimiz “Hello, PySide6!” metnini görüntüleyen tek pencereli, temel bir GUI uygulaması oluşturuyor.

PySide6 Widget'larını GUI Uygulamasına Dahil Etme

PySide6 ve GUI'ler bağlamında widget'lar, bir yazılım uygulamasında kullanıcı arayüzü oluşturmak için kullanılan temel yapı taşlarıdır. Widget'ları, herhangi bir yazılım uygulamasında gördüğünüz ve etkileşim kurduğunuz çeşitli öğeler olarak düşünün — örneğin düğmeler, metin kutuları, etiketler, kaydırıcılar ve açılır menüler.

İlk PySide6 uygulamasında, metin görüntülemek için kullanılan bir etiket widget'ı gördük. PySide6 ile bir GUI oluştururken, esasen bu widget'ları uygulamamız için anlamlı olacak şekilde bir pencerede düzenliyoruz. Her widget belirli bir amaca hizmet eder ve kullanıcıyla farklı biçimde etkileşime girer.

Kapsamlı widget listesi ve kullanımları resmi dokümantasyonda bulunabilir; ancak en yaygın kullanılanlar şunlardır:

  • QLabel: Metin veya görselleri görüntülemek için kullanılan bir widget. Genellikle yönergeleri, mesajları göstermek ya da bir GUI'de görselleri sergilemek için kullanılır.
  • QPushButton: Kullanıcıların belirli eylemleri tetiklemek için etkileşimde bulunabildiği tıklanabilir bir düğme. Form göndermek, süreç başlatmak ve daha fazlası için kullanılan, GUI geliştirmenin en temel widget'larından biridir.
  • QLineEdit: Kullanıcıların tek satır metin girmesine ve düzenlemesine olanak tanıyan bir widget. İsim veya sayı gibi metin girdisi gereken formlarda ve ayarlarda yaygın olarak kullanılır.
  • QComboBox: Kullanıcıların önceden tanımlanmış seçenekler listesinden bir seçim yapmasına veya kendi metnini yazmasına olanak tanıyan, açılır liste ve metin alanının birleşimi.
  • QCheckBox: Kullanıcıların işaretleyip kaldırabileceği bir kutu sunar. Genellikle özellikleri etkinleştirmek/devre dışı bırakmak veya hüküm ve koşulları kabul etmek gibi durumları belirtmek için kullanılır.
  • QRadioButton: Bir kümeden tek bir seçimi amaçlayan radyo düğmeleri, bir grup içinde tek seçime izin verir; cinsiyet, yaş aralıkları veya başka münhasır seçimler gibi seçenekler için idealdir.
  • QTextEdit: Çok satırlı metin düzenleme için bir widget; QLineEdit'ten daha fazla işlev sunar; metin biçimlendirme, kopyala-yapıştır ve kaydırma gibi.
  • QSlider: Belirli bir aralıkta sayısal değer girişi için yararlı olan bir kaydırıcı denetimi sağlar; örneğin sesi ayarlama veya fiyat filtresi belirleme.
  • QSpinBox: Kullanıcıların belirli bir aralıktan sayı seçmesine olanak tanıyan bir widget. Kullanıcılar küçük yukarı/aşağı oklarıyla sayıyı artırıp azaltabilir.
  • QProgressBar: Bir görevin ilerlemesini gösterir. Tamamlanma yüzdesini görsel olarak temsil eder; dosya yükleme veya indirme gibi süreçlerde ilerlemeyi izlemek için kullanışlıdır.
  • QTableWidget: Verileri tablo biçiminde görüntülemek için kullanışlıdır. Verilerin satır ve sütunlara düzenlenmesini sağlar; yapılandırılmış verilerin görüntülenmesini ve etkileşimini kolaylaştırır.

Bu yaygın widget'ları kullanan ve bunları görüntüleyen bir uygulama oluşturalım:

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QLineEdit, QComboBox, QCheckBox, QRadioButton, QTextEdit, QSlider, QSpinBox, QProgressBar, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QWidget

class DemoWindow(QMainWindow):
   def __init__(self):
       super().__init__()

       # Main Widget and Layout
       main_widget = QWidget()
       self.setCentralWidget(main_widget)
       main_layout = QVBoxLayout(main_widget)

       # Function to add widget with label
       def add_widget_with_label(layout, widget, label_text):
           hbox = QHBoxLayout()
           label = QLabel(label_text)
           hbox.addWidget(label)
           hbox.addWidget(widget)
           layout.addLayout(hbox)

       # QLabel
       self.label = QLabel('Hello PySide6!')
       add_widget_with_label(main_layout, self.label, 'QLabel:')

       # QPushButton
       self.button = QPushButton('Click Me')
       self.button.clicked.connect(self.on_button_clicked)
       add_widget_with_label(main_layout, self.button, 'QPushButton:')

       # QLineEdit
       self.line_edit = QLineEdit()
       add_widget_with_label(main_layout, self.line_edit, 'QLineEdit:')

       # QComboBox
       self.combo_box = QComboBox()
       self.combo_box.addItems(['Option 1', 'Option 2', 'Option 3'])
       add_widget_with_label(main_layout, self.combo_box, 'QComboBox:')

       # QCheckBox
       self.check_box = QCheckBox('Check Me')
       add_widget_with_label(main_layout, self.check_box, 'QCheckBox:')

       # QRadioButton
       self.radio_button = QRadioButton('Radio Button')
       add_widget_with_label(main_layout, self.radio_button, 'QRadioButton:')

       # QTextEdit
       self.text_edit = QTextEdit()
       add_widget_with_label(main_layout, self.text_edit, 'QTextEdit:')

       # QSlider
       self.slider = QSlider()
       add_widget_with_label(main_layout, self.slider, 'QSlider:')

       # QSpinBox
       self.spin_box = QSpinBox()
       add_widget_with_label(main_layout, self.spin_box, 'QSpinBox:')

       # QProgressBar
       self.progress_bar = QProgressBar()
       add_widget_with_label(main_layout, self.progress_bar, 'QProgressBar:')

       # QTableWidget
       self.table_widget = QTableWidget(5, 3) 
       for i in range(5):
           for j in range(3):
               item = QTableWidgetItem(f"Cell {i+1},{j+1}")
               self.table_widget.setItem(i, j, item)
       add_widget_with_label(main_layout, self.table_widget, 'QTableWidget:')

   def on_button_clicked(self):
       self.label.setText('Button Clicked!')

# Run the application
app = QApplication(sys.argv)
window = DemoWindow()
window.show()
sys.exit(app.exec_())

Çıktı aşağıdaki gibidir:

Widget'lar masaüstü uygulaması (Görsel: yazar)

Widget'lar masaüstü uygulaması (Görsel: yazar)

En yaygın widget'ları içeren bir masaüstü uygulamasını başarıyla oluşturduk. Anlamayı kolaylaştırmak için her bir widget'ın yanına etiketler ekledik. Bu örnek bir uygulama olsa da, artık bu popüler widget'lardan birini daha karmaşık uygulamalarımız için seçip kullanabiliriz.

PySide6, Matplotlib ve Seaborn Kullanarak Bir Veri Görselleştirme Uygulaması

Bu uygulamayı oluşturmak için önce popüler bir veri kümesi seçecek ve bağımsız görselleştirmeler oluşturacağız. Bu adım, veri bilimi çalışmalarında günlük olarak yaptığımız keşifsel veri analizine benzer. Ardından bu görselleştirmeleri, raporlarımızı ve analizlerimizi etkileşimli bir masaüstü uygulamasına dönüştürür gibi, bir masaüstü uygulamasına saracağız.

Başlamadan önce, terminalde aşağıdaki komutu çalıştırarak gerekli tüm kütüphanelere sahip olduğumuzdan emin olalım.

pip3 install matplotlib seaborn

Adım 1: Basit bağımsız görselleştirmeler oluşturma

Burada, Python görselleştirme paketi Seaborn'da yerleşik olarak bulunan popüler “iris veri kümesini” yüklüyoruz. Aynı paketi, Matplotlib ile birlikte, görselleştirmeleri oluşturmak için kullanıyoruz. Seaborn ile çizim yapmayı kapsamlı biçimde anlamak için Python Seaborn görselleştirme rehberimize göz atmak isteyebilirsiniz.

import seaborn as sns
import matplotlib.pyplot as plt
# Load the Iris dataset
iris = sns.load_dataset("iris")

Ardından görselleştirmeleri şu şekilde oluşturuyoruz:

plt.figure(figsize=(6, 4))
sns.scatterplot(data=iris, x="sepal_length", y="sepal_width", hue="species")
plt.title("Sepal Length vs Sepal Width")
plt.show()

İlk görselleştirme, türe göre renklendirilmiş çanak yaprak uzunluğu vs. çanak yaprak genişliği saçılım grafiğidir.

Görselleştirme #1: Çanak yaprak uzunluğu vs. çanak yaprak genişliği (Görsel: yazar)

Görselleştirme #1: Çanak yaprak uzunluğu vs. çanak yaprak genişliği (Görsel: yazar)

İkinci görselleştirme, türe göre renklendirilmiş taç yaprak uzunluğu histogramıdır.

plt.figure(figsize=(6, 4))
sns.histplot(iris, x="petal_length", hue="species", kde=True)
plt.title("Histogram of Petal Length")
plt.show()

Ve çıktıyı şöyle görüyoruz:

Görselleştirme #2: Taç yaprak uzunluğu histogramı (Görsel: yazar)

Görselleştirme #2: Taç yaprak uzunluğu histogramı (Görsel: yazar)

Son olarak, farklı türlerde taç yaprak genişliğinin dağılımını gösteren bir kutu grafiği çizelim.

plt.figure(figsize=(6, 4))
sns.boxplot(x="species", y="petal_width", data=iris)
plt.title("Box Plot of Petal Width")
plt.show()

Görselleştirme aşağıdaki gibidir:

Görselleştirme #3: Taç yaprak genişliği kutu grafiği (Görsel: yazar)

Bu grafikler, Iris veri kümesine farklı açılardan içgörü sağlar; iris türleri arasında çeşitli özelliklerin ilişkilerini ve dağılımlarını ortaya koyar.

Adım 2: Görselleştirmeleri masaüstü uygulamasına entegre etme

Önce kodu görelim ve anlayalım.

import sys
import seaborn as sns
from PySide6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

class IrisVisualizer(QMainWindow):
   def __init__(self):
       super().__init__()
       self.setWindowTitle("Iris Dataset Visualizations")
       self.setGeometry(100, 100, 1200, 900)  # x, y, width, height
       self.initUI()

   def initUI(self):
       central_widget = QWidget(self)
       self.setCentralWidget(central_widget)
       layout = QVBoxLayout(central_widget)

       # Adding multiple plots
       self.addScatterPlot(layout)
       self.addHistogram(layout)
       self.addBoxPlot(layout)

   def addPlotCanvas(self, layout, plot_func):
       canvas = FigureCanvas(Figure(figsize=(6, 4)))
       plot_func(canvas.figure)
       layout.addWidget(canvas)

   def addScatterPlot(self, layout):
       def scatter_plot(figure):
           iris = sns.load_dataset("iris")
           ax = figure.add_subplot(111)
           sns.scatterplot(data=iris, x="sepal_length", y="sepal_width", hue="species", ax=ax)
           ax.set_title("Sepal Length vs Sepal Width")

       self.addPlotCanvas(layout, scatter_plot)

   def addHistogram(self, layout):
       def histogram(figure):
           iris = sns.load_dataset("iris")
           ax = figure.add_subplot(111)
           sns.histplot(iris, x="petal_length", hue="species", kde=True, ax=ax)
           ax.set_title("Histogram of Petal Length")

       self.addPlotCanvas(layout, histogram)

   def addBoxPlot(self, layout):
       def box_plot(figure):
           iris = sns.load_dataset("iris")
           ax = figure.add_subplot(111)
           sns.boxplot(x="species", y="petal_width", data=iris, ax=ax)
           ax.set_title("Box Plot of Petal Width")

       self.addPlotCanvas(layout, box_plot)

# Run the application
app = QApplication(sys.argv)
window = IrisVisualizer()
window.show()
sys.exit(app.exec_())

Uygulamayı PySide6'nın QMainWindow sınıfını genişleten IrisVisualizer sınıfı etrafında yapılandırıyoruz. Bu sınıf, ana pencereyi ve düzenini ayarlayarak görselleştirmelerimiz için bir kap görevi görür. Her grafik, Matplotlib'in PySide6 widget'ları olarak Matplotlib figürlerinin görüntülenmesini sağlayan FigureCanvasQTAgg kullanılarak GUI'ye gömülür.

Entegrasyonumuzun kilit noktası addPlotCanvas yöntemidir. Bu yöntem bir Matplotlib figürü oluşturur, üzerine bir grafik çizer ve ardından bu figürü uygulamanın düzenine gömer. addScatterPlot, addHistogram ve addBoxPlot gibi belirli yöntemler, daha önce bağımsız olarak çizdiğimiz grafiklerin her birini tanımlar. Ana pencerenin yerleşimi, tüm grafiklerin dikey olarak istiflendiği bir dikey kutu düzeni (QVBoxLayout) olarak ayarlanmıştır.

Son uygulamamızı görelim:

Iris veri kümesi görselleştirmeleri masaüstü uygulaması (Görsel: yazar)

Iris veri kümesi görselleştirmeleri masaüstü uygulaması (Görsel: yazar)

Bu uygulama, Jupyter Notebook'taki tek bir grafikten daha iyi değil mi? Elbette bu basit bir örnek; ancak bu uygulamaların ardındaki kavramları anladıktan sonra, bunları tam teşekküllü bir veri içgörüleri panosuna veya bir veri bilimi uygulamasına dönüştürebiliriz.

Sonuç

Bu eğitim, veri uygulayıcılarının en aşina olduğu dil — Python ile GUI masaüstü uygulamaları oluşturmasını sağlayan bir Python kütüphanesi olan PySide6'yı tanıttı. PySide6'yı kurmakla başladık ve ilk masaüstü uygulamamızı oluşturduk.

Bunu daha da genişleterek, masaüstü uygulamalarında en sık kullanılan widget'ları kapsadık.

Son olarak, Seaborn ve Matplotlib gibi popüler kütüphanelerden görselleştirmeleri doğrudan PySide6 uygulamalarımıza nasıl dahil edeceğimizi anladık.

Daha fazla öğrenmek için resmi dokümantasyona başvurmanızı ve merakınızı takip ederek favori uygulamalarınızı oluşturmanızı öneririz. Alternatif olarak, farklı bir kütüphane olan Tkinter'ı kullanarak Python'da GUI masaüstü uygulamaları oluşturan eğitimimize de göz atabilirsiniz.


Arunn Thevapalan's photo
Author
Arunn Thevapalan
LinkedIn
Twitter

Kıdemli veri bilimcisi olarak, işletmelerin veriye dayalı daha iyi kararlar almasına yardımcı olmak için büyük ölçekli makine öğrenimi çözümleri tasarlıyor, geliştiriyor ve uyguluyorum. Veri bilimi yazarı olarak, öğrendiklerimi, kariyer tavsiyelerimi ve ayrıntılı uygulamalı eğitimleri paylaşıyorum.

Konular
Python

Python Yolculuğunuza Bugün Başlayın!

{count, plural, one {Kurs} other {Kurs}}

Orta Seviye Python

{hours} sa
1.4M
Matplotlib kullanarak görselleştirmeler oluşturarak ve pandas ile DataFrames'i manipüle ederek veri bilimi becerilerinizi geliştirin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

{count, plural, one {blog} other {blog}}

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

{count, plural, one {blog} other {blog}}

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

{count, plural, one {Eğitim} other {Eğitim}}

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

{count, plural, one {Eğitim} other {Eğitim}}

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör