Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2797 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  perl/TK alignement de boutons

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

perl/TK alignement de boutons

n°217063
circeedeva​lette
Posté le 19-09-2002 à 11:42:07  profilanswer
 

salut
 
je suis en train de decouvrir le perl/TK
et je souhaite placer 40 boutons sur une fenetre mais comme ils ne rentrent pas tous verticalement ou horizontalement je voudrais les aligner sur deux colonnes mais je n'arrive pas a le faire...
 
connaissez vous le moyen d'y arriver
merci

mood
Publicité
Posté le 19-09-2002 à 11:42:07  profilanswer
 

n°217137
Aricoh
gentil mais fo po pousser
Posté le 19-09-2002 à 12:55:31  profilanswer
 

circeedevalette a écrit a écrit :

salut
 
je suis en train de decouvrir le perl/TK
et je souhaite placer 40 boutons sur une fenetre mais comme ils ne rentrent pas tous verticalement ou horizontalement je voudrais les aligner sur deux colonnes mais je n'arrive pas a le faire...
 
connaissez vous le moyen d'y arriver
merci



si tu as une doc, je te conseille fortement de la lire  ;)
 
une p'tite url : http://www.cavi.univ-paris3.fr/ilp [...] perlintro/
 
je pense que tu utilise la méthode pack(), zieute un peu si ça donnerait po mieux avec grid() ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°217155
circeedeva​lette
Posté le 19-09-2002 à 14:08:56  profilanswer
 

je connaisait pas l'option grid merci!
 
mais pour avoir l'affichage (comme avec pack) on fait comment,
faut faire un "->gridColumnconfigure" avant le "->grid(-column => 0);" ?
parce que sinon j'ai pas d'affichage

n°217208
Aricoh
gentil mais fo po pousser
Posté le 19-09-2002 à 15:17:13  profilanswer
 

circeedevalette a écrit a écrit :

je connaisait pas l'option grid merci!
 
mais pour avoir l'affichage (comme avec pack) on fait comment,
faut faire un "->gridColumnconfigure" avant le "->grid(-column => 0);" ?
parce que sinon j'ai pas d'affichage



je n'utilise pas grid() mais ce que je sais, c'est qu'il vaut mieux n'utiliser qu'une seule méthode de gestion des objets sur le même widget
 
si tu utilise du pack() dans le code de ta widget et que tu insères du grid(), la cohabitation entre pack et grid == pas bon !


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°217589
circeedeva​lette
Posté le 20-09-2002 à 10:45:14  profilanswer
 

salut aricoh!
en fait, pour utiliser grid faut faire d'abord :
 
configuration des lignes :
$MW->gridRowconfigure(1, -weight  => 0, -minsize  => 30);
configuration des colonnes :
$MW->gridColumnconfigure(1, -weight => 0, -minsize => 30);
$MW->gridColumnconfigure(2, -weight => 1, -minsize => 30);
 
puis utiliser grid :
 $Nom_Bouton1->grid(
   -in => $MW,
   -column => '1',
   -row => '1',
 );
 
sinon maintenant que j'arrive a aligner mes radiobuttons,
je n'arrive pas a recuperer la donnée "bouton1 coché" pour l'utiliser dans le rest de mon programme perl
 

n°217621
Aricoh
gentil mais fo po pousser
Posté le 20-09-2002 à 12:01:44  profilanswer
 

circeedevalette a écrit a écrit :

sinon maintenant que j'arrive a aligner mes radiobuttons,
je n'arrive pas a recuperer la donnée "bouton1 coché" pour l'utiliser dans le rest de mon programme perl



 
je crois savoir  :)
 
Exemple perso :
 
dans un programme qui crée ses fichiers de sortie sur disque dur local ou sur le réseau (au choix du user), j'ai fait un bout de code comme ceci :
 

Code :
  1. my $ValueLocal;
  2. my $ValueRezo;


 
ce sont juste 2 malheureuses variables toutes simples
 
à côté de ça, j'ai 2 cases à cocher que voici :
 

Code :
  1. $mwBrRezo = $mw->Checkbutton(
  2. -text=>"Export sur réseau",
  3. -relief=>'ridge',
  4. -width=>20,
  5. -variable=>\$ValueRezo,
  6.         )->pack;
  7. $mwBrLocal = $mw->Checkbutton(
  8. -text=>"Export sur disque dur",
  9. -relief=>'ridge',
  10. -width=>20,
  11. -variable=>\$ValueLocal,
  12.         )->pack;


 
à vérifier avec la méthode grid() mais je crois que ce qu'il te manque, c'est l'option -variable=>\$ma_variable
 
Maintenant, passons aux explications : si dans mon exemple, le user veut une création des fichiers sur le disque dur, il coche la case "Export sur disque dur", case nommée $mwBrLocal. Comme elle renvoie implicitement à la variable $ValueLocal, cette dernière vaut 1 si la case est cochée, sinon 0 si case non cochée
 
Lors de ton traitement, il devient alors fastoche de faire ton traitement en fonction des cases cochées, il suffit juste de tester si les variables vers lesquelles elles renvoient sont vraies (1) ou fausses (undef ou 0)


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°217624
Aricoh
gentil mais fo po pousser
Posté le 20-09-2002 à 12:21:13  profilanswer
 

Tiens, ce script t'expliquera sans doute mieux le truc (je viens de le créer et l'ai testé, il marche) :
 

Code :
  1. use strict;
  2. use Tk;
  3. # variables pour cases à cocher :
  4. my $toto;
  5. my $pouet;
  6. # variables de la widget Tk :
  7. my $widget;  # fenêtre
  8. my $zonetexte; # zone de texte
  9. my $caseTOTO; # case pour toto
  10. my $casePOUET; # case pour pouet
  11. my $bouton;  # bouton de l'appli
  12. # mise en place de la widget :
  13. $widget = MainWindow->new();
  14. $zonetexte = $widget->Text(
  15. -width=>100,
  16. -height=>23,
  17. )->pack;
  18. $caseTOTO = $widget->Checkbutton(
  19. -text=>"je coche toto",
  20. -variable=>\$toto,
  21. )->pack;
  22. $casePOUET = $widget->Checkbutton(
  23. -text=>"je coche pouet",
  24. -variable=>\$pouet,
  25. )->pack;
  26. $bouton = $widget->Button(
  27. -text=>"Kissétikécoché ?",
  28. -command=>sub { FonctionTest() },
  29. )->pack;
  30. MainLoop();
  31. sub FonctionTest {
  32. if ($toto) {
  33.  $zonetexte->insert('end', "toto est coché\n" );
  34. }
  35. if ($pouet) {
  36.  $zonetexte->insert('end', "pouet est coché\n" );
  37. }
  38. if (! $toto && ! $pouet) {
  39.  $zonetexte->insert('end', "aucun bouton coché\n" );
  40. }
  41. }


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°217783
circeedeva​lette
Posté le 20-09-2002 à 16:24:10  profilanswer
 

Aricoh a écrit a écrit :

Tiens, ce script t'expliquera sans doute mieux le truc (je viens de le créer et l'ai testé, il marche) :
 

Code :
  1. use strict;
  2. use Tk;
  3. # variables pour cases à cocher :
  4. my $toto;
  5. my $pouet;
  6. # variables de la widget Tk :
  7. my $widget;  # fenêtre
  8. my $zonetexte; # zone de texte
  9. my $caseTOTO; # case pour toto
  10. my $casePOUET; # case pour pouet
  11. my $bouton;  # bouton de l'appli
  12. # mise en place de la widget :
  13. $widget = MainWindow->new();
  14. $zonetexte = $widget->Text(
  15. -width=>100,
  16. -height=>23,
  17. )->pack;
  18. $caseTOTO = $widget->Checkbutton(
  19. -text=>"je coche toto",
  20. -variable=>\$toto,
  21. )->pack;
  22. $casePOUET = $widget->Checkbutton(
  23. -text=>"je coche pouet",
  24. -variable=>\$pouet,
  25. )->pack;
  26. $bouton = $widget->Button(
  27. -text=>"Kissétikécoché ?",
  28. -command=>sub { FonctionTest() },
  29. )->pack;
  30. MainLoop();
  31. sub FonctionTest {
  32. if ($toto) {
  33.  $zonetexte->insert('end', "toto est coché\n" );
  34. }
  35. if ($pouet) {
  36.  $zonetexte->insert('end', "pouet est coché\n" );
  37. }
  38. if (! $toto && ! $pouet) {
  39.  $zonetexte->insert('end', "aucun bouton coché\n" );
  40. }
  41. }






 
 
ok pour les checkbuton mais comment on fait pour obliger l'utilisateur a n'en cocher qu'un seul?
 
en VC++ on peut affecter la valeur 0 a la variable du checkbuton mais en TK il ne veut pas ...

n°218645
Aricoh
gentil mais fo po pousser
Posté le 23-09-2002 à 08:18:53  profilanswer
 

circeedevalette a écrit a écrit :

ok pour les checkbuton mais comment on fait pour obliger l'utilisateur a n'en cocher qu'un seul?en VC++ on peut affecter la valeur 0 a la variable du checkbuton mais en TK il ne veut pas ...



A moins qu'il y ait un code évènement pour décocher un checkbutton si le user en a coché un autre, je ne crois pas que ça marche sur l'appli graphique et ses widgets
 
à toi de rajouter une vérif dans ton code : est-ce que + d'1 bouton coché ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°219416
circeedeva​lette
Posté le 24-09-2002 à 14:26:05  profilanswer
 

salut  
j'avance bien dans le developpement de mon interface graphique
 
mais il me reste un petit probleme avec une Dialog box.
en effet, je declare ma Dialog box:

Citation :

 $DIALOG_ERREUR = $MW->Dialog(-title => 'Type_',
                              -text    => "il faut selectionner les type avant\n\td essayer d'appuyer sur le bouton",
                              -buttons => ['Ok'],);

 
 
si je l'appele directement  
 

Citation :

 $bouton_groupe -> command(-label => 'TOTO',
                            -command => [$DIALOG_ERREUR => 'Show'],

 
j'ai bien le message d'erreur qui s'affiche
 
mais si je fais :
 

Citation :

 $bouton_groupe -> command(-label => 'TOTO',
                            -command => sub{($Type1==0 && $type2==0 && $type3==0) ? [$DIALOG_ERREUR => 'Show'] : Generation_groupe('D';)},

 
je n'ai pas de message d'erreur
 
je pense que ca vient du fait que je sois dans une sous fonction (sub) mais je ne sais pas comment faire du coup

mood
Publicité
Posté le 24-09-2002 à 14:26:05  profilanswer
 

n°219417
Aricoh
gentil mais fo po pousser
Posté le 24-09-2002 à 14:31:30  profilanswer
 

en faisant une recherche hier soir sur google, je suis tombé sur cette url :
 
http://www.le-berre.com/perl/perlxtd.htm
 
dedans, on explique qu'avec le module win32, tu peux faire des messagebox (boites de dialogue) comme sous Visual Basic, exemple de code :
 

Code :
  1. use Win32;
  2. Win32::MsgBox("A first step for Perl in the Windows GUI world !" );
  3. Win32::MsgBox('Bug detected',48,'Alert ! Alert');
  4. $result = Win32::MsgBox('Meet me at the coffee machine ?', 16+4, 'Tired ?');
  5. (($result == 6) ? print "I am on my way !\n" : print "bye !\n" );


 
sur ma distrib Perl (5.6.1), le module win32 est installé d'office
 
j'ai essayé ce source et ... ça marche plutôt super bien  :)
 
c'est en tout cas moins lourdingue que de faire l'équivalent en Perl/Tk
 
va faire un tour sur l'url ci-dessus, t'as vraiment de bons tuyaux pour faire des msgbox et autres


Message édité par Aricoh le 24-09-2002 à 14:32:31

---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°219439
circeedeva​lette
Posté le 24-09-2002 à 15:01:43  profilanswer
 

Aricoh a écrit a écrit :

en faisant une recherche hier soir sur google, je suis tombé sur cette url :
 
http://www.le-berre.com/perl/perlxtd.htm
 
dedans, on explique qu'avec le module win32, tu peux faire des messagebox (boites de dialogue) comme sous Visual Basic, exemple de code :
 

Code :
  1. use Win32;
  2. Win32::MsgBox("A first step for Perl in the Windows GUI world !" );
  3. Win32::MsgBox('Bug detected',48,'Alert ! Alert');
  4. $result = Win32::MsgBox('Meet me at the coffee machine ?', 16+4, 'Tired ?');
  5. (($result == 6) ? print "I am on my way !\n" : print "bye !\n" );


 
sur ma distrib Perl (5.6.1), le module win32 est installé d'office
 
j'ai essayé ce source et ... ça marche plutôt super bien  :)
 
c'est en tout cas moins lourdingue que de faire l'équivalent en Perl/Tk
 
va faire un tour sur l'url ci-dessus, t'as vraiment de bons tuyaux pour faire des msgbox et autres




 
merci beaucoup,
c'est exactement ce que j'essayais de faire en tk et c'est drolement plus simple

n°219440
Aricoh
gentil mais fo po pousser
Posté le 24-09-2002 à 15:02:36  profilanswer
 

circeedevalette a écrit a écrit :

 
c'est exactement ce que j'essayais de faire en tk et c'est drolement plus simple  



c'est exactement ce que je me suis dit  :D


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°219441
lorill
Posté le 24-09-2002 à 15:05:16  profilanswer
 

C'est surtout nettement moins portable.

n°219443
Aricoh
gentil mais fo po pousser
Posté le 24-09-2002 à 15:07:35  profilanswer
 

lorill a écrit a écrit :

C'est surtout nettement moins portable.



effectivement mais si le prog est censé bosser que sur architecture win32 ... ben la portabilité, on s'en fiche un ch'tit peu  :D


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
n°219456
lorill
Posté le 24-09-2002 à 15:16:08  profilanswer
 

Si tu fais tout en win32, pourquoi pas, mais si tu fais tout en tk et que tu utilises win32 juste pour les messagebox, ben c'est dommage de sacrifier la portabilité pour eviter d'ecrire 2 fonctions... C'est pas parce que tu ne vises que win aujourd'hui que ca restera vrai ad vitam aeternam...

n°219463
Aricoh
gentil mais fo po pousser
Posté le 24-09-2002 à 15:20:45  profilanswer
 

lorill a écrit a écrit :

Si tu fais tout en win32, pourquoi pas, mais si tu fais tout en tk et que tu utilises win32 juste pour les messagebox, ben c'est dommage de sacrifier la portabilité pour eviter d'ecrire 2 fonctions... C'est pas parce que tu ne vises que win aujourd'hui que ca restera vrai ad vitam aeternam...



d'accord avec toi, no problemo là-dessus, mais l'inverse est vrai : ce n'est pas parce que Perl est un langage portable à souhait qu'on doit automatiquement et obligatoirement pondre du code portable également
 
maintenant, si circeedevalette veut nous montrer ce que fait sa fonction exactement, on pourra pitet' trouver ce qui coince ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  perl/TK alignement de boutons

 

Sujets relatifs
Boutons Delphi[perl] installer des modules
[Perl] Appeler une page web et recupérer le source[HTML] ALIGNEMENT du FOND dans une CELLULE de tablo...
troll perl vs php[perl] modifier une chaine de caractère
Perl / TK[TCL/TK] Comment faire des boutons grisé ?
Problème d'activation de boutons dans VB6.0perl et xml::parser
Plus de sujets relatifs à : perl/TK alignement de boutons


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR