繼承於 QWidget
下拉列表框樣式如圖:
import sys from PyQt5.QtWidgets import QApplication, QWidget,QPushButton,QComboBox,QCompleter from PyQt5.QtGui import QIcon,QValidator from PyQt5.QtCore import QSize class Demo(QWidget): def __init__(self): super().__init__() self.resize(300,300) def A(): s=cb.count() #獲取項目總數--包括分割線 s = cb.currentIndex() # 獲取當前項目的索引 s = cb.currentText() # 取當前項目的文本 s = cb.currentData() # 獲取當前項目的用戶附加的數據 s=cb.itemIcon(2) #獲取指定索引項目的圖標對象 s=cb.itemData(3) #獲取指定索引項目的用戶附加的數據 s=cb.itemText(3) #獲取指定索引項目的文本 print(s) def B(): #cb.setMaxCount(4) # 設置最大存儲項目總數 #達到指定項目總數后,不能再添加 #maxCount() 返回最大可存儲項目總數 #cb.setMaxVisibleItems(3) #設置可見的項目總數 #maxVisibleItems() 返回可見的項目總數 #cb.clear() #清空所有項目 #cb.clearEditText() #只是清空當前編輯框中的文本--不改變項目數 #cb.showPopup() #彈出下拉框 pass btn=QPushButton('獲取數據',self) btn.move(80,250) btn.clicked.connect(A) btn1 = QPushButton('按鈕1', self) btn1.move(160, 250) btn1.clicked.connect(B) cb=QComboBox(self) #構造出一個空白的下拉列表控件 cb.move(100,20) cb.addItem('天津','a') #添加一個項目 #參數1 項目-必須是文本 #參數2 用戶附加數據-任何類型 cb.addItem(QIcon(r'大象1.png'),'北京','b') #添加一個項目--帶圖標 cb.addItems(['上海','浙江']) #添加項目序列 #參數 可迭代的數據 cb.insertItem(1,'重慶','c') #插入一個項目 #參數1 索引號 cb.insertItem(1, QIcon(r'大象1.png'),'西安','d') # 插入一個項目--帶圖標 cb.insertItems(1,['遼寧','黑龍江']) #插入項目序列 #參數2 可迭代的數據 cb.setItemIcon(2,QIcon(r'大象1.png')) #給指定索引項目設置圖標 cb.setItemText(7,'蒙古') #給指定索引項目設置文本---原有文本被覆蓋 #cb.removeItem(7) #刪除指定索引的項目 cb.insertSeparator(4) #插入分割線---分割線做為指定索引項目 cb.setCurrentIndex(2) #指定索引項目為當前項目--默認是第0項目 cb.setCurrentText('西安') #根據文本指定當前項目 #如果參數所指的項目不存在的話就無效 cb.setEditable(True) #編輯框能否被編輯 #在編輯框中編輯文本回車之后,會追加到項目尾部 #isEditable() 返回能否被編輯 #cb.setEditText('廣東') #設置編輯框中的文本 #只有setEditable設為True,setEditText才有效 #按了回車鍵 會追加到項目尾部 cb.setDuplicatesEnabled(True) #是否可重復 #設置為True時,編輯框按回車時追加的項目可以重復 #duplicatesEnabled() 返回是否可重復 cb.setFrame(True) #是否有框架--是否有外框 #setEditable 設置為True時 setFrame才有效果 #hasFrame() 返回是否有框架 cb.setIconSize(QSize(40,40)) #設置圖標尺寸 #iconSize() 返回圖標尺寸 cb.setSizeAdjustPolicy(QComboBox.AdjustToContents) #尺寸調整策略 #QComboBox.AdjustToContents 組合框將始終根據最長內容進行調整 #QComboBox.AdjustToContentsOnFirstShow 組合框將在第一次顯示時調整其內容。 #QComboBox.AdjustToMinimumContentsLengthWithIcon 組合框將調整為minimumContentsLength加上圖標的空間。出於性能原因,請在大型模型上使用此策略。 cl = QCompleter(['1abc', 'gfds', 'yur', 'aew']) #參數 可迭代的 cb.setCompleter(cl) # 設置完成器--自動補全 #cb.setValidator() #設置驗證器 #參照:單行輸入文本框 #信號: #cb.activated.connect(self.AA) #某個條目被選中時,必須是用戶交互, 造成的值改變才會發射這個信號 #會向槽函數傳遞一個int值--被選中項目的索引號 #cb.activated[str].connect(self.BB) # 某個條目被選中時,必須是用戶交互, 造成的值改變才會發射這個信號 # 會向槽函數傳遞一個字符串--被選中項目的文本 #cb.currentIndexChanged.connect(self.CC) #當前選中的索引發生改變時-用戶交互,代碼控制 # 會向槽函數傳遞一個int值--被選中項目的索引號 #cb.currentIndexChanged[str].connect(self.DD) # 當前選中的索引發生改變時-用戶交互,代碼控制 # 會向槽函數傳遞一個字符串--被選中項目的文本 #cb.currentTextChanged.connect(self.EE) #當前的文本內容發生改變時 # 會向槽函數傳遞一個字符串--文本框中的文本 #cb.editTextChanged.connect(self.FF) #編輯的文本發生改變時 #setEditable設置為True時,文本框中的文本發生改變時 #cb.highlighted.connect(self.GG) #高亮發生改變時--在下拉列表框中鼠標所選的項目發生變化時 # 會向槽函數傳遞一個int值--高亮項目的索引號 cb.highlighted[str].connect(self.HH) #高亮發生改變時--在下拉列表框中鼠標所選的項目發生變化時 # 會向槽函數傳遞一個字符串--高亮項目的文本 def HH(self,x): print('高亮改變了',x) def GG(self,x): print('高亮改變了',x) def AA(self,x): print('你的選擇改變了',x) def BB(self,x): print('你的選擇改變了',x) def CC(self,x): print('你的選擇改變了',x) def DD(self,x): print('你的選擇改變了',x) def EE(self,x): print('文本改變了',x) def FF(self,x): print('編輯文本改變了',x) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
天子驕龍