- PyGTK 教程
- PyGTK - 首页
- PyGTK - 简介
- PyGTK - 环境
- PyGTK - Hello World
- PyGTK - 重要类
- PyGTK - Window 类
- PyGTK - Button 类
- PyGTK - Label 类
- PyGTK - Entry 类
- PyGTK - 信号处理
- PyGTK - 事件处理
- PyGTK - 容器
- PyGTK - Box 类
- PyGTK - ButtonBox 类
- PyGTK - Alignment 类
- PyGTK - EventBox 类
- PyGTK - Layout 类
- PyGTK - ComboBox 类
- PyGTK - ToggleButton 类
- PyGTK - CheckButton 类
- PyGTK - RadioButton 类
- PyGTK - MenuBar、Menu 和 MenuItem
- PyGTK - Toolbar 类
- PyGTK - Adjustment 类
- PyGTK - Range 类
- PyGTK - Scale 类
- PyGTK - Scrollbar 类
- PyGTK - Dialog 类
- PyGTK - MessageDialog 类
- PyGTK - AboutDialog 类
- PyGTK - 字体选择对话框
- PyGTK - 颜色选择对话框
- PyGTK - 文件选择对话框
- PyGTK - Notebook 类
- PyGTK - Frame 类
- PyGTK - AspectFrame 类
- PyGTK - TreeView 类
- PyGTK - Paned 类
- PyGTK - Statusbar 类
- PyGTK - ProgressBar 类
- PyGTK - Viewport 类
- PyGTK - Scrolledwindow 类
- PyGTK - Arrow 类
- PyGTK - Image 类
- PyGTK - DrawingArea 类
- PyGTK - SpinButton 类
- PyGTK - Calendar 类
- PyGTK - Clipboard 类
- PyGTK - Ruler 类
- PyGTK - 超时
- PyGTK - 拖放
- PyGTK 有用资源
- PyGTK - 快速指南
- PyGTK - 有用资源
- PyGTK - 讨论
PyGTK - ComboBox 类
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 类具有以下方法:
| 序号 | 方法和描述 |
|---|---|
| 1 | set_wrap_width() 设置在弹出表布局中显示的列数 |
| 2 | get_active() 返回“active”属性的值,该属性是当前活动项目的模型索引。 |
| 3 | set_active() 将 combo_box 的活动项目设置为指定模型索引的项目。 |
| 4 | set_model() 设置组合框使用的模型。 |
| 5 | append_text() 将 text 指定的字符串追加到组合框列表存储中存储的字符串列表中。 |
| 6 | Insert_text() 在组合框 gtk.ListStore 中,在 position 指定的索引处插入 text 指定的字符串。 |
| 7 | prepend_text() 将 text 指定的字符串预置到列表存储中存储的字符串列表中。 |
| 8 | remove_text() 删除关联列表存储中 position 指定索引处的字符串。 |
| 9 | get_active_text() 返回当前活动的字符串。 |
ComboBox 小部件发出以下信号:
| changed | 在组合框中选择新项目时发出。 |
| move_active | 这是一个键绑定信号,发出以移动活动选择。 |
| Popdown | 这是一个键绑定信号,发出以弹出组合框列表。此信号的默认绑定是 Alt+Up 和 Escape。 |
| Popup | 这是一个键绑定信号,发出以弹出组合框列表。此信号的默认绑定是 Alt+Down。 |
下面给出两个组合框演示示例代码。
示例 1
在此示例中,ListStore 使用流行的 Python GUI 工具包的名称填充,并与 ComboBox 小部件相关联。当用户做出选择时,将发出 changed 信号。它连接到一个回调函数以显示用户的选择。
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
程序的第二个版本使用便利方法 **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()
此程序的输出与上一个程序的输出类似。