组合框-下拉选择框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_())

 

 

 

 

 

 

 

天子骄龙 

posted @ 2019-02-10 08:24  天子骄龙  阅读(2640)  评论(0编辑  收藏  举报