我想将gtk.Assistant
的“应用”按钮的标签更改为“开始”。我在gtk.Button
实例中找不到相应的Assistant
小部件。
以下是两页Assistant
的基本代码:
import gtk
a = gtk.Assistant()
page = gtk.CheckButton("Something optional")
a.append_page(page)
a.set_page_type(page, gtk.ASSISTANT_PAGE_CONTENT)
a.set_page_title(page, "Make decisions")
a.set_page_complete(page, True)
page = gtk.Label("Alright, let's build some foo.")
a.append_page(page)
a.set_page_type(page, gtk.ASSISTANT_PAGE_CONFIRM)
a.set_page_title(page, "Confirm")
a.set_page_complete(page, True)
a.connect('delete-event', gtk.main_quit)
a.connect('close', gtk.main_quit)
a.show_all()
gtk.main()
在最后一页上,您会看到“应用”按钮。我想将该文本更改为“开始”。
gtk.Assistant.children()
和.get_children()
会返回页面小部件列表。
gtk.Assistant.get_child()
返回None。
gtk.Assistant.get_action_area()
不是一种方法。
以下是文档的链接:http://www.pygtk.org/docs/pygtk/class-gtkassistant.html
如何找到我感兴趣的gtk.Button
?
答案 0 :(得分:4)
我在尝试使用变通方法时设法找到了解决方案。
gtk.Assistant
会使用返回页面列表的内容覆盖gtk.Container.get_children()
方法,但它实际上仍然是gtk.HBox()
的父级,其中包含“下一步”按钮,应用','取消'等
方法gtk.Assistant.add_action_widget()
将小部件添加到所谓的“操作区域”。事实证明这是包含相关按钮的HBox
。以下函数将生成对HBox
:
def get_buttons_hbox(assistant):
# temporarily add a widget to the action area and get its parent
label = gtk.Label('')
assistant.add_action_widget(label)
hbox = label.get_parent()
hbox.remove(label)
return hbox
然后使用get_buttons_hbox(a).get_children()
检索按钮。
for child in get_buttons_hbox(a).get_children():
print child.get_label()
打印:
gtk-goto-last
gtk-go-back
gtk-go-forward
gtk-apply
gtk-cancel
gtk-close
因此,以下代码解决了问题(使用上面定义的get_buttons_hbox()
):
for child in get_buttons_hbox(a).get_children():
label = child.get_label()
if label == 'gtk-apply':
child.set_label('Start')
答案 1 :(得分:3)
我不确定pygtk是否可行。如果你用python切换到GObject Introspection,你可以设置一个完全自定义的动作区域。来自Gtk3 GtkAssistant文档:
如果您的案例不符合GtkAssistants的方式 处理按钮,您可以使用GTK_ASSISTANT_PAGE_CUSTOM页面类型 并自己处理按钮。
和
GTK_ASSISTANT_PAGE_CUSTOM 用于其他页面类型不是 适当。没有按钮会显示,应用程序必须添加 它自己的按钮通过gtk_assistant_add_action_widget()。