使用PyGObject,可以获得一个通过Revealer过渡扩展的窗口,如下面的代码片段所示:http://learngtk.org/tutorials/python_gtk3_tutorial/html/revealer.html。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
def reveal_child(button):
if revealer.get_reveal_child():
revealer.set_reveal_child(False)
else:
revealer.set_reveal_child(True)
window = Gtk.Window()
window.connect("destroy", Gtk.main_quit)
grid = Gtk.Grid()
window.add(grid)
revealer = Gtk.Revealer()
revealer.set_reveal_child(False)
grid.attach(revealer, 0, 1, 1, 1)
label = Gtk.Label("Label contained in a Revealer widget")
revealer.add(label)
button = Gtk.Button("Reveal")
button.connect("clicked", reveal_child)
grid.attach(button, 0, 0, 1, 1)
window.show_all()
Gtk.main()
如何获得窗口收缩(转换)的相反效果?现在revealer.set_reveal_child(False)
可以看到用于原始显示的扩展空间。
所寻求的效果与Expander类相同。 set_resize_toplevel(True)
效果。{{1}}
答案 0 :(得分:0)
我试图将此作为评论发布,但我没有足够的声誉点。这个答案实在太短(在我看来)是一个单独的答案。无论如何,尝试设置孩子的可见性,例如“revealer.get_reveal_child()。set_visible(False)” 这似乎做了我认为你想做的事情。当您切换显示时,您必须切换孩子的可见性。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gtk
def reveal_child(button):
if revealer.get_reveal_child():
revealer.set_reveal_child(False)
# this line was a mistake
#revealer.get_reveal_child().set_visible(False)
revealer.set_visible(False)
else:
revealer.set_reveal_child(True)
# this line was a mistake
#revealer.get_reveal_child().set_visible(True)
revealer.set_visible(True)
window = Gtk.Window()
window.connect("destroy", Gtk.main_quit)
grid = Gtk.Grid()
window.add(grid)
revealer = Gtk.Revealer()
revealer.set_reveal_child(False)
grid.attach(revealer, 0, 1, 1, 1)
label = Gtk.Label("Label contained in a Revealer widget")
revealer.add(label)
button = Gtk.Button("Reveal")
button.connect("clicked", reveal_child)
grid.attach(button, 0, 0, 1, 1)
window.show_all()
Gtk.main()
编辑纠正:第一次,我在错误的小部件上设置了可见。