2012-06-28 10 views
5

Sto lavorando a un'applicazione in PyQt che accetta un dizionario di oggetti e consente di tracciare le variabili in streaming da un robot in tempo reale. Una delle cose su cui sto lavorando per abilitare questo è un menu a discesa. Sfortunatamente, abbiamo un paio di centinaia di variabili, quindi il mio PyQt Combobox si apre dalla parte superiore dello schermo verso il basso con gli oggetti quando si fa clic. Mi piacerebbe limitare il numero di elementi visualizzati alla volta a 20, con la possibilità di scorrere per vedere il resto. Ho provato a utilizzare il metodo documentato setMaxVisibleItems, ma non ha alcun effetto sul menu a discesa. Qualche consiglio?PyQt QComboBox numero di impostazione di elementi visibili nel menu a discesa

Codice qui:

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

risposta

7

Secondo la documentazione:

La proprietà maxVisibleItems viene ignorata per comboboxes non modificabili in stili che restituisce vero per `QStyle::SH_ComboBox_Popup come lo stile Mac o il Gtk + Stile.

E si può ignorare quel pizzico SH_ComboBox_Popup stile con un foglio di stile:

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