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 类有以下方法 −
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 中由 text 指定的字符串插入由 position 指定的索引处 |
7 | prepend_text() 将text指定的字符串添加到list store中存储的字符串列表中 |
8 | remove_text() 删除关联列表存储中由位置指定的索引处的字符串 |
9 | get_active_text() 返回当前活动的字符串 |
下面给出了两个用于演示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()
这个程序的输出与前面的程序类似。

颜色选择器


读后有收获微信请站长喝咖啡

报告错误 打印 关于 学习路线
错误报告
如果您发现内容有误或提出修改建议,请随时向我们发送 E-mail 邮件:
421660149@qq.com
您的建议:
感谢您的帮助!
您的建议已发送到 W3schools。
W3Schools 在线教程提供的内容仅用于学习和测试,不保证内容的正确性。通过使用本站内容随之而来的风险与本站无关。Copyright 2020-2024 关于我们 | 隐私条款 | 学习路线 | 京ICP备14045893号-9
changed | 选择组合框中的新项目时发出 |
move_active | 这是一个键绑定信号,它被发射以移动活动选择。 |
Popdown | 这是一个键绑定信号,它被发出以弹出组合框列表。 此信号的默认绑定是 Alt+Up 和 Escape |
Popup | 这是一个用于弹出组合框列表的键绑定信号。 此信号的默认绑定是 Alt+Down。 |