Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/09/2007, à 15:17

dedesite

PyGtK/Glade : Encore des questions...

Bonjour à tous,
J'avais eu 2, 3 petits problèmes vites réglés à mes début sous Glade :
http://forum.ubuntu-fr.org/viewtopic.php?id=143256

Maintenant, je suis arrivé à faire a peu près ce que je voulais, mais il reste quelques problèmes que je n'arrive pas à régler...
En fait, je cherche à faire une application qui fonctionne un peu comme un assistant (wiazrd) avec un fenêtre (window) qui change au fur et à mesure qu'on avance dans l'appli (avec des boutons suivant et précédent).
J'ai alors créer pour chaque écran (fenêtre quoi big_smile) un élément window dans glade.
Sous Python, pour charger une nouvelle fenêtre je fais ça :

class PrototypeEntityInfo:
	def __init__(self):
		self.gladefile = "Prototype.glade" 
		self.wTree = gtk.glade.XML(self.gladefile, "winEntityInfo")
		#Create our dictionay and connect it
                dic = { "on_winEntityInfo_destroy" : gtk.main_quit,
			"on_btnValideEntiteInfo_clicked" : self.openEntityEditor,
			"on_btnPasseEntiteInfo_clicked" :  self.openEntityEditor}
                self.wTree.signal_autoconnect(dic)

	def openEntityEditor(self, widget):
		hwg = PrototypeEntityEditor()


class PrototypeEntityEditor:

	def __init__(self):
		self.gladefile = "Prototype.glade" 
		self.wTree = gtk.glade.XML(self.gladefile, "winEntityEditor")
		#Create our dictionay and connect it
                dic = { "on_winEntityEditor_destroy" : gtk.main_quit}
		self.wTree.signal_autoconnect(dic)

Donc en gros, j'ai une classe par window et pour changer de window je modifie la variable hwg qui est a mon avis la fenetre principale.

Le problème est que la fenêtre d'avant reste!! je me retrouve donc avec 2 fenêtres ouvertes, ce que je ne veux pas.
Je pense que changer la variable hwg n'est pas la solution, il doit y avoir une fonction qui permet de changer la fenetre principale, plus proprement, mais je ne sais pas ce que c'est.

Autre problème : Mes fenetres ont toutes des tailles différente alors que j'ai spécifier une taille de base (800*600) dans glade :

    <property name="default_width">800</property>
    <property name="default_height">600</property>

Pourtant, c'est comme si il n'y avait pas ces propriétés, savez-vous pourquoi?

Voilà, ce sont des problèmes assez bêtes mais comme je ne sais pas trop où chercher, je n'arrive pas à les régler moi-même... Si quelqu'un à une solution, ça serait vraiment sympa.


Merci,
Andréas

Hors ligne

#2 Le 05/09/2007, à 17:37

anne au nimes

Re : PyGtK/Glade : Encore des questions...

Salut,
il y a quelques temps que je n'ai pas touché à python, mais j'avais "bricolé" une application qui faisais ce que tu cherches à réaliser.

J'avais mis les différents écrans dans des conteners que je masquais et affichais au fur et à mesure de l'avancée. Chaque écran comportait les éléments voulus.
J'avais mis un champ caché dans lequel je plaçais un compteur.
Le bouton suivant incrémentait le compteur, le bouton précédent faisait l'inverse, puis apellait une fonction qui, selon la valeur affichée dans le compteur (non visible mais récupérable), affichait l'écran voulu.
On peut aussi sauter une étape, selon qu'on est en mode simple ou en mode avancé en mettant des valeurs par défaut et en incrémentant de +2 au lieu de +1 avec les boutons suivant/précédent.

Cette méthode n'est certainement pas la meilleure, mais elle a le mérite d'être fonctionnelle.

En espérant avoir pu t'aider...

#3 Le 05/09/2007, à 20:42

dedesite

Re : PyGtK/Glade : Encore des questions...

Hum, intéressant ton idée... C'est un peu du bricolage comme tu dis, mais au moins ça marche! lol

Je ne sais pas si je vais faire comme ça vu que j'ai déjà créer mes window et je trouve qu'une fois qu'on a créé des interface avec Glade, elles ne sont pas trop modulable (ou alors c'est moi qui maitrise mal le logiciel). J'aurai donc du mal a "transformer" mes window en simple contener.

Quoiqu'en bidouillant à la main le fichier XML ça doit se faire....

Enfin bon, j'hésite encore à utiliser ta solution. Je vais attendre encore un peu histoire de voir si quelqu'un a pas une meilleure solution ou si je trouve pas quelquechose d'intéressant sur le net. De toute façon ça presse pas wink.

En tout cas merci à toi,
A bientôt,
Andréas

Hors ligne