2012-06-28 30 views
5

Tôi đang làm việc trên một ứng dụng trong PyQt lấy từ điển đối tượng và cho phép bạn vẽ các biến trực tiếp từ rô bốt theo thời gian thực. Một trong những điều tôi đang làm để bật tính năng này là một trình đơn thả xuống. Thật không may, chúng tôi có một vài trăm biến, do đó, PyQt Combobox của tôi bật lên từ phía trên cùng của màn hình xuống dưới cùng với các mục khi được nhấp. Tôi muốn giới hạn số lượng mục được hiển thị tại thời điểm 20, với khả năng cuộn để xem phần còn lại. Tôi đã thử sử dụng phương thức setMaxVisibleItems đã được ghi lại tài liệu, nhưng nó không ảnh hưởng đến việc thả xuống. Bất kỳ đề xuất?Số cài đặt PyQt QComboBox của các mục hiển thị trong menu thả xuống

Mã ở đây:

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

Trả lời

7

Theo tài liệu:

Thuộc tính maxVisibleItems bị bỏ qua cho comboboxes không thể chỉnh sửa trong phong cách mà trả về true cho `QStyle::SH_ComboBox_Popup như phong cách Mac hoặc Gtk + Phong cách.

Và bạn có thể ghi đè lên rằng gợi ý SH_ComboBox_Popup phong cách với một style sheet:

combo.setStyleSheet("QComboBox { combobox-popup: 0; }"); 
Các vấn đề liên quan