- PyGTK 教程
- PyGTK - 主页
- PyGTK - 简介
- PyGTK - 环境
- PyGTK - 你好世界
- PyGTK - 重要类
- PyGTK - 窗口类
- PyGTK - 按钮类
- PyGTK - 标签类
- PyGTK - 入门级
- PyGTK - 信号处理
- PyGTK - 事件处理
- PyGTK - 容器
- PyGTK - 盒子类
- PyGTK - ButtonBox 类
- PyGTK - 对齐类
- PyGTK - EventBox 类
- PyGTK - 布局类
- PyGTK - 组合框类
- PyGTK - ToggleButton 类
- PyGTK - CheckButton 类
- PyGTK - 单选按钮类
- PyGTK - 菜单栏、菜单和菜单项
- PyGTK - 工具栏类
- PyGTK - 调整类
- PyGTK - 范围类
- PyGTK - 规模类
- PyGTK - 滚动条类
- PyGTK - 对话框类
- PyGTK - 消息对话框类
- PyGTK - AboutDialog 类
- PyGTK - 字体选择对话框
- PyGTK - 颜色选择对话框
- PyGTK - 文件选择器对话框
- PyGTK - 笔记本类
- PyGTK - 框架类
- PyGTK - AspectFrame 类
- PyGTK - TreeView 类
- PyGTK - 窗格类
- PyGTK - 状态栏类
- PyGTK - ProgressBar 类
- PyGTK - 视口类
- PyGTK - 滚动窗口类
- PyGTK - 箭头类
- PyGTK - 图像类
- PyGTK - DrawingArea 类
- PyGTK - SpinButton 类
- PyGTK - 日历类
- PyGTK - 剪贴板类
- PyGTK - 标尺类
- PyGTK - 超时
- PyGTK - 拖放
- PyGTK 有用资源
- PyGTK - 快速指南
- PyGTK - 有用的资源
- PyGTK - 讨论
PyGTK - 组合框类
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 | 获取活动() 返回“active”属性的值,该属性是当前活动项目的模型中的索引 |
3 | 设置活动() 将组合框的活动项设置为指定模型索引的项 |
4 | 设置模型() 设置组合框使用的模型 |
5 | 追加文本() 将文本指定的字符串追加到组合框列表存储中存储的字符串列表中 |
6 | 插入文本() 将由文本指定的字符串插入组合框 gtk.ListStore 中由位置指定的索引处 |
7 | 前置文本() 将文本指定的字符串添加到存储在列表存储中的字符串列表的前面 |
8 | 删除文本() 删除关联列表存储中位置指定的索引处的字符串 |
9 | 获取活动文本() 返回当前活动的字符串 |
ComboBox 小部件发出以下信号 -
改变了 | 当选择组合框中的新项目时会发出此消息 |
移动活动 | 这是一个键绑定信号,发出该信号以移动活动选择。 |
下拉菜单 | 这是一个键绑定信号,发出该信号以弹出组合框列表。此信号的默认绑定是 Alt+Up 和 Escape |
弹出窗口 | 这是一个键绑定信号,发出该信号以弹出组合框列表。此信号的默认绑定是 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()
执行后,程序显示以下输出 -
实施例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()
该程序的输出与前一个程序的输出类似。