ComboBox soll Elternwidget ausdehnen
Verfasst: Sonntag 25. Juli 2010, 20:36
Mein GUI enthält eine ComboBox, deren Inhalt dynamisch erzeugt wird, die benötigte Breite steht also noch nicht fest. Wird der ComboBox Inhalt eingefügt, so verbreitert sich die ComboBox um den benötigten Platz. Die Elternwidgets bleiben aber leider unverändert, so dass man das Fenster manuell verbreitern muss, um den Inhalt der ComboBox lesen zu können. Ich habe mit diversen Attributen der einzelnen Widget versucht zu erreichen, dass die Elternwidgets der Breitenänderung der ComboBox automatisch folgen, bislang aber erfolglos.
Ich würde mich über jeden Tipp freuen, wie ich das erreichen kann. Vielen Dank!
Ich würde mich über jeden Tipp freuen, wie ich das erreichen kann. Vielen Dank!
Code: Alles auswählen
#!/usr/bin/python
#-*- coding: utf-8 -*-
import gtk
class probe(object):
def __init__(self):
""" Initialisiert das Fenster """
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_border_width(5)
self.window.set_default_size(350, 100)
self.window.connect('delete_event', self.event_delete)
self.window.connect('destroy', self.destroy)
self.window.show()
canvas = gtk.VBox(False, 0)
canvas.show()
self.window.add(canvas)
notebook = gtk.Notebook()
notebook.show()
canvas.add(notebook)
tab1 = gtk.VBox(False, 5)
tab1.show()
viewport = gtk.Viewport()
viewport.show()
align = gtk.Alignment(1, 1, 1, 1)
vbox = gtk.VBox(False, 5)
vbox.show()
align.show()
align.set_padding(5, 5, 5, 5)
hbox = gtk.HBox(False, 5)
hbox.show()
self.widInfoButton = gtk.Button("Anzeigen")
self.widInfoButton.connect('clicked', self.actInfoButton)
self.widInfoButton.show()
hbox.pack_start(self.widInfoButton, False, False, 0)
self.widEntriesCombo = gtk.combo_box_new_text()
self.widEntriesCombo.show()
hbox.add(self.widEntriesCombo)
vbox.pack_start(hbox, False, False, 0)
align.add(vbox)
viewport.add(align)
tab1.pack_start(viewport, True, True, 5)
notebook.insert_page(tab1, None, 0)
def actInfoButton(self, widget):
self.widEntriesCombo.append_text("Ein sehr langer Text, der die ComboBox sehr weit ausdehnt")
self.widEntriesCombo.set_active(0)
def event_delete(self, widget, event, data=None):
""" reagiert auf 'delete_event' """
return False
def destroy(self, data=None):
""" reagiert auf 'destroy' """
gtk.main_quit()
def main(self):
""" Nachrichtenschleife """
gtk.main()
if __name__ == "__main__":
app = probe()
app.main()