Python GUI uygulamaları geliştirmek için standart bir çerçeve var mı?


20

Python kullanarak GUI uygulaması yazmak için çok fazla çerçeve var. Ancak herhangi bir anahtar standart çerçeve var mı? Örneğin, Visual Studio'da bir paket .NET / C # var.

Başka açılardan da düşünüyorum. Gelecekte bir Python programcısı işi için röportaj yaparsam hangi GUI çerçevesi dikkate alınacaktır?

Ayrıca merak ediyorum, GUI ve Python dilini bütünleştiren IDE yok. Lezzet seçimi iyidir, ancak aşırı seçim bir oyalama haline gelir.


Hayýr. "Standart" yok. .NET standart değildir. .NET için bir standart yazan standartlar yoktur. C # için bir standart vardır: ecma-international.org/publications/standards/Ecma-334.htm . Belki "standart" demek istediğin şey değil mi?
S.Lott

@ S.Lott: Bu kafa karıştırıcı terim için özür dilerim. Farklı bir şey demek istedim. .NET uygulamaları için Visual Studio, GUI oluşturucu ve diğer şeyleri içeren en iyi hepsi bir arada araçtır. Nadiren insanlar VS.NET'in alternatiflerini ararlar. Benzer bir terim demek istedim. Eksiksiz bir hepsi bir arada çözüm aramasının sona erdiği herhangi bir Python IDE.
RPK

IDE (Visual Studio gibi) hakkında mı soruyorsunuz? Eğer öyleyse, "çerçeve" sorudaki yanlış kelimedir. Lütfen ne istediğini açıkla.
S.Lott

@ S.Lott: Hayır, Visual Studio hakkında soru sormuyorum. Açıklığa kavuşturayım. Örneğin, ASP.NET'i ele alalım. Bir çerçevedir ancak Visual Studio IDE ile çok iyi bütünleşir. Ortadaki masada tüm araçlara sahipsiniz. Python için bir şey var mı?
RPK

Visual studio bir IDE == geliştirme için tüm araçları tek bir yerde. "Visual Studio hakkında soru sormuyorum" ifadesinin tam tersi "Orta masada bulunan tüm araçlara sahipsiniz. Python için bir şey var mı?". Ya IDE'yi (Visual Studio'nun Python sürümü) veya çerçevenin kendisini soruyorsunuz. Ya da, belki de ikisini de soruyorsunuzdur. Sorunun ne hakkında olduğunu anlamak çok zor. Lütfen soruyu istediğinizi çok açık bir şekilde güncelleyin .
S.Lott

Yanıtlar:


12

Tüm bu ortak kod kodunu yazmak isterseniz, Win32 API GUI uygulamalarını Python'a yazabilirsiniz: PyWin32 projesi

Şahsen, wxPython'u seviyorum . Platformlar arası (hem Linux hem de Windows'da tamamen desteklenir) ve oldukça uzun bir süredir var ... iyi destek tabanı ve birçok belge / örnek kod. Bunu kullanmak istiyorsanız, BoaConstructor'a bir göz atın . Bu, wxPython için IDE'dir (veya belki de daha iyi ifade edilirse, wxPython için ve wxPython için yazılmış bir IDE). Qt UI editörünü (Qt UI editörü hem C ++ hem de PyQT için kullanılabilir) kaydedin, bahsetmeye değer bile özellikle Python için karşılaştığım tek RAD IDE .

Peter'ın cevabında belirttiği gibi, Tk, eski Python uygulamaları için defacto GUI'dir, ancak son kullanıcıya bu kadar güzel görünmüyorlar. Biraz daha iyi görünmesini ve kullanıcı arayüzüne stil kazandırmak için bazı uzantılar var, ancak daha eski bir GUI uygulamasını sürdürmüyorsanız, bununla uğraşmanızı önermem.

Daha önce de değinilen pyGTK başka bir iyi seçim olacaktır. Windows'da GTK geliştirme ile ilgili herhangi bir kişisel deneyimim olmasa da, platformlar arası. PyQT daha iyi bir seçim olacaktır, IMO - Bence Qt kütüphanesi ile oluşturulan GUI, GTK ile yapılanlardan daha iyi görünüyor ve çalışıyor. Ayrıca Qt'nin sinyal / slot olay mekanizmasının daha kolay çalışacağını da düşünüyorum. YMMV.

Python GUI gelişimi için gerçekten herhangi bir standart yok, en azından gördüğüm kadar değil, ama yıllar boyunca birlikte çalıştığım Python geliştiricileri arasında, bana diğerlerinden daha fazla wxPython ve PyQT önerdiler araçlarında kullanın. Dürüst olmak gerekirse, orada önemli miktarda Python GUI geliştirme pozisyonları olup olmadığından emin değilim. Yıllar boyunca yaptığım Python gelişiminin çoğu sunucu tarafındaydı, ancak bu, artık GUI uygulamaları için açık kaynak rotasına gitmek isteyen çeşitli işletmeler olmadığı anlamına gelmiyor.


Tkinter uygulamaları oldukça kabul edilebilir görünebilir, genellikle bunu yapmak için zaman ayırırsanız yerel uygulamalardan neredeyse ayırt edilemez. Yine de, wxPython'un hiçbir değişiklik yapmadan daha iyi göründüğüne katılıyorum. Şahsen hala Tkinter'i tercih ediyorum çünkü çoğu insan için yeterince iyi görünüyor ve üretkenliğim wxPython'dan daha yüksek.
Bryan Oakley

Bir l10n / i18n uygulaması geliştirmeyi planlıyorsanız, Tk (Tkinter) tam Unicode'u (ör: komut dosyası şekillendirme) desteklemez.
user.dz

12

Tk standarttı, ama tartışmasız basit ve çirkin. Sonra Qt oldukça popüler oldu. Gtk de mümkündür ve bu Linux-ish platformlarındaki favorileri kapsar.

Ama haklısın, gerçekten beyinsiz bir cevap yok. Sonuçta, aşırı seçim açık kaynak dünyasında oldukça yaygındır.


4
Qt'yi seçtim çünkü
Gtk'den

1
Çok yönlü bir cevap için +1. Qt güzel ve güçlü ve iki bağlantı (lisans-bilge) mevcuttur.
ChristopheD

Muhtemelen artık Windows'ta çirkin görünmüyor. Yine de, yazmanız gereken koddan hoşlanmıyorum. Çirkin kod. Sonunda tamamen doğal ve oldukça makul bir görünüm.
Warren P

5

'Standart' yoktur ve katılıyorum - seçeneklerin bolluğu bir acıdır. Python GUI'leri için entegre bir 'iki yönlü araç' IDE'ye gelince, neden orada görünmüyor diye merak ediyorum - belki de çok fazla GUI araç seti olduğu için kimse IDE'ye sadece biri için yatırım yapmak istemiyor onlar.

Bunu söyledikten sonra, P3k ile PyQt 4.7 size harika GUI'ler (ve diğer birçok güçlü özellik) verecektir. Bkz. Http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/introduction.html - "Bu PyQt 4.8.4 için referans kılavuzdur. PyQt v4, Qt'nin v4'ü için bir dizi Python bağlamasıdır Nokia'dan uygulama çerçevesi. "

PyQt yaygın kullanımda ve üzerinde bazı iyi kitaplar var: bkz. Http://www.qtrac.eu/pyqtbook.html Diğerleri arasında "Python ve Qt ile Hızlı GUI Programlama" (kitap biraz güncel - güncellenmesi gerekiyor) P3k için).

PyQt ile ilgili 2 ciddi sorun var:

1) C ++ Qt kütüphanelerinde sadece ince bir sargı olan belirgin bir şekilde 'hipfonik' olmayan özelliklere sahiptir. Ancak P3k-PyQt 4.7'yi tavsiye ettim, çünkü bazıları 'en yeni ve en büyük' ​​paketlerde ele alındı. Bu gönderiye göz atın:

PyQt tasarım sorunları

2) Ticari kullanım için, hem PyQt hem de Qt için oldukça yüksek lisans ücretleri vardır.

PyQt'a yaklaşan bir alternatif, tamamen açık kaynaklı (Qt lisansını içermeyen) Qt için başka bir Python sarıcı olan Nokia'dan PySide.

Qt hakkında çok şey bilmek piyasa açısından kötü bir şey değildir ve bunu PyQt'den alacaksınız, bu yüzden uzmanlaşmak için bir GUI platformuna karar vermeye çalışıyorsanız (veya PySide) ciddi bir şekilde değerlendiririm. .

Ne seçerseniz seçin, Python ile 'kutunun dışında' olmasına rağmen, çoğunlukla tkinter'den kaçınmanızı öneririm, çünkü son derece sınırlıdır ve IMO'nun kaba, modası geçmiş bir görünümü ve hissi vardır.

HTH


3

pyGTK üretken. Kullanımı oldukça kolaydır ve yarı kötü görünmeyen GUI'leri yapar.


Topluluk ne kadar zengin? Cevaplar forumuna ne kadar hızlı ulaşıyor?
RPK

1
@RPK, hiçbir fikrim yok, hiç yardım istemedim, her şeyin kullanımı oldukça kolay.
dan_waterworth

"Üretken" in doğru kelime olduğundan emin değilim. "bolca yavru, genç, meyve, vb. üretiyoruz; yüksek verimli: verimli bir armut ağacı" Belki "popüler" veya "müthiş".
S.Lott

@ S.Lott, prolific: "Benzer şekilde sonuç üretir veya bolca çalışır". (ikinci wiktionary tanımı). "Üretmeye hizmet etmek; sonuçların verimli olması; aktif; üretken bir beyin; kötülüğün tartışmalı bir hali gibi." (Webster's Revised
Kısaltılmamış

üretken "pyGTK çok uygulama üretir?" Gergin görünüyor. İnsanlar uygulama üretiyor. pyGTK, belki de popüler bir temeldir, ancak yapımcı gibi görünmemektedir.
S.Lott

0

Gtk3 çok olgun bir GUI çerçevesidir. Yerel Python bağlamaları (GObject Introspection) ve çok sayıda belgeye sahiptir . Biraz GUI yapıyorsanız, Anjuta kullanmayı düşünün . Anjuta, widget'larınızı kolayca ayarlamak için bir sürükle ve bırak arayüzüne sahiptir.

WxWidgets oldukça iyi, ancak Anjuta'nın Gtk için yaptığı gibi Python geri çağrılarının dinamik olarak oluşturulmasının kolay bir yolu yok.

PyGtk şimdi Gtk3 - Python bağlamaları lehine kullanımdan kaldırıldı (GObject Introspection)

PyQt aynı zamanda Python GUI'de bir oyuncu, ancak geniş bir topluluğa sahip değil.

BoaConstructor daha uzun süre muhafaza edilir ve kullanımı aptalca olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.