PyGTK ComboBox类

PyGTK ComboBox类

ComboBox是任何GUI工具包中一个强大而流行的部件。它提供了一个下拉列表,用户可以从中选择项目。gtk.ComboBox widget实现了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() 将组合框的活动项设置为模型索引中的项目。
4 set_model() 设置组合框所使用的模型。
5 append_text() 将text指定的字符串添加到存储在组合框列表库中的字符串列表中。
6 Insert_text() 在组合框gtk.ListStore中插入文本所指定的字符串,其索引由位置指定。
7 prepend_text() 将文本指定的字符串预置到列表库中的字符串列表中。
8 remove_text() 删除相关列表库中由位置指定的字符串。
9 get_active_text() 返回当前活动的字符串

ComboBox小组件发出以下信号:

changed 当组合框中的一个新项目被选中时,会发出这个信号。
move_active 这是一个键盘绑定信号,在移动活动选择时被发出。
Popdown 这是一个键盘绑定信号,用于弹出组合框列表。这个信号的默认绑定是Alt+Up和Escape。
Popup 这是一个键盘绑定信号,用于弹出组合框列表。这个信号的默认绑定方式是Alt+Down。

下面是两个演示ComboBox的示例代码。

例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()

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

PyGTK - ComboBox类

例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()

这个程序的输出与前一个程序的输出相似。

PyGTK - ComboBox类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程