当前位置: 移动技术网 > IT编程>脚本编程>Python > pyqt5的QComboBox 使用模板的具体方法

pyqt5的QComboBox 使用模板的具体方法

2018年09月21日  | 移动技术网IT编程  | 我要评论

虎艳芬,钻石棋牌,东京吸血鬼旅馆

qcombobox 的常规使用方法,在这个使用模板里,基本都有了。

qcombobox小部件是一个组合的按钮和弹出列表。

qcombobox提供了一种向用户呈现选项列表的方式,其占用最小量的屏幕空间。

组合框是一个显示当前项目的选择小部件,可以弹出可选项目列表。组合框可以是可编辑的,允许用户修改列表中的每个项目。

组合框可以包含图像以及字符串; 当然insertitem()和setitemtext()函数需要适当重载。对于可编辑组合框,提供了函数clearedittext(),以清除显示的字符串而不更改组合框的内容。

如果组合框的当前项目发生更改,则会发出两个信号currentindexchanged()和activated()。无论以编程方式或通过用户交互完成更改,currentindexchanged()总是被发射,而只有当更改是由用户交互引起时才activated() 。highlighted()信号在用户突出显示组合框弹出列表中的项目时发出。所有三个信号都有两个版本,一个带有str参数,另一个带有int参数。如果用户选择或突出显示一个图像,则只会发出int信号。每当可编辑组合框的文本发生改变时,edittextchanged()信号就会发出。

当用户在可编辑的组合框中输入一个新的字符串时,该小部件可能会插入它,也可能不会插入它,并且可以将它插入到多个位置。默认策略是insertatbottom,但您可以使用setinsertpolicy()更改它。

可以使用qvalidator将输入约束为可编辑的组合框;请参阅setvalidator()。默认情况下,接受任何输入。

例如,可以使用插入函数insertitem()和insertitems()来填充组合框。可以使用setitemtext()更改项目。一个项目可以使用removeitem()来移除,所有项目都可以使用clear()来移除。当前项目的文本由currenttext()返回,项目的文本编号使用text()返回。当前项目可以使用setcurrentindex()来设置。 count()返回组合框中的项目数;可以用setmaxcount()设置项目的最大数量。您可以允许使用seteditable()进行编辑。对于可编辑组合框,您可以使用setcompleter()设置自动完成,并且用户是否可以添加重复项由setduplicatesenabled()进行设置。

qcombobox为其弹出列表使用模型/视图框架并存储其项目。默认情况下,qstandarditemmodel存储项目,qlistview子类显示弹出列表。您可以直接访问模型和视图(使用model()和view()),但qcombobox还提供了设置和获取项目数据的函数(例如,setitemdata()和itemtext())。您还可以设置新的模型和视图(使用setmodel()和setview())。对于组合框标签中的文本和图标,将使用具有qt.displayrole和qt.decorationrole的模型中的数据。请注意,您不能通过使用setselectionmode()来更改view()的selectionmode。

类归属

pyqt5->qtwidgets->qcombobox

继承关系

pyqt5->qobject and qpaintdevice->qwidget->qfontcombobox->qcombobox

熟悉一下代码,直接就可以用了。

【如下代码,完全复制,直接运行,即可使用】

import sys
from pyqt5.qtwidgets import *
from pyqt5.qtgui import *
from pyqt5.qtcore import *
################################################

items_list=["c","c++","java","python","javascript","c#","swift","go","ruby","lua","php"]

datas_list=[1972,1983,1995,1991,1992,2000,2014,2009,1995,1993,1995]

################################################
class widget(qwidget):
  def __init__(self, *args, **kwargs):
    super(widget, self).__init__(*args, **kwargs)
    layout = qvboxlayout(self)
    self.combobox1 = qcombobox(self, minimumwidth=200)
    self.combobox2 = qcombobox(self, minimumwidth=200)
    self.combobox3 = qcombobox(self, minimumwidth=200)
    self.combobox4 = qcombobox(self, minimumwidth=200)

    layout.addwidget(qlabel("增加单项,不带数据", self))
    layout.addwidget(self.combobox1)
    layout.additem(qspaceritem(20, 20, qsizepolicy.expanding, qsizepolicy.minimum))

    layout.addwidget(qlabel("增加单项,附带数据", self))
    layout.addwidget(self.combobox2)
    layout.additem(qspaceritem(20, 20, qsizepolicy.expanding, qsizepolicy.minimum))

    layout.addwidget(qlabel("增加多项,不带数据", self))
    layout.addwidget(self.combobox3)
    layout.additem(qspaceritem(20, 20, qsizepolicy.expanding, qsizepolicy.minimum))

    layout.addwidget(qlabel("设置模型,不带数据", self))
    layout.addwidget(self.combobox4)


    #初始化combobox
    self.init_combobox1()
    self.init_combobox2()
    self.init_combobox3()
    self.init_combobox4()

    #增加选中事件
    self.combobox1.activated.connect(self.on_combobox1_activate)
    self.combobox2.activated.connect(self.on_combobox2_activate)
    self.combobox3.activated.connect(self.on_combobox3_activate)
    self.combobox4.activated.connect(self.on_combobox4_activate)

  ####### additem() 增加单项元素,不带数据 #########
  def init_combobox1(self):
    for i in range(len(items_list)):
      self.combobox1.additem(items_list[i])
    self.combobox1.setcurrentindex(-1)

  def on_combobox1_activate(self, index):
    print(self.combobox1.count())
    print(self.combobox1.currentindex())
    print(self.combobox1.currenttext())
    print(self.combobox1.currentdata())
    print(self.combobox1.itemdata(self.combobox1.currentindex()))
    print(self.combobox1.itemtext(self.combobox1.currentindex()))
    print(self.combobox1.itemtext(index))

  ####### additem() 增加单项元素,附带数据 #########
  def init_combobox2(self):
    for i in range(len(items_list)):
      self.combobox2.additem(items_list[i],datas_list[i])
    self.combobox2.setcurrentindex(-1)

  def on_combobox2_activate(self, index):
    print(self.combobox2.count())
    print(self.combobox2.currentindex())
    print(self.combobox2.currenttext())
    print(self.combobox2.currentdata())
    print(self.combobox2.itemdata(self.combobox2.currentindex()))
    print(self.combobox2.itemtext(self.combobox2.currentindex()))
    print(self.combobox2.itemtext(index))

  ####### additems() 增加多项元素,不带数据 #########
  def init_combobox3(self):
    self.combobox3.additems(items_list)
    self.combobox3.setcurrentindex(-1)

  def on_combobox3_activate(self, index):
    print(self.combobox3.count())
    print(self.combobox3.currentindex())
    print(self.combobox3.currenttext())
    print(self.combobox3.currentdata())
    print(self.combobox3.itemdata(self.combobox3.currentindex()))
    print(self.combobox3.itemtext(self.combobox3.currentindex()))
    print(self.combobox3.itemtext(index))

  ####### setmodel() 设置数据模型,不带数据 #########
  def init_combobox4(self):
    self.tablemodel = qstringlistmodel(items_list)
    self.combobox4.setmodel(self.tablemodel)
    self.combobox4.setcurrentindex(-1)

  def on_combobox4_activate(self, index):
    print(self.combobox4.count())
    print(self.combobox4.currentindex())
    print(self.combobox4.currenttext())
    print(self.combobox4.currentdata())
    print(self.combobox4.itemdata(self.combobox4.currentindex()))
    print(self.combobox4.itemtext(self.combobox4.currentindex()))
    print(self.combobox4.itemtext(index))

if __name__ == "__main__":
  app = qapplication(sys.argv)
  w = widget()
  w.show()
  sys.exit(app.exec_())

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网