2012-06-28 11 views
5

Pracuję nad aplikacją w PyQt, która pobiera słownik obiektów i pozwala na wyświetlanie zmiennych przesyłanych strumieniowo z robota w czasie rzeczywistym. Jedną z rzeczy, nad którymi pracuję, aby to włączyć, jest rozwijane menu. Niestety, mamy kilkaset zmiennych, więc mój PyQt Combobox pojawia się z góry ekranu na dole z elementami po kliknięciu. Chciałbym ograniczyć liczbę wyświetlanych przedmiotów do 20, z możliwością przewijania, aby zobaczyć resztę. Próbowałem już używać udokumentowanej metody setMaxVisibleItems, ale w ogóle nie wpływa ona na rozwijanie. Wszelkie zalecenia?Ustawienie PyQt QComboBox liczba widocznych elementów w rozwijanym liście

kod tutaj:

#!/usr/bin/env python 

from PyQt4.QtCore import Qt 
from PyQt4.QtGui import QComboBox, QApplication 

from cli.parc2_od import cli_od 
import sys 

app = QApplication(sys.argv) 

items = cli_od.OD.keys() #Items to populate dropdown. 
combo = QComboBox() 

#The solution: 
combo.setStyleSheet("QComboBox { combobox-popup: 0; }") 
combo.setMaxVisibleItems(10) 




combo.addItems(items) 

combo.resize(300, 30) 
combo.show() 


sys.exit(app.exec_()) 

Odpowiedz

7

Zgodnie z dokumentacją:

Obiekt maxVisibleItems jest ignorowany dla nieedytowalnych comboboxes w stylach, które zwraca wartość true dla `QStyle::SH_ComboBox_Popup takich jak styl Mac lub GTK + Styl.

I można zastąpić ten SH_ComboBox_Popup stylu podpowiedź z arkusza stylów:

combo.setStyleSheet("QComboBox { combobox-popup: 0; }"); 
Powiązane problemy