2012-06-28 13 views
5

Estoy trabajando en una aplicación en PyQt que toma un diccionario de objetos y le permite trazar las variables de transmisión desde un robot en tiempo real. Una de las cosas en las que estoy trabajando para habilitar esto es un menú desplegable. Desafortunadamente, tenemos un par de cientos de variables, por lo que mi PyQt Combobox aparece desde la parte superior de la pantalla hasta la parte inferior con elementos cuando se hace clic. Me gustaría limitar la cantidad de elementos mostrados a la vez a 20, con la capacidad de desplazarme para ver el resto. Intenté usar el método documentMaxVisibleItems documentado, pero no afecta el menú desplegable. ¿Alguna recomendación?PyQt QComboBox establecer el número de elementos visibles en el menú desplegable

Código aquí:

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

Respuesta

7

De acuerdo con la documentación:

La propiedad maxVisibleItems se ignora para cuadros combinados no editables en estilos que devuelve true de `QStyle::SH_ComboBox_Popup tales como el estilo de Mac o el GTK + Estilo.

Y puede anular esa pista SH_ComboBox_Popup estilo con una hoja de estilo:

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