当前位置: 首页 > 文档资料 > PyGTK 中文教程 >

ComboBox 类(ComboBox Class)

优质
小牛编辑
135浏览
2023-12-01

ComboBox是任何GUI工具包中功能强大且流行的小部件。 它提供了用户可以选择的项目的下拉列表。 gtk.ComboBox小部件实现了CellLayout接口,并提供了许多方法来管理项目的显示。

gtk.ComboBox类的对象与ListSore相关联,ListSore是一个列表模型,可以与显示项集合的小部件一起使用。 使用append()方法将项添加到ListStore。 此外,创建CellRendererText对象并将其打包到组合框中。

请按照以下步骤设置组合框。

combobox = gtk.ComboBox()
store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 0)

PyGTK提供了一种方便的方法 - gtk.combo_box_new_text()来创建一个组合框而不是使用列表存储。 相关的便利方法append_text(),prepend_text(),insert_text()和remove_text()用于管理组合框内容。

gtk.ComboBox类有以下方法 -

S.NO方法和描述
1

set_wrap_width()

设置要在弹出表布局中显示的列数

2

get_active()

返回“active”属性的值,该属性是当前活动项的模型中的索引

3

set_active()

将combo_box的活动项设置为指定了模型索引的项

4

set_model()

设置组合框使用的模型

5

append_text()

将text指定的字符串追加到组合框列表存储中存储的字符串列表中

6

Insert_text()

在由position指定的索引处的组合框gtk.ListStore中插入由text指定的字符串

7

prepend_text()

将文本指定的字符串添加到列表存储中存储的字符串列表中

8

remove_text()

删除关联列表库中由position指定的索引处的字符串

9

get_active_text()

返回当前活动的字符串

ComboBox小部件发出以下信号 -

changed选择组合框中的新项时会发出此项
move_active这是一个键绑定信号,它被发射以移动有效选择。
Popdown这是一个键绑定信号,它会弹出组合框列表。 此信号的默认绑定是Alt + Up和Escape
Popup这是一个键绑定信号,它会弹出组合框列表。 此信号的默认绑定是Alt + Down。

下面给出了用于演示ComboBox的两个示例代码。

例子1 (Example 1)

在此示例中,ListStore使用流行的Python GUI工具包的名称进行填充,并与ComboBox小部件相关联。 当用户做出选择时,发出改变的信号。 它连接到回调函数以显示用户的选择。

import pygtk
pygtk.require('2.0')
import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("ComboBox with ListStore")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      combobox = gtk.ComboBox()
      store = gtk.ListStore(str)
      cell = gtk.CellRendererText()
      combobox.pack_start(cell)
      combobox.add_attribute(cell, 'text', 0)
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      fixed.put(combobox, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      store.append (["PyQt"])
      store.append (["Tkinter"])
      store.append (["WxPython"])
      store.append (["PyGTK"])
      store.append (["PySide"])
      combobox.set_model(store)
      combobox.connect('changed', self.on_changed)
      combobox.set_active(0)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      return
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
      return
if __name__ == '__main__':
PyApp()
gtk.main()

执行时,程序显示以下输出 -

组合框

例子2 (Example 2)

该程序的第二个版本使用方便方法combo_box_new_text()来创建一个组合框和append_text()函数来在其中添加字符串。 在这两个程序中, get_active_text()方法用于获取用户的选择并显示在窗口上的标签上。

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Simple ComboBox")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      cb = gtk.combo_box_new_text()
      cb.connect("changed", self.on_changed)
      cb.append_text('PyQt')
      cb.append_text('Tkinter')
      cb.append_text('WxPython')
      cb.append_text('PyGTK')
      cb.append_text('PySide')
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      fixed.put(cb, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
if __name__ == '__main__':
   PyApp()
   gtk.main()

该程序的输出类似于前一个程序的输出。

组合框