Platz von versteckten Widgets verhindern

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

Hallo Welt,
ich verzweifle gerade an einer Kleinigkeit.
Ich erstelle ein Fenster in dem sich Widgets befinden, unten in dem Fenster ist ein Button mit dem die Ansicht erweitert werden kann. Bei der erweiterten Ansicht passen nicht alle Widgets in das Fenster und es wir ein Scrollbar benötigt. Die zusätzlichen Widgets packe ich alle in eine Box die ich dann wenn sie benötigt werden zeige und ansonsten verstecke. Nach dem Start wird im Fenster der Scrollbar angezeigt und ich sehe die Widgets der nicht erweiterten Ansicht und der Platz für die erweiterten Widgets wird angezeigt obwohl man die Widgets wie auch gewünscht nicht sieht. Sobald ich einen Knopf betätige tut alles wie ich will. Also bei der nicht erweiterten Ansicht kein Scrollbar ( da ja alle Widgets ins Fenster passen), bei der erweiterten Ansicht Scrollbar mit allen Widgets.

Unten habe ich die entscheidenden Ausschnitte des Codes hinzugefügt. Ich kann das ganze auch anders lösen, aber das wären alles unschöne Ansätze mit viel doppeltem Code. Ich hoffe jemand von euch kann mir helfen.
Grüße

Code: Alles auswählen

class mainWindow(gtk.Window):
	
	def __init__(self):
		self.create_window()
		self.show_all()
		self.expand_box.hide()
		
	def create_window(self):
		...
		erstelle Fenster
		...
		self.expand_box = gtk.VBox()
		...
		packe erweiterte Ansicht in expand_box
		...
		self.button = gtk.ToggleButton()
		self.button.connect('clicked', self.expand_toggle)
	
	def expand_toggle(self):
		if self.button.get_active() == True:
			self.expand_box.show()
		else:
			self.expand_box.hide()
Zuletzt geändert von Anonymous am Montag 24. Oktober 2016, 15:22, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

Ich habe die Lösung für mein Problem selbst gefunden. Falls jemand mal das gleiche Problem hat wie ich.
Man muss den Container nach dem ersten hide einmal mit queue_resize_no_redraw() die Größe erneut anpassen.
Antworten