PyQt5 ve Pyside2

PyQt5 Nedir ?
Pyside2 Nedir ?

Ne işe yarıyorlar? Benzerler ise farkları nedir?

Pyside öğreten bir YouTube Kanalı var mı ? (Sadece yabancı videolar bulabildim)

Ben şuana kadar PyQt5 kullanarak Windows XP’yi anımsatan uygulamalar yapabildim.
Bunun gibi :
Ekran görüntüsü 2020-10-26 191538

Pyside2 ile ilgili olarak da şöyle modern tasarımlara rastladım :

“Bu soruları burada sormadan önce neden kendin araştırıp öğrenmiyorsun?” diye sorabilirsiniz.
Emin olun elimden geldiği kadar incelemeye çalıştım. Fakat çok da bir şey anlayamadım. Üstelik uzatıldıkça uzatan İngilizce kaynaklı yazılar da vardı.
Burada söylenebilecek kısa ve öz cümleler daha yararlı olacaktır kendi açımdan.

Son olarak merak ettiğim bir şey daha var.
Geçen sefer forumdaki kullanıcılardan birisinden blackjack proje önerisi almıştım. Şuanda neredeyse
bitirmiş sayılırım.
Bunu daha sonra masaüstü uygulaması gibi hakikaten bir oyuna benzeteceğim. Yani arayüzünü tasarlayıp işlevlendireceğim anlayacağınız.
Alttan iki tane güzel kart görünümünde buton çıkartmak istiyorum. Bunu mesela PySide2 ile yapmak mümkün mü ?
Bu butonların da düz bir şekilde görünmesini istemiyorum. Biri biraz sola eğik, diğeri ise sağa eğik olacak şekilde.
Mesela :


Oklar yönünde eğik olmasını ve bu butonların da güzel bir karta benzemesini istersem, bunu pyside2 ile yapmak mümkün müdür ? Ya da başka bir yolu var mı ?

Sen black jack mi yapacaksın

Butonların bi çerçeveleri oluyor bildiğim kadarıyla

Yaptım bile. Sadece terminal bazlı kullanımlısını yaptım.
Arayüzlü bir şey yapacaktım ancak çok çirkin görünecekti. Anlattığım bir takım şeylerin nasıl yapıldığını bilmediğim için hemen girişmedim arayüze.

Windows Xp nedir neden herkes programlarını ona benzetiyor

Kodları özelden atar mısın

Bunları tartışmanın yeri burası değil. Forum kirliliği oluşmasın diye olması gereken konunun altında sor bu tip soruları.

Henüz atamam. Ufak eksikler var onları tamamlamalıyım önce.

Aşağıdaki bağlantıları kullanarak ikisi arasındaki farkların neler olduğunu okuyabilirsiniz.

1 Beğeni
  • Aralarında teknik olarak neredeyse hiç fark yok, ikiside Qt Api’yı sunuyor. Kütüphaneleri import ederken sadece PyQt5 yerine PySide2 yazmanız yeterli (PySide2 kurulu ise).

  • PyQt, RiverBank isimli bir firma tarafından geliştirilirken, PySide, Qt’nin sahibi olan Qt Company tarafından geliştiriliyor.

  • PyQt, GPL v3 ve RiverBank ticari lisansı ile dağıtılırken, PySide LGPL v3 ve Qt ticari lisansı ile dağıtılıyor. Not: Qt’nin kendisi LGPL ve Qt ticari lisansı ile dağıtılıyor.

  • RiverBank, PyQt’nin 5.7 ve sonrasındaki sürümleri için Qt araçlarını wheel dosyası içerisinde yayınlamayı bıraktılar. Yani PyQt’nin 5.6 sürümünden sonraki sürümlerde Qt araçlarını kullanamazsınız. Bunun aksine, Qt Company PySide2 için hala resmi olarak Qt araçlarını (designer, linguist) yayınlıyor (wheel dosyası içerisinde). Not: PyQt’nin 5. sürümü için yayınlanan Qt araçlarını iki hayırsever geliştirici arkadaş Sourceforge’da ve Pypi’da paylaştılar. Ancak 5.7 ve sonrasındaki sürümler için sorun çıkarabilir, çünkü doğrudan Qt Company, RiverBank veya Qt Company ile anlaşmalı başka bir şirket tarafından yayınlanmıyorlar.

  • PyQt’nin daha büyük bir topluluk tarafından kullanılmasının sebebi, PySide’dan önce geliştirilmeye başlanması. PyQt5’in ilk kararlı sürümü 2016’da yayınlandı. PySide ise 2018 yılında Qt Company tarafından, Qt for Python projesi altında 2. versiyon olarak yayınlandı.

  • 2009’da Nokia (o zamanlar Qt’nin sahibi idi), PyQt’ye karşılık kendi Python binding ini (ciltlemesini) oluşturmaya karar verdi ve PySide’ı geliştirmeye başladı.

  • Nokia, Microsoft’a satıldıktan sonra Qt, özellikle Symbian OS için GUI geliştirmek için kullanıldı. Daha sonra da Digia’ya satıldı. Bu olaylardan sonra PySide sadece açık kaynak topluluğu tarafından geliştiriliyordu.

  • 2016’da Qt Company, PySide’i kendi bünyesine aldı. 2018’de ise resmi olarak PySide’i Qt for Python projesi olarak (PySide2) duyurdu. Kısa sürede büyük bir topluluğa erişebilmek için de LGPL lisansı ile dağıtıldı.

  • Qt for Python projesi için PySide2 ismi kullanılsa da aslında PySide2’nin şuan ki son sürümü 5.15.1 .

Bu tamamen sizin elinizde. Qt, CSS’i desteklemiyor ama temel işlevleri CSS’e çok benzeyen kendi stil sayfası dili olan QSS’i kullanıyor. setStyleSheet() metodu bu iş için yardımcı olabilir.

QSS yetersiz kalırsa QML modelleme dilini kullanabilirsiniz. QML’i kullanabilmek için QtQuick kütüphanesini import etmeniz gerekir. Qml kodlarını, .qml uzantılı dosyalar içerisine yazmalısınız. Daha sonra Python dosyanıza şu örnekteki gibi kullanabilirsiniz. Ek olarak qml kodları içerisinde JavaScript fonksiyonları yazarak da daha efektif, dinamik tasarımlar oluşturulabilir.

Videonun ilk 1 dakikasını izledim, responsive tasarım olması layouts (yerleşim alanları) sayesinde. Onun dışında tasarımda hoş, ama zor değil.
Sonuç olarak, PySide2 kullanın. Çünkü doğrudan resmi geliştiricisi olan Qt Company tarafından geliştiriliyor. Ücretsiz Qt araçlarını kolaylıkla temin edersiniz.

3 Beğeni

Cevabınız için teşekkür ederim.

Css tamam.

Qml yani js kısmını nerede yazabilirim ?

bu videoda qtcreator’da bir örneğini gördüm. qml uzantılı bir dosya açılıp içine yapılıyordu ve değişiklikler anbean tasarımda görüntüleniyordu.

Fakat yanlış bilmiyorsam qtDesigner’da böyle bir şey yok. Yani qml uzantılı bir dosyayı açabileceğim bir yer yok.
Bunları designer’da nereye yazmalıyım ?

Yukarıya bakarsanız HelloWorld.qml isimli bir dosyanın olduğunu görebilirsiniz.Mantıken aynı dizinde olmalılar.Ancak Qt projesi oluşturduktan sonra main.cpp dosyası vs. oluşturuluyor diye biliyorum.Keşke videodaki eğitmen qml dosyasını video öncesinde hazırlamasaydı :frowning:

QSS (Qt Style Sheet)

QML dosyası içerisine

QtCreator içerisinde birçok tool ile beraber geliyor ama maalesef ticari bir yazılım. Deneme sürümü şuradan temin edilebilir.

Hayır, yok.

Sıradan bir text dosyası gibi, istediğiniz dizinde oluşturabilirsiniz.

Designer’da yazamazsınız.

Videolu kaynaklardan daha iyi anladığınızı söylemiştiniz, yanlış hatırlamıyorsam. Bir video linki vereyim, orada kullanımına bir örnek göreceksiniz.

NOT: QtDesigner’a bağımlı kalmayın. QtDesigner, kısa sürede basit tasarımlar oluşturmak için var. Bu yüzden QtDesigner içerisinde sınırlı sayıda, Qt kütüphanesine göre (yaklaşık 1000 adet sınıf) çok çok az sınıf mevcut. Daha çok, hızlıca bir tasarım oluşturmak veya kaba taslak bir prototip hazırlamak için kullanın.

1 Beğeni

Peki ben mesela designer ile tasarımımı yapıp ui uzantılı dosyamı py uzantılı bir dosyaya çevirdim.

masaüstünde bir .qml uzantılı bir dosya oluşturup içine uygun bir syntax ile kodlar yazsam ve sonra oluşturduğum py dosyasının içinde import etsem bu kodlar çalışabilir mi ?
Ya da import etmek yerine içindeki kodları kopyalayıp yapıştırsam çalışabilir mi ?

import edemezsiniz.

Çalışmaz.

Yukarıdaki QML örneğini incelemediniz mi?
Qml kodlarını .qml uzantılı dosyada yazarsınız ve .py dosyanızda da “view” edersiniz.
Resmi dökümantasyondan bir örnek;

view.qml

import QtQuick 2.0

Rectangle {
    width: 200
    height: 200
    color: "green"

    Text {
        text: "Hello World"
        anchors.centerIn: parent
    }
}

main.py

from PySide2.QtWidgets import QApplication
from PySide2.QtQuick import QQuickView
from PySide2.QtCore import QUrl

app = QApplication([])
view = QQuickView()
url = QUrl("view.qml")

view.setSource(url)
view.show()
app.exec_()
1 Beğeni

:frowning:
Tamam. Yanıtlarınız için çok teşekkür ederim.

1 Beğeni