Je viens de commencer =E0 travailler avec python et je d=E9veloppe une
petite interface.
J'ai trois principaux probl=E8mes :
- les sizer
- refresh
- et comment utiliser les param=E8tres de m=E9thode =E9couteur
Pour les sizer :
Je souhaites organiser ma fen=EAtre (frame) avec 3 lignes et 2
colonnes, j'utilise donc un wx.GridSizer(3,2). Ensuite dans chaque
case j'ajoute en Panel (conteneur) qui contient divers objet (label,
button, etc.) plac=E9 gr=E2ce a un wx.GridBagSizer.
Mon probl=E8me est que tous mes Panel ce placent dans la premi=E8re case
de ma frame principale.
J'ai essay=E9 tous les Sizer, tous les indices rien ne change !
Lorsque j'ajoute des objets dans ma frame (label, button) ils sont
tous les un sur les autres, il faut que change la taille de la fen=EAtre
pour les faire apparaitre.
N'y a t il pas m=E9thode refresh ?
Pour les =E9v=E8nements :
Je veux ajouter un checkBox a choix unique (case ronde) je ne trouve
pas l'objet, mais en attendant j'utilise un checkBox (case carr=E9).
j'ajoute un =E9couteur
> self.Bind(wx.EVT_CHECKBOX,self.OnPressCheckBox,checkBox)
comment r=E9cup=E9rer le label de la boite cliquer dans la m=E9thode
OnPressCheckBox(self,evt) via la variable evt ?
Merci pour votre aide
Cdlt
P.
Voici le code complet, =E7a doit marcher chez vous :
_____________________________________
import sys,os
import string
from idevs import *
try:
import wx
except ImportError:
raise ImportError,"The wxPython module is required to run this
program."
for spath in ['../Lib']:
if not spath in sys.path: sys.path.append(spath)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Amaury Forgeot d'Arc
a écrit :
Bonjour,
Je viens de commencer à travailler avec python et je développe une petite interface. J'ai trois principaux problèmes : - les sizer - refresh - et comment utiliser les paramètres de méthode écouteur
- D'abord les sizers: il faut absolument créer les différents labels et boutons sur le panel correspondant, et non sur la frame principale. par exemple, labelA = wx.StaticText(self.conteneur00,-1,label=u'A') Sinon: toutes les coordonnées sont bien calculées, sauf que le labelA se retrouve en position (0,0) par rapport à la frame, au lieu d'être en position (0,0) par rapport à son panel.
- le refresh: quand on ajoute dynamiquement des composants à une fenêtre, il faut demander un recalcul de tous les sizers. Essaie avec un self.Layout()
- un "checkBox a choix unique" s'appelle un wx.RadioButton, qui se déplace souvent en groupe... tu devrais aussi regarder wx.RadioBox
> comment récupérer le label de la boite cliquer dans la méthode > OnPressCheckBox(self,evt) via la variable evt ? evt.GetEventObject.GetLabel() (enfin je crois, je n'ai pas essayé)
-- Amaury Forgeot d'Arc
peracciu@yahoo.fr a écrit :
Bonjour,
Je viens de commencer à travailler avec python et je développe une
petite interface.
J'ai trois principaux problèmes :
- les sizer
- refresh
- et comment utiliser les paramètres de méthode écouteur
- D'abord les sizers:
il faut absolument créer les différents labels et boutons sur le panel
correspondant, et non sur la frame principale.
par exemple,
labelA = wx.StaticText(self.conteneur00,-1,label=u'A')
Sinon: toutes les coordonnées sont bien calculées, sauf que le labelA se
retrouve en position (0,0) par rapport à la frame, au lieu d'être en
position (0,0) par rapport à son panel.
- le refresh:
quand on ajoute dynamiquement des composants à une fenêtre, il faut
demander un recalcul de tous les sizers. Essaie avec un
self.Layout()
- un "checkBox a choix unique" s'appelle un wx.RadioButton, qui se
déplace souvent en groupe... tu devrais aussi regarder wx.RadioBox
> comment récupérer le label de la boite cliquer dans la méthode
> OnPressCheckBox(self,evt) via la variable evt ?
evt.GetEventObject.GetLabel()
(enfin je crois, je n'ai pas essayé)
Je viens de commencer à travailler avec python et je développe une petite interface. J'ai trois principaux problèmes : - les sizer - refresh - et comment utiliser les paramètres de méthode écouteur
- D'abord les sizers: il faut absolument créer les différents labels et boutons sur le panel correspondant, et non sur la frame principale. par exemple, labelA = wx.StaticText(self.conteneur00,-1,label=u'A') Sinon: toutes les coordonnées sont bien calculées, sauf que le labelA se retrouve en position (0,0) par rapport à la frame, au lieu d'être en position (0,0) par rapport à son panel.
- le refresh: quand on ajoute dynamiquement des composants à une fenêtre, il faut demander un recalcul de tous les sizers. Essaie avec un self.Layout()
- un "checkBox a choix unique" s'appelle un wx.RadioButton, qui se déplace souvent en groupe... tu devrais aussi regarder wx.RadioBox
> comment récupérer le label de la boite cliquer dans la méthode > OnPressCheckBox(self,evt) via la variable evt ? evt.GetEventObject.GetLabel() (enfin je crois, je n'ai pas essayé)
-- Amaury Forgeot d'Arc
peracciu
Merci beaucoup pour votre aide. Changer le parent lors de la création des objets ça marche, mon problème c'est que le second conteneur ce place a droite du 1er et non dessous
On regardant le code du 1er poste, j'ai du déplacer ces trois lignes dans la méthode 'OnNew'
Le self.Layout() marche nickel, Merci
Par contre pour les RadioBox je ne comprend pas leur fonctionnement lorsque j'en rajoute une il n'y a rien a cliquer, j'ai donc opté pour un série de RadioButton
for i in self.cbTxt: radioButton = wx.RadioButton(self.conteneur20,-1,label=u' '+self.cbTxt[i]) self.panelSizer3.Add(radioButton,(i+1,0),(1,1),wx.EXPAND) self.Bind(wx.EVT_RADIOBUTTON,self.OnPressRadioButton,radioButton)
mais je n'arrive pas a récupérer le label du bouton sélectionné via la méthode 'OnPressRadioButton(self,evt)'
Si vous avez une idée, et de même pour l'amélioration de mon code.
Merci beaucoup
Merci beaucoup pour votre aide.
Changer le parent lors de la création des objets ça marche, mon
problème c'est que le second conteneur ce place a droite du 1er et
non dessous
On regardant le code du 1er poste, j'ai du déplacer ces trois lignes
dans la méthode 'OnNew'
Le self.Layout() marche nickel, Merci
Par contre pour les RadioBox je ne comprend pas leur fonctionnement
lorsque j'en rajoute une il n'y a rien a cliquer, j'ai donc opté pour
un série de RadioButton
for i in self.cbTxt:
radioButton =
wx.RadioButton(self.conteneur20,-1,label=u' '+self.cbTxt[i])
self.panelSizer3.Add(radioButton,(i+1,0),(1,1),wx.EXPAND)
self.Bind(wx.EVT_RADIOBUTTON,self.OnPressRadioButton,radioButton)
mais je n'arrive pas a récupérer le label du bouton sélectionné via la
méthode 'OnPressRadioButton(self,evt)'
Si vous avez une idée, et de même pour l'amélioration de mon code.
Merci beaucoup pour votre aide. Changer le parent lors de la création des objets ça marche, mon problème c'est que le second conteneur ce place a droite du 1er et non dessous
On regardant le code du 1er poste, j'ai du déplacer ces trois lignes dans la méthode 'OnNew'
Le self.Layout() marche nickel, Merci
Par contre pour les RadioBox je ne comprend pas leur fonctionnement lorsque j'en rajoute une il n'y a rien a cliquer, j'ai donc opté pour un série de RadioButton
for i in self.cbTxt: radioButton = wx.RadioButton(self.conteneur20,-1,label=u' '+self.cbTxt[i]) self.panelSizer3.Add(radioButton,(i+1,0),(1,1),wx.EXPAND) self.Bind(wx.EVT_RADIOBUTTON,self.OnPressRadioButton,radioButton)
mais je n'arrive pas a récupérer le label du bouton sélectionné via la méthode 'OnPressRadioButton(self,evt)'
Si vous avez une idée, et de même pour l'amélioration de mon code.
Merci beaucoup
peracciu
Bonjour,
Merci pour votre réponse elle m'a bien aidé. Le changement de parent lors de la création d'objet ça marche mieux, mais j'ai toujours un problème : le second conteneur ce place à droite du premier et non dessous. De plus, pour que ça marche j'ai du déplacer ces 3 lignes de code dans la méthode OnNew, a la fin des tests 1 et 2.
Par contre la méthode self.Layout() marche très bien merci.
Pour les RadioBox je ne comprends pas comment ça marche, car ça n'affiche rien de sélectionnable dans ma fenêtre, j'utilise donc plusieurs RadionButton, mais je n'arrive toujours pas a récupérer leurs label ou leur id via l'évènement joint. for i in self.cbTxt: radioButton = wx.RadioButton(self.conteneur20,-1,label=u' '+self.cbTxt[i]) self.panelSizer3.Add(radioButton,(i+1,0),(1,1),wx.EXPAND) self.Bind(wx.EVT_RADIOBUTTON,self.OnPressRadioButton,radioButton)
C'est la méthode OnPressRadioButton(self,evt)
Mon problème de positionnement de sizer en entraîne d'autre comme par exemple j'aimerais ajouter un label (pour test) dans la case 0 1 (première ligne second colonne). Méthode OnPressEnter elle gère les évènements des boutons entrer. A ce propos je veux utiliser une seule méthode pour gérer les 2 boutons, comment savoir lequel a été cliqu é, c'est toujours avec la variable evt de la méthode OnPressEnter() mais je ne sais pas quoi utiliser !!!
Pour l'ajout du label, que j'utilise un conteneur ou pas ça ne m'affiche rien !!!
Merci beaucoup pour votre aide.
Cdlt P.
Bonjour,
Merci pour votre réponse elle m'a bien aidé.
Le changement de parent lors de la création d'objet ça marche mieux,
mais j'ai toujours un problème : le second conteneur ce place à droite
du premier et non dessous.
De plus, pour que ça marche j'ai du déplacer ces 3 lignes de code dans
la méthode OnNew, a la fin des tests 1 et 2.
Par contre la méthode self.Layout() marche très bien merci.
Pour les RadioBox je ne comprends pas comment ça marche, car ça
n'affiche rien de sélectionnable dans ma fenêtre, j'utilise donc
plusieurs RadionButton, mais je n'arrive toujours pas a récupérer
leurs label ou leur id via l'évènement joint.
for i in self.cbTxt:
radioButton =
wx.RadioButton(self.conteneur20,-1,label=u' '+self.cbTxt[i])
self.panelSizer3.Add(radioButton,(i+1,0),(1,1),wx.EXPAND)
self.Bind(wx.EVT_RADIOBUTTON,self.OnPressRadioButton,radioButton)
C'est la méthode OnPressRadioButton(self,evt)
Mon problème de positionnement de sizer en entraîne d'autre comme par
exemple j'aimerais ajouter un label (pour test) dans la case 0 1
(première ligne second colonne). Méthode OnPressEnter elle gère les
évènements des boutons entrer. A ce propos je veux utiliser une seule
méthode pour gérer les 2 boutons, comment savoir lequel a été cliqu é,
c'est toujours avec la variable evt de la méthode OnPressEnter() mais
je ne sais pas quoi utiliser !!!
Merci pour votre réponse elle m'a bien aidé. Le changement de parent lors de la création d'objet ça marche mieux, mais j'ai toujours un problème : le second conteneur ce place à droite du premier et non dessous. De plus, pour que ça marche j'ai du déplacer ces 3 lignes de code dans la méthode OnNew, a la fin des tests 1 et 2.
Par contre la méthode self.Layout() marche très bien merci.
Pour les RadioBox je ne comprends pas comment ça marche, car ça n'affiche rien de sélectionnable dans ma fenêtre, j'utilise donc plusieurs RadionButton, mais je n'arrive toujours pas a récupérer leurs label ou leur id via l'évènement joint. for i in self.cbTxt: radioButton = wx.RadioButton(self.conteneur20,-1,label=u' '+self.cbTxt[i]) self.panelSizer3.Add(radioButton,(i+1,0),(1,1),wx.EXPAND) self.Bind(wx.EVT_RADIOBUTTON,self.OnPressRadioButton,radioButton)
C'est la méthode OnPressRadioButton(self,evt)
Mon problème de positionnement de sizer en entraîne d'autre comme par exemple j'aimerais ajouter un label (pour test) dans la case 0 1 (première ligne second colonne). Méthode OnPressEnter elle gère les évènements des boutons entrer. A ce propos je veux utiliser une seule méthode pour gérer les 2 boutons, comment savoir lequel a été cliqu é, c'est toujours avec la variable evt de la méthode OnPressEnter() mais je ne sais pas quoi utiliser !!!