2012-06-28 8 views
5

Ich arbeite an einer Anwendung in PyQt, die ein Objektverzeichnis und ermöglicht es Ihnen, die Variablen streamen von einem Roboter in Echtzeit zu plotten. Eines der Dinge, an denen ich arbeite, um dies zu ermöglichen, ist ein Dropdown-Menü. Leider haben wir ein paar hundert Variablen, so dass meine PyQt Combobox vom oberen Rand des Bildschirms nach unten mit Elementen auftaucht, wenn Sie darauf klicken. Ich möchte die Anzahl der gleichzeitig angezeigten Elemente auf 20 begrenzen und die Möglichkeit haben, einen Bildlauf durchzuführen, um den Rest zu sehen. Ich habe versucht, die dokumentierte setMaxVisibleItems-Methode zu verwenden, hat aber keinerlei Auswirkungen auf das Dropdown-Menü. Irgendwelche Empfehlungen?PyQt QComboBox Einstellung der Anzahl der sichtbaren Elemente im Dropdown

-Code hier:

#!/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_()) 

Antwort

7

Nach der Dokumentation:

Die Eigenschaft maxVisibleItems für nicht editierbare Combobox in verschiedenen Schnitten ignoriert wird, die für `QStyle::SH_ComboBox_Popup wie der Mac-Stil oder die Gtk true zurück + Stil.

Und Sie können diesen SH_ComboBox_Popup Stil Hinweis mit einem Stylesheet überschreiben:

combo.setStyleSheet("QComboBox { combobox-popup: 0; }");