OVH Cloud OVH Cloud

TK et les bouttons

4 réponses
Avatar
Frantz
Peut on creer des bouttons et leurs attribuer un nom en dynmic

ex qui ne marche pas :

@list='A B C D';

foreach(@list){
$Boutton{$_}=$Win->Button(...)->place(-x=> $X, -y => $Y+1);
}

En fait le nom du boutton est une variable.
J'ai essayer mais ca ne marche pas.
Ya t-il une possibilité de ce genre?

Merci A+ Frantz

4 réponses

Avatar
Paul GABORIT
À (at) 15 Feb 2004 20:54:01 GMT,
Frantz écrivait (wrote):
Peut on creer des bouttons et leurs attribuer un nom en dynmic


Qu'appelez-vous le "nom" d'un bouton ?

ex qui ne marche pas :

@list='A B C D';

foreach(@list){
$Boutton{$_}=$Win->Button(...)->place(-x=> $X, -y => $Y+1);
}


Mis à part les variables non déclarées et non initialisées (je suppose que ça
doit être fait par ailleurs pour $Win, $X, $Y et %Boutton), qu'est-ce qui ne
marche pas ? Donnez donc un exemple statique simple et décrivez-nous comment
vous voulez qu'il marche en dynamique.

En fait le nom du boutton est une variable.


C'est quoi pour vous le nom d'un bouton ?

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Frantz
Paul GABORIT écrivait
news::


À (at) 15 Feb 2004 20:54:01 GMT,
Frantz écrivait (wrote):
Peut on creer des bouttons et leurs attribuer un nom en dynmic


Qu'appelez-vous le "nom" d'un bouton ?

ex qui ne marche pas :

@list='A B C D';

foreach(@list){
$Boutton{$_}=$Win->Button(...)->place(-x=> $X, -y => $Y+1);
}


Mis à part les variables non déclarées et non initialisées (je suppose
que ça doit être fait par ailleurs pour $Win, $X, $Y et %Boutton),
qu'est-ce qui ne marche pas ? Donnez donc un exemple statique simple
et décrivez-nous comment vous voulez qu'il marche en dynamique.

En fait le nom du boutton est une variable.


C'est quoi pour vous le nom d'un bouton ?

Ex qui marche:

...
$Button1=$Win->Button(-state => 'normal')->place (-x=> 25, -y => 30);
$Button2=$Win->Button(-state => 'normal')->place (-x=> 25, -y => 60);

$Button1->configure(-state => 'disable');
...

Ca ca marche.

Ex2: qui ne parche pas
....
$Y0
for ($i=0 , $i < 2; $i++){
$Y=$Y+30;

$Button{$i}=$Win->Button(-state => 'enable')->place (-x=> 25, -y => $Y);
}

$Button{1}->configure(-state => 'disable');

...
Ca ca ne marche pas

Ca marche pour les variable -x et -y de positionnement mais pas pour le
nom du boutton. Je veux pouvoir creer une liste de boutton en fonction du
resulta d'une requête SQL par exemple.
Ex: J'ai 4 collaborateurs dans ma table 'TableCollab', et je veux creer
en dynamic un boutton par collab. Si un de ses collaborateurs quitte la
société, il me restera que 3 bouttons a afficher lors de la prochaine
ouverture du programme.
J'espere etre asser claire dans mes explications.
Merci pour les infos A+ Frantz.


Avatar
Paul GABORIT
À (at) 17 Feb 2004 07:34:02 GMT,
Frantz écrivait (wrote):
for ($i=0 , $i < 2; $i++){
$Y=$Y+30;

$Button{$i}=$Win->Button(-state => 'enable')->place (-x=> 25, -y => $Y);
}

$Button{1}->configure(-state => 'disable');

...
Ca ca ne marche pas


C'est normal :

- votre boucle n'est pas correcte (une virgule à la place d'un
point-virgule)

- 'enable' n'est pas une valeur acceptable (c'est 'normal', 'disabled'
ou 'active' ou en plus court 'n', 'd' ou 'a')

Avez-vous vraiment testé votre code ? Une fois ces deux bugs corrigés, votre
code fonctionne.

Voici un bout de code qui marche (testé) :

------------------------------------------------------------
use strict;
use warnings;

use Tk;

my $top = MainWindow->new;

my %but;

foreach my $num (0..3) {
$but{$num} = $top->Button(-state => 'normal',
-text => "Boutton $num",
-state => 'disabled',
-command => sub {
print "Boutton $numn";
}
)->place(-x => 0,
-y => 0 + $num * 30);
}
$but{1}->configure(-state => 'normal');

MainLoop();
------------------------------------------------------------

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Frantz DORSEMAINE
Paul GABORIT écrivait
news::


À (at) 17 Feb 2004 07:34:02 GMT,
Frantz écrivait (wrote):
for ($i=0 , $i < 2; $i++){
$Y=$Y+30;

$Button{$i}=$Win->Button(-state => 'enable')->place (-x=> 25, -y =>
$Y); }

$Button{1}->configure(-state => 'disable');

...
Ca ca ne marche pas


C'est normal :

- votre boucle n'est pas correcte (une virgule à la place d'un
point-virgule)

- 'enable' n'est pas une valeur acceptable (c'est 'normal',
'disabled' ou 'active' ou en plus court 'n', 'd' ou 'a')

Avez-vous vraiment testé votre code ? Une fois ces deux bugs corrigés,
votre code fonctionne.

Voici un bout de code qui marche (testé) :

------------------------------------------------------------
use strict;
use warnings;

use Tk;

my $top = MainWindow->new;

my %but;

foreach my $num (0..3) {
$but{$num} = $top->Button(-state => 'normal',
-text => "Boutton $num",
-state => 'disabled',
-command => sub {
print "Boutton $numn";
}
)->place(-x => 0,
-y => 0 + $num * 30);
}
$but{1}->configure(-state => 'normal');

MainLoop();
------------------------------------------------------------



Merci pour tout, car cela m'enleve une epine du pied.
A+ Frantz