【PyQt5-Qt Designer】QComboBox(下拉列表框) 使用模板

时间:2022-05-31 09:56:47

【PyQt5-Qt Designer】QComboBox(下拉列表框) 使用模板

【PyQt5-Qt Designer】QComboBox(下拉列表框) 使用模板

  1 import sys
  2 from PyQt5.QtWidgets import *
  3 from PyQt5.QtGui import *
  4 from PyQt5.QtCore import *
  5 ################################################
  6 items_list=["C","C++","Java","Python","JavaScript","C#","Swift","go","Ruby","Lua","PHP"]
  7 datas_list=[1972,1983,1995,1991,1992,2000,2014,2009,1995,1993,1995]
  8 
  9 class Widget(QWidget):
 10     def __init__(self, *args, **kwargs):
 11         super(Widget, self).__init__(*args, **kwargs)
 12         layout = QVBoxLayout(self)
 13         self.combobox1 = QComboBox(self, minimumWidth=200)
 14         self.combobox2 = QComboBox(self, minimumWidth=200)
 15         self.combobox3 = QComboBox(self, minimumWidth=200)
 16         self.combobox4 = QComboBox(self, minimumWidth=200)
 17 
 18         layout.addWidget(QLabel("增加单项,不带数据", self))
 19         layout.addWidget(self.combobox1)
 20         layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))  21 
 22         layout.addWidget(QLabel("增加单项,附带数据", self))
 23         layout.addWidget(self.combobox2)
 24         layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
 25 
 26         layout.addWidget(QLabel("增加多项,不带数据", self))
 27         layout.addWidget(self.combobox3)
 28         layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))
 29 
 30         layout.addWidget(QLabel("设置模型,不带数据", self))
 31         layout.addWidget(self.combobox4)
 32 
 33         #初始化combobox
 34         self.init_combobox1()
 35         self.init_combobox2()
 36         self.init_combobox3()
 37         self.init_combobox4()
 38 
 39         #增加选中事件
 40         self.combobox1.activated.connect(self.on_combobox1_Activate)
 41         self.combobox2.activated.connect(self.on_combobox2_Activate)
 42         self.combobox3.activated.connect(self.on_combobox3_Activate)
 43         self.combobox4.activated.connect(self.on_combobox4_Activate)
 44 
 45     ####### addItem()  增加单项元素,不带数据  #########
 46     def init_combobox1(self):
 47         for i in range(len(items_list)):
 48             self.combobox1.addItem(items_list[i])
 49         self.combobox1.setCurrentIndex(-1)
 50 
 51     def on_combobox1_Activate(self, index):
 52         print(self.combobox1.count())  #返回列表框下拉项数目
 53         print(self.combobox1.currentIndex())  #返回选中项索引
 54         print(self.combobox1.currentText())  #返回选中项的文本内容
 55         print(self.combobox1.currentData())  #返回当前数据
 56         print(self.combobox1.itemData(self.combobox1.currentIndex()))
 57         print(self.combobox1.itemText(self.combobox1.currentIndex()))
 58         print(self.combobox1.itemText(index))
 59 
 60     ####### addItem()  增加单项元素,附带数据  #########
 61     def init_combobox2(self):
 62         for i in range(len(items_list)):
 63             self.combobox2.addItem(items_list[i],datas_list[i])
 64         self.combobox2.setCurrentIndex(-1)
 65 
 66     def on_combobox2_Activate(self, index):
 67         print(self.combobox2.count())
 68         print(self.combobox2.currentIndex())  
 69         print(self.combobox2.currentText())
 70         print(self.combobox2.currentData())
 71         print(self.combobox2.itemData(self.combobox2.currentIndex()))
 72         print(self.combobox2.itemText(self.combobox2.currentIndex()))
 73         print(self.combobox2.itemText(index))
 74 
 75 
 76     ####### addItems()  增加多项元素,不带数据  #########
 77     def init_combobox3(self):
 78         self.combobox3.addItems(items_list)
 79         self.combobox3.setCurrentIndex(-1)
 80 
 81     def on_combobox3_Activate(self, index):
 82         print(self.combobox3.count())
 83         print(self.combobox3.currentIndex())
 84         print(self.combobox3.currentText())
 85         print(self.combobox3.currentData())
 86         print(self.combobox3.itemData(self.combobox3.currentIndex()))
 87         print(self.combobox3.itemText(self.combobox3.currentIndex()))
 88         print(self.combobox3.itemText(index))
 89 
 90 
 91 
 92     ####### setModel()  设置数据模型,不带数据  #########
 93     def init_combobox4(self):
 94         self.tablemodel = QStringListModel(items_list)
 95         self.combobox4.setModel(self.tablemodel)
 96         self.combobox4.setCurrentIndex(-1)
 97 
 98     def on_combobox4_Activate(self, index):
 99         print(self.combobox4.count())
100         print(self.combobox4.currentIndex())
101         print(self.combobox4.currentText())
102         print(self.combobox4.currentData())
103         print(self.combobox4.itemData(self.combobox4.currentIndex()))
104         print(self.combobox4.itemText(self.combobox4.currentIndex()))
105         print(self.combobox4.itemText(index))
106 
107 
108 if __name__ == "__main__":
109     app = QApplication(sys.argv)
110     w = Widget()
111     w.show()
112     sys.exit(app.exec_())