zoukankan      html  css  js  c++  java
  • 组合框-下拉选择框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_())

    天子骄龙 

  • 相关阅读:
    MATLAB实现的车牌定位系统
    机器学习公开课备忘录(一)回归问题
    localStorage cookie的增删改查
    cookies,sessionStorage和localStorage的区别(浏览器缓存的区别)
    提升页面性能的方法
    get和post的区别
    ajax jsonp axios fetch
    vue项目创建
    (转)如何使用Log4net创建日志及简单扩展
    C# TSC打印二维码和条形码
  • 原文地址:https://www.cnblogs.com/liming19680104/p/10358648.html
Copyright © 2011-2022 走看看