02-10-2021, 07:07:44
Mais, tu te compliques la vie pour rien.
Ca va pas ton histoire de window et de dialogue : tu ré-ouvres un truc alors que ça peut rester sur la même fenêtre.
Je te donne un exemple plus propre.
La, ce qu'il te faut c'est une et une seul window avec des zones d'affichages différentes.
Voilà ce que je te propose :
Tu as des Vbox (correspond à des zones d'affichages) que tu mets dans tes propriétés de classes (pour pouvoir y accéder dans toute ta classe).
Tu déclares toute ton interface dès le début. (comme ça, tout est en mémoire, pas de clignotement)
Tu dis à gtk de tout dessiner : self.show_all()
Puis tu caches ce qui ne doit pas apparaitre à la première étape : en fait tout sauf la zone de saisie de nom.
Après, c'est juste un jeu de cache-cache : selon l'action, tu vas cacher ou afficher une ou plusieurs zones.
Ca va pas ton histoire de window et de dialogue : tu ré-ouvres un truc alors que ça peut rester sur la même fenêtre.
Je te donne un exemple plus propre.
La, ce qu'il te faut c'est une et une seul window avec des zones d'affichages différentes.
Voilà ce que je te propose :
Tu as des Vbox (correspond à des zones d'affichages) que tu mets dans tes propriétés de classes (pour pouvoir y accéder dans toute ta classe).
Tu déclares toute ton interface dès le début. (comme ça, tout est en mémoire, pas de clignotement)
Tu dis à gtk de tout dessiner : self.show_all()
Puis tu caches ce qui ne doit pas apparaitre à la première étape : en fait tout sauf la zone de saisie de nom.
Après, c'est juste un jeu de cache-cache : selon l'action, tu vas cacher ou afficher une ou plusieurs zones.
Code :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GdkPixbuf, Gdk
class nbGtk(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Apprentissage des nombres")
self.set_resizable(True)
self.set_border_width(10)
hbox = Gtk.HBox()
self.vbox_debut = Gtk.VBox()
label_nom = Gtk.Label(label="Ton nom :")
entry_nom = Gtk.Entry()
entry_nom.set_name('nom')
button_commencer = Gtk.Button(label="C'est parti !")
button_commencer.connect("clicked", self.commencer_jeux)
self.vbox_debut.add(label_nom)
self.vbox_debut.add(entry_nom)
self.vbox_debut.add(button_commencer)
self.vbox_exercice = Gtk.VBox()
button_lire_son = Gtk.Button(label="ECOUTER SON")
self.vbox_exercice.add(button_lire_son)
hbox.add(self.vbox_debut)
hbox.add(self.vbox_exercice)
self.add(hbox)
self.show_all()
self.vbox_exercice.hide()
def commencer_jeux(self, button):
self.vbox_debut.hide()
self.vbox_exercice.show()
if __name__ == "__main__":
win = nbGtk()
win.connect("destroy", Gtk.main_quit)
win.move(10, 10)
Gtk.main()