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?
vseparator wird nicht sofort angezeigt
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Kannste mal etwas Code zeigen?
- 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:
dann erstelle ich einige steuerelemente in einer for-schleife, die dann folgendermaßen immer in die tabelle eingefügt werden:
nach der for-schleife füge ich dann noch den besagten vseparator ein:
ist das in etwa, was du sehen wolltest?
Code: Alles auswählen
table = Globals.WTREE.get_widget('chanTable')
table.resize((len(Globals.CONFIGFILE.Channels)/2)+1, 7)
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)
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()
- dall♀
- User
- Beiträge: 12
- Registriert: Dienstag 23. März 2010, 15:44
hier auch noch mal zwei bilder des ganzen.
einmal ohne separator:
nach verändern der größe des fensters wird der separator angezeigt:
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?
einmal ohne separator:
nach verändern der größe des fensters wird der separator angezeigt:
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?
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Ich meinte lauffähigen Code sodass ich's selbst ausprobieren kann.
- 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
gibt gtk einfach mal die Chance noch ausstehende Events zu verarbeiten
Code: Alles auswählen
while gtk.events_pending():
gtk.main_iteration(False)
- dall♀
- User
- Beiträge: 12
- Registriert: Dienstag 23. März 2010, 15:44
hi livingOn, hab's versucht, er rappelt auch einige male durch die schleife durch, aber es bringt leider nicht den gewünschten erfolgLivingOn hat geschrieben:gibt gtk einfach mal die Chance noch ausstehende Events zu verarbeitenCode: Alles auswählen
while gtk.events_pending(): gtk.main_iteration(False)