組合框-下拉選擇框QCombox


 

 

繼承於  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_())

 

 

 

 

 

 

 

天子驕龍 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM