Как мне изменить модальное диалоговое окно (уменьшить), чтобы оно соответствовало размеру его дочерних элементов при удалении дочерних виджетов? Следующий пример вырезания устанавливает ширину модального диалога, добавляет виджеты (который автоматически расширяет высоту), однако при удалении виджета остальные дочерние виджеты сдвигаются, но модаль остается той же самой высотой с пустым пространством внизу.Изменение размера диалогового окна Gtk после скрытия/удаления виджетов
import gtk
import pango
dialog = gtk.Dialog()
dialog.set_modal(True)
screen_width = gtk.gdk.screen_width()
screen_height = gtk.gdk.screen_height()
dialog.set_property('width-request', screen_width/3)
dialog.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
dialog.action_area.set_layout(gtk.BUTTONBOX_SPREAD)
flash = gtk.Label("Foo")
flash.set_alignment(0, 0)
flash.set_line_wrap(True)
flash.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#a94442'))
flash.modify_font(pango.FontDescription("sans 48"))
eventbox = gtk.EventBox()
eventbox.add(flash)
eventbox.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ebccd1'))
label = gtk.Label("Username:")
def check(widget=None):
print "test"
flash.hide()
entry = gtk.Entry()
button = gtk.Button('Check')
button.connect('clicked', check)
table = gtk.Table(2, 2, False)
table.attach(label, 0, 1, 0, 1, xoptions=gtk.SHRINK)
table.attach(entry, 1, 2, 0, 1, xoptions=gtk.EXPAND|gtk.FILL)
table.attach(button, 1, 2, 1, 2, xoptions=gtk.EXPAND|gtk.FILL)
table.show()
vbox = gtk.VBox()
vbox.pack_start(eventbox, False, False, 10)
vbox.pack_start(table, False, False, 10)
dialog.vbox.add(vbox)
dialog.show_all()
dialog.run()
Диалоги не могут быть изменены, но это может быть полезно http://stackoverflow.com/questions/14284166/set-dialog-not-resizable-or-create-another-gtk-window – Louis