2010-04-20 18 views
5

Bir QComboBox'u, bir django modelinde kullanılanlara benzer bir tuple "anahtarları" ve "değerleri" ile kullanmak istiyorum. Mesela bir kişinin cinsiyeti için aşağıdaki yapıya sahibim.Anahtar/Değer pyqt QComboBox

SEX_CHOICES = (('M', 'Male'), ('F', 'Female')) 

başlığın ilk öğe veritabanında saklanır seks kodu ve ikincisini ben bir öğe olarak QComboBox görüntülenmesini istediğiniz metni içermektedir.

QComboBox değerini M olarak ayarlayabildiğim bir yol var mı ve Erkek'i görüntüler. Bir de kullanıcı Erkek Ben M. olarak

Teşekkür

cevap

6

cb.addItem (text, userData) 

Kullanım

seçilen bir değer elde edebilirsiniz elemanı seçmek ve userData olarak DB anahtarını geçerken. Geçerli seçimi değiştirmeniz gerekirse, her öğenin DB anahtarını almak ve ihtiyacınız olanla karşılaştırmak için cb.itemData() kullanın. Alternatif olarak, bir Python haritasında öğe ekledikçe dizinleri kaydedin ve doğrudan doğru dizini aramak için bunu kullanın.

İşleri daha kolay hale getirmek için, QComboBox ürününü geçerli DB anahtarı için ayarlayıcı ve alıcılar sunan ve eşleştirmeyi gizleyen bir Python sınıfı ile sarın.

+0

Teşekkürler, uygulanması kolay olacağını düşünüyorum. Sahip olduğum tek sorun, Qt Designer'da özel QComboBox kullanıyor. Yeni kontrolü eklemenin kolay bir yolu var mı? Qt modelini kullanmanın daha kolay olacağını düşünüyor musunuz? Bunu zaten kontrol ettim ve bahsettiğiniz haritayı tutabiliyorum. Ama yine de değeri db değerinden belirleyen problemler yaşıyor. – Danilo

+0

PyQt'de, tasarımcıda kullanılabilecek araçların nasıl oluşturulacağına ilişkin belgelere bakın: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#using-python-widgets-in-qt -DESIGNER –