Last chance! 50% off DataCamp Premium
Sale ends in
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, ç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.
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
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)
Ş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 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:
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)
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.
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
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)
İ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)
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:

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.
Ö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)
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.
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.
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.
Python Yolculuğunuza Bugün Başlayın!
{count, plural, one {Kurs} other {Kurs}}
{count, plural, one {Kurs} other {Kurs}}
{count, plural, one {Kurs} other {Kurs}}
{count, plural, one {blog} other {blog}}
Dario Radečić
15 dk.

{count, plural, one {blog} other {blog}}
Abid Ali Awan
14 dk.
{count, plural, one {Eğitim} other {Eğitim}}
Adel Nehme
{count, plural, one {Eğitim} other {Eğitim}}
Kurtis Pykes
8 dk.