vseparator wird nicht sofort angezeigt

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Benutzeravatar
dall♀
User
Beiträge: 12
Registriert: Dienstag 23. März 2010, 15:44

hallo-hallo,

in der GUI meines programms, die ich mit pygtk und glade erstellt habe, habe ich eine tabellenspalte freigelassen, um dort im programm zur laufzeit eine neue tabelle und mit ihr einige steuerelemente einzufügen, darunter auch ein vseparator in der mitte. der wird aber beim programmstart nicht angezeigt, sondern erst, wenn ich ein anderes steuerelement der tabelle anklicke oder das fenster vergrößere. dachte erst, dass der separator vielleicht von den anderen elementen "verdrängt" wird und habe via property eine mindestbreite gesetzt. die wird zwar auch akzeptiert, aber ebenfalls erst nach anklicken eines anderen steuerelements oder bei vergrößern des fensters. was könnte hier das problem sein?
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Kannste mal etwas Code zeigen?
Benutzeravatar
dall♀
User
Beiträge: 12
Registriert: Dienstag 23. März 2010, 15:44

also, hier hole ich die tabelle aus dem xml-file, das von glade generiert wurde:

Code: Alles auswählen

table = Globals.WTREE.get_widget('chanTable')
table.resize((len(Globals.CONFIGFILE.Channels)/2)+1, 7)
dann erstelle ich einige steuerelemente in einer for-schleife, die dann folgendermaßen immer in die tabelle eingefügt werden:

Code: Alles auswählen

table.attach(Globals.CONFIGFILE.Channels[key].SlotBox, col+0, col+1, position, position+1)
table.attach(Globals.CONFIGFILE.Channels[key].ValueBox, col+1, col+2, position, position+1)
table.attach(Globals.CONFIGFILE.Channels[key].PlotBox, col+2, col+3, position, position+1)
nach der for-schleife füge ich dann noch den besagten vseparator ein:

Code: Alles auswählen

chanSep = gtk.VSeparator()
chanSep.set_property('width-request', 30)
table.attach(chanSep, 3, 4, 0, len(Globals.CONFIGFILE.Channels)/2 + 1)
chanSep.show()
ist das in etwa, was du sehen wolltest? ;)
Benutzeravatar
dall♀
User
Beiträge: 12
Registriert: Dienstag 23. März 2010, 15:44

hier auch noch mal zwei bilder des ganzen.

einmal ohne separator:
Bild

nach verändern der größe des fensters wird der separator angezeigt:
Bild

beim start des programms ist die tabelle noch leer. sobald ein configfile geladen wurde, werden diese kanäle mit den checkboxen und entries sowie eigentlich auch der separator angezeigt. wenn ich vorher das fenster schon einmal vergrößert oder verkleinert habe, wird der separator sofort nach laden des configfiles angezeigt.

weiß jemand, woran das liegen könnte? gibt es so eine art paint-event, das ich manuell auslösen könnte?
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Ich meinte lauffähigen Code sodass ich's selbst ausprobieren kann.
Benutzeravatar
dall♀
User
Beiträge: 12
Registriert: Dienstag 23. März 2010, 15:44

dazu ist es ein wenig zu komplex.. darf ich aber vermutlich leider sowieso nicht, weil's für die firma ist und so :?
LivingOn
User
Beiträge: 33
Registriert: Montag 11. August 2008, 07:53

gibt gtk einfach mal die Chance noch ausstehende Events zu verarbeiten ;-)

Code: Alles auswählen

while gtk.events_pending():
    gtk.main_iteration(False)
Benutzeravatar
dall♀
User
Beiträge: 12
Registriert: Dienstag 23. März 2010, 15:44

LivingOn hat geschrieben:gibt gtk einfach mal die Chance noch ausstehende Events zu verarbeiten ;-)

Code: Alles auswählen

while gtk.events_pending():
    gtk.main_iteration(False)
hi livingOn, hab's versucht, er rappelt auch einige male durch die schleife durch, aber es bringt leider nicht den gewünschten erfolg :|
Antworten