2013-02-15 17 views
16

PyQt'yi bir süredir kullandım ve kullandıkları tüm zaman boyunca oldukça tutarlı bir programlama modeli var..ui dosyalarını PySide ile python sınıflarına nasıl yüklersiniz?

  1. Bir .ui dosyası oluşturmak için Qt Designer'ı kullanın.
  2. .ui dosyasında oluşturduğunuz widget ile aynı türde bir python sınıfı oluşturun.
  3. Python sınıfını başlatırken, .ui dosyasını sınıfa dinamik olarak yüklemek için kullanıcı kimliğini kullanın.

PySide'de benzer bir şey yapmanın bir yolu var mı? Belgeleri ve örnekleri okudum ve bulabildiğim en yakın şey, PyQt uygulamasının süper eski yolu olan python koduna .ui dosyasını önceden işleyen bir hesap makinesi örneğiydi (neden python'a fırlatıyor?) Sadece ui'yi ayrıştırabildiğinizde?)

+0

ve bu sahip Dinamik loadUi daha çok geliştirme kolaylığıydı. – jdi

+0

@jdi "Better" özneldir. Biraz daha hızlı ... belki ..., python ui kodunun ayrıştırılması gerekmiyormuş gibi değil, sadece bir tür başka bir şey için ayrıştırma yapıyorsunuz. Pyqt'in en büyük faydalarından biri hızlı yineleme dev iş akışıdır. PySide buna bir adım daha atıyor IMHO geri gidiyor. –

+0

Düzeltmenize katılıyorum. "Ben şahsen daha basit bir şekilde buldum" ifadesini kullanmalıydım. Ve ben dinamik yüklemede zaten daha fazla ayrıştırma olduğunu düşünüyorum. Önce, UI xml -> python kodunu ayrıştırmanız ve dönüştürmeniz ve sonra nesneyi bunlardan oluşturmanız gerekir. – jdi

cevap

20

Tam olarak PySide ile yapıyorum. :)

Bu https://gist.github.com/cpbotha/1b42a20c8f3eb9bb7cb8 kullanmak (Sebastian Wiesner tarafından orijinali https://github.com/lunaryorn/snippets/blob/master/qt4/designer/pyside_dynamic.py oldu ama kayboldu) - PySide.QtUiTools.QUiLoader geçersiz kılar ve bunu böylece yeni loadUi() yöntemi hangi malzeme:

class MyMainWindow(QMainWindow): 
    def __init__(self, parent=None): 
     QMainWindow.__init__(self, parent) 
     loadUi('mainwindow.ui', self) 

MyMainWindow'u başlattığınızda, Qt Designer ile tasarladığınız kullanıcı arabirimine sahip olacak.

ayrıca özel aletler kullanmak gerekiyorsa, bu cevaba bakınız (Qt Designer "Kime teşvik"): Her zaman uygulama başlatma tüm bir ayrıştırma adımı kaldırmak için daha iyi olduğunu düşündüm https://stackoverflow.com/a/14877624/532513

+0

Merhabalar. Github bağlantısı kesildi. –

+0

Başlıklar için teşekkürler! Ben bir pist olarak pyside_dynamic.py kendi modifiye kendi sürümü mevcut yaptım, değiştirilmiş cevabı görmek. –

İlgili konular