Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Perl/TK, tableau et largeur des colonnes

7 réponses
Avatar
genomart
Bonjour,

Je sais pas si =E7a existe, mais je n'ai jamais trouv=E9 de modules Perl
Tk permettant de cr=E9er facilement un tableau (comme un classeur) avec
une particularit=E9.
En fait, je constate qu'en Perl Tk, on ne peut pas modifier la largeur
d'une colonne ou la hauteur d'une cellule avec la souris, comme sous
excel par exemple.
Sous dotnet, il est assez facile de concevoir un classeur dont les
dimensions peuvent changer avec un gliss=E9 souris.
D'ailleurs, c'est idem avec les Frames. Une fois cr=E9e, il est
impossible de modifier leurs largeur et hauteur.

Savez vous s'il existe d=E9j=E0 des modules d=E9di=E9s. Est ce simple de
mettre cela en place =E0 coup de bind ou je ne sais quoi.

Merci

7 réponses

Avatar
Paul Gaborit
À (at) Thu, 5 Mar 2009 03:31:15 -0800 (PST),
écrivait (wrote):
Je sais pas si ça existe, mais je n'ai jamais trouvé de modules Perl
Tk permettant de créer facilement un tableau (comme un classeur) avec
une particularité.
En fait, je constate qu'en Perl Tk, on ne peut pas modifier la largeur
d'une colonne ou la hauteur d'une cellule avec la souris, comme sous
excel par exemple.
Sous dotnet, il est assez facile de concevoir un classeur dont les
dimensions peuvent changer avec un glissé souris.



Pour les tables, je n'ai jamais testé. C'est sûrement faisable mais il
n'y peut-être pas de code tout prêt. Ça risque d'être un gros boulot
pour le faire proprement.

Par contre, ça existe pour les listes ou les arbres avec déplacement
des colonnes et gestion de leur largeur : si mes souvenirs sont bons,
c'est dans Tk:TList et Tk::HList.

D'ailleurs, c'est idem avec les Frames. Une fois crée, il est
impossible de modifier leurs largeur et hauteur.



Ça, ce n'est pas vrai du tout. Dans Perl/Tk (et dans Tk en géneral),
il y a plusieurs algorithmes de gestion géométrique qui permettent de
repondre à 90% des besoins (voir par exemple Tk::pack ou Tk::place et
plus généralement toutes les documentations référencées sour le titre
"Tk Geometry Management" dans la doc de Tk) et pour les besoins plus
pointus, il y a tous les callbacks nécessaires pour faire ce qu'on
veut.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
genomart
> Pour les tables, je n'ai jamais testé. C'est sûrement faisable mais i l
n'y peut-être pas de code tout prêt. Ça risque d'être un gros bou lot
pour le faire proprement.

Par contre, ça existe pour les listes ou les arbres avec déplacement
des colonnes et gestion de leur largeur : si mes souvenirs sont bons,
c'est dans Tk:TList et Tk::HList.


J'vais déjà testé ces modules pour faire un affichage tablé, mais u ne
fois le tout représenté, je ne vois pas comment on peut faire pour
faire agrandir les colonnes en glissant la bordure d'une colonne par
exemple.

> D'ailleurs, c'est idem avec les Frames. Une fois crée, il est
> impossible de modifier leurs largeur et hauteur.

Ça, ce n'est pas vrai du tout. Dans Perl/Tk (et dans Tk en géneral),
il y a plusieurs algorithmes de gestion géométrique qui permettent de
repondre à 90% des besoins (voir par exemple Tk::pack ou Tk::place et
plus généralement toutes les documentations référencées sour le titre
"Tk Geometry Management" dans la doc de Tk) et pour les besoins plus
pointus, il y a tous les callbacks nécessaires pour faire ce qu'on
veut.


Je sais que Tk::form Tk::grid Tk::place et Tk::Pack permettent un très
bon placement des éléments dans un widget, une fenêtre, mais une fois
que tout est placé, je n'ai pas vu de méthodes permettant d'augmenter
par exemple la largeur d'un frame via la souris. On est obligé
d'utiliser la méthode configure, ou bien d'augmenter la fentre (si on
a mis l'option -fill x -expand 1 dans le frame).
A moins que vous ayez un exemple à me proposer.

Merci
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>


Avatar
Paul Gaborit
À (at) Thu, 5 Mar 2009 06:01:49 -0800 (PST),
écrivait (wrote):
Pour les tables, je n'ai jamais testé. C'est sûrement faisable mais il
n'y peut-être pas de code tout prêt. Ça risque d'être un gros boulot
pour le faire proprement.

Par contre, ça existe pour les listes ou les arbres avec déplacement
des colonnes et gestion de leur largeur : si mes souvenirs sont bons,
c'est dans Tk:TList et Tk::HList.


J'vais déjà testé ces modules pour faire un affichage tablé, mais une
fois le tout représenté, je ne vois pas comment on peut faire pour
faire agrandir les colonnes en glissant la bordure d'une colonne par
exemple.



J'ai souvenir de l'avoir fait. Mais je ne sais plus si c'était intégré
ou si je l'avais programmé... Je vais rechercher dans mes exemples de
codes pour voir si je retrouve quelque chose à ce sujet mais, comme un
jour de grand ménage, j'en ai effacé une bonne partie, je ne vous
garantis rien.

Je sais que Tk::form Tk::grid Tk::place et Tk::Pack permettent un très
bon placement des éléments dans un widget, une fenêtre, mais une fois
que tout est placé, je n'ai pas vu de méthodes permettant d'augmenter
par exemple la largeur d'un frame via la souris. On est obligé
d'utiliser la méthode configure, ou bien d'augmenter la fentre (si on
a mis l'option -fill x -expand 1 dans le frame).
A moins que vous ayez un exemple à me proposer.



Je ne comprends pas comment vous voulez modifier la taille d'un frame
'à la souris'... À moins que Tk::Adjuster soit la solution.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
genomart
On 5 mar, 15:18, Paul Gaborit wrote:
À (at) Thu, 5 Mar 2009 06:01:49 -0800 (PST),
écrivait (wrote):

>> Pour les tables, je n'ai jamais testé. C'est sûrement faisable mai s il
>> n'y peut-être pas de code tout prêt. Ça risque d'être un gros boulot
>> pour le faire proprement.

>> Par contre, ça existe pour les listes ou les arbres avec déplaceme nt
>> des colonnes et gestion de leur largeur : si mes souvenirs sont bons,
>> c'est dans Tk:TList et Tk::HList.
> J'vais déjà testé ces modules pour faire un affichage tablé, ma is une
> fois le tout représenté, je ne vois pas comment on peut faire pour
> faire agrandir les colonnes en glissant la bordure d'une colonne par
> exemple.

J'ai souvenir de l'avoir fait. Mais je ne sais plus si c'était intégr é
ou si je l'avais programmé... Je vais rechercher dans mes exemples de
codes pour voir si je retrouve quelque chose à ce sujet mais, comme un
jour de grand ménage, j'en ai effacé une bonne partie, je ne vous
garantis rien.

> Je sais que Tk::form Tk::grid Tk::place et Tk::Pack permettent un trè s
> bon placement des éléments dans un widget, une fenêtre, mais une fois
> que tout est placé, je n'ai pas vu de méthodes permettant d'augment er
> par exemple la largeur d'un frame via la souris. On est obligé
> d'utiliser la méthode configure, ou bien d'augmenter la fentre (si on
> a mis l'option -fill x -expand 1 dans le frame).
> A moins que vous ayez un exemple à me proposer.

Je ne comprends pas comment vous voulez modifier la taille d'un frame
'à la souris'... À moins que Tk::Adjuster soit la solution.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>



C'est exactement ce que je cherchais, bien vu pour le module
Tk::Adjuster que je ne connaissais pas.
En testant l'exemple de la doc
use Tk;
use Tk::Adjuster;

my $f = MainWindow->new;
my $lst1 = $f->Listbox();
my $adj1 = $f->Adjuster();
my $lst2 = $f->Listbox();

my $side = 'left';
$lst1->pack(-side => $side, -fill => 'both', -expand => 1);
$adj1->packAfter($lst1, -side => $side);
$lst2->pack(-side => $side, -fill => 'both', -expand => 1);
MainLoop;

On remarque qu'on peux "ajuster" avec la souris la taille de la liste.
C'est ce principe que je cherchais pour l'appliquer à un frame ou
canvas, etc.
Vos futurs exemples sont les bienvenus.

Merci
Avatar
genomart
Il ne reste plus qu'à voir s'il y a un moyen d'appliquer ce principe
sur une table, un tableur.
Mais bon, faut déjà tester tous ces modules : Tk::Columns,
Tk::MListbox, Tk::Table, Tk::GridColumns, TableMatrix. Et sinon peut
être envisager de créer un module Tk pour la communauté :-)
Avatar
Paul Gaborit
À (at) Thu, 5 Mar 2009 06:42:24 -0800 (PST),
écrivait (wrote):
Vos futurs exemples sont les bienvenus.



Concernant les largeurs de colonnes, je n'a malheureusement rien
retrouvé. Il y a peut-être un faible espoir que j'ai gardé cela chez
moi mais je ne le saurais que ce soir...

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
Avatar
genomart
On 5 mar, 16:42, Paul Gaborit wrote:
À (at) Thu, 5 Mar 2009 06:42:24 -0800 (PST),
écrivait (wrote):

> Vos futurs exemples sont les bienvenus.

Concernant les largeurs de colonnes, je n'a malheureusement rien
retrouvé. Il y a peut-être un faible espoir que j'ai gardé cela che z
moi mais je ne le saurais que ce soir...

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>



Ce n'est pas urgent. Merci pour vos réponses qui sont déjà rapides et
efficaces.