Bonjour à tous,
J'ai créé une fenêtre à partir de l'API Tkinter et je souhaiterais masquer
les boutons Minimiser Maximiser et Fermer situés au haut à droite. Le code
que j'utilise pour créer ma fenêtre est le suivant :
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
Cordialement, Pierre
Mickael
Merci pour ta réponse Pierre. Je viens d'essayer cette instruction mais c'est assez violent ! La barre de titre disparait mais la bordure de la fenêtre également. De plus, je ne suis plus en mesure de déplacer ma fenêtre. Je débute en python et la classe Canvas m'est peu familière. Permet-elle de redonner ces fonctionnalités à mon application ?
Mickael.
"Pierre Quentel" a écrit dans le message de news:
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
Cordialement, Pierre
Merci pour ta réponse Pierre.
Je viens d'essayer cette instruction mais c'est assez violent ! La barre de
titre disparait mais la bordure de la fenêtre également. De plus, je ne suis
plus en mesure de déplacer ma fenêtre.
Je débute en python et la classe Canvas m'est peu familière. Permet-elle de
redonner ces fonctionnalités à mon application ?
Mickael.
"Pierre Quentel" <quentel.pierre@wanadoo.fr> a écrit dans le message de
news: 1158854447.596537.38630@h48g2000cwc.googlegroups.com...
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever
toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre
perso avec un Canvas
Merci pour ta réponse Pierre. Je viens d'essayer cette instruction mais c'est assez violent ! La barre de titre disparait mais la bordure de la fenêtre également. De plus, je ne suis plus en mesure de déplacer ma fenêtre. Je débute en python et la classe Canvas m'est peu familière. Permet-elle de redonner ces fonctionnalités à mon application ?
Mickael.
"Pierre Quentel" a écrit dans le message de news:
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
et l'adapter en fonction de tes besoins. Pour comprendre les méthodes utilisées (le glisser-déposer notamment), tu peux te référer à l'excellent "An introduction to Tkinter" disponible en ligne ou en téléchargement PDF
et l'adapter en fonction de tes besoins. Pour comprendre les méthodes
utilisées (le glisser-déposer notamment), tu peux te référer à
l'excellent "An introduction to Tkinter" disponible en ligne ou en
téléchargement PDF
et l'adapter en fonction de tes besoins. Pour comprendre les méthodes utilisées (le glisser-déposer notamment), tu peux te référer à l'excellent "An introduction to Tkinter" disponible en ligne ou en téléchargement PDF
Cordialement, Pierre
Eric Brunel
On Fri, 22 Sep 2006 14:14:56 +0200, Mickael wrote:
(merci de répondre en dessous du message d'origine, sinon c'est difficile à lire - corrigé)
"Pierre Quentel" a écrit dans le message de news:
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
Merci pour ta réponse Pierre. Je viens d'essayer cette instruction mais c'est assez violent ! La barre de titre disparait mais la bordure de la fenêtre également. De plus, je ne suis plus en mesure de déplacer ma fenêtre.
C'est à ça que sert overrideredirect: la fenêtre n'est plus gérée par le window manager (où ce qui en tient lieu).
Je débute en python et la classe Canvas m'est peu familière. Permet-elle de redonner ces fonctionnalités à mon application ?
Non. C'est un conteneur "de base", sans fonctionnalité particulière.
Quant à ta question d'origine, il serait utile de savoir ce que tu veux faire exactement. Il est assez inhabituel de vouloir une fenêtre sans bouton, mais qu'on peut quand même déplacer.
Il existe toutefois un moyen de désactiver le bouton de maximisation en faisant: wdw.wm_resizable(0, 0) Mais (sous Windows) ça le désactive seulement; ça ne l'enlève pas. Et les boutons de minimisation et de fermeture sont toujours présents et actifs. Pour rendre le bouton de fermeture inopérant, on peut aussi faire un: wdw.protocol('WM_DELETE_WINDOW', lambda: None) mais ça le laisse affiché et apparemment actif (même si cliquer dessus ne fait plus rien).
Mais la question de fond reste: pourquoi veux-tu faire ça?
HTH quand même... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
On Fri, 22 Sep 2006 14:14:56 +0200, Mickael <rouyerm@hotmail.com> wrote:
(merci de répondre en dessous du message d'origine, sinon c'est difficile
à lire - corrigé)
"Pierre Quentel" <quentel.pierre@wanadoo.fr> a écrit dans le message de
news: 1158854447.596537.38630@h48g2000cwc.googlegroups.com...
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever
toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre
perso avec un Canvas
Merci pour ta réponse Pierre.
Je viens d'essayer cette instruction mais c'est assez violent ! La barre
de
titre disparait mais la bordure de la fenêtre également. De plus, je ne
suis
plus en mesure de déplacer ma fenêtre.
C'est à ça que sert overrideredirect: la fenêtre n'est plus gérée par le
window manager (où ce qui en tient lieu).
Je débute en python et la classe Canvas m'est peu familière. Permet-elle
de
redonner ces fonctionnalités à mon application ?
Non. C'est un conteneur "de base", sans fonctionnalité particulière.
Quant à ta question d'origine, il serait utile de savoir ce que tu veux
faire exactement. Il est assez inhabituel de vouloir une fenêtre sans
bouton, mais qu'on peut quand même déplacer.
Il existe toutefois un moyen de désactiver le bouton de maximisation en
faisant:
wdw.wm_resizable(0, 0)
Mais (sous Windows) ça le désactive seulement; ça ne l'enlève pas. Et les
boutons de minimisation et de fermeture sont toujours présents et actifs.
Pour rendre le bouton de fermeture inopérant, on peut aussi faire un:
wdw.protocol('WM_DELETE_WINDOW', lambda: None)
mais ça le laisse affiché et apparemment actif (même si cliquer dessus ne
fait plus rien).
Mais la question de fond reste: pourquoi veux-tu faire ça?
HTH quand même...
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
On Fri, 22 Sep 2006 14:14:56 +0200, Mickael wrote:
(merci de répondre en dessous du message d'origine, sinon c'est difficile à lire - corrigé)
"Pierre Quentel" a écrit dans le message de news:
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
Merci pour ta réponse Pierre. Je viens d'essayer cette instruction mais c'est assez violent ! La barre de titre disparait mais la bordure de la fenêtre également. De plus, je ne suis plus en mesure de déplacer ma fenêtre.
C'est à ça que sert overrideredirect: la fenêtre n'est plus gérée par le window manager (où ce qui en tient lieu).
Je débute en python et la classe Canvas m'est peu familière. Permet-elle de redonner ces fonctionnalités à mon application ?
Non. C'est un conteneur "de base", sans fonctionnalité particulière.
Quant à ta question d'origine, il serait utile de savoir ce que tu veux faire exactement. Il est assez inhabituel de vouloir une fenêtre sans bouton, mais qu'on peut quand même déplacer.
Il existe toutefois un moyen de désactiver le bouton de maximisation en faisant: wdw.wm_resizable(0, 0) Mais (sous Windows) ça le désactive seulement; ça ne l'enlève pas. Et les boutons de minimisation et de fermeture sont toujours présents et actifs. Pour rendre le bouton de fermeture inopérant, on peut aussi faire un: wdw.protocol('WM_DELETE_WINDOW', lambda: None) mais ça le laisse affiché et apparemment actif (même si cliquer dessus ne fait plus rien).
Mais la question de fond reste: pourquoi veux-tu faire ça?
HTH quand même... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Mickael
En fait, je dois absolument maitriser la fermeture de cette boite de dialogue. J'ai créé un bouton "VALIDER" qui me permet de vérifier et d'enregistrer des données dans un fichier. La présence du bouton "Fermer" permet à l'utilisateur de quitter la boite de dialogue en contournant l'étape de création du fichier, et cela je souhaite l'éviter. En ce qui concerne les boutons "minimiser" et "maximiser", ils ne me servent pas donc je voulais les faire sauter par la même occasion. En voyant une tkMessageBox, j'ai cru que c'était faisable facilement...
En tout cas, les solutions que vous me proposez me conviennent parfaitement. Soit je rend le bouton de fermeture inopérant. Soit je passe par un canvas en m'inspirant du code fourni par Pierre.
Merci à tous les deux.
Mickael.
"Eric Brunel" a écrit dans le message de news:
On Fri, 22 Sep 2006 14:14:56 +0200, Mickael wrote:
(merci de répondre en dessous du message d'origine, sinon c'est difficile à lire - corrigé)
"Pierre Quentel" a écrit dans le message de news:
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
Merci pour ta réponse Pierre. Je viens d'essayer cette instruction mais c'est assez violent ! La barre de titre disparait mais la bordure de la fenêtre également. De plus, je ne suis plus en mesure de déplacer ma fenêtre.
C'est à ça que sert overrideredirect: la fenêtre n'est plus gérée par le window manager (où ce qui en tient lieu).
Je débute en python et la classe Canvas m'est peu familière. Permet-elle de redonner ces fonctionnalités à mon application ?
Non. C'est un conteneur "de base", sans fonctionnalité particulière.
Quant à ta question d'origine, il serait utile de savoir ce que tu veux faire exactement. Il est assez inhabituel de vouloir une fenêtre sans bouton, mais qu'on peut quand même déplacer.
Il existe toutefois un moyen de désactiver le bouton de maximisation en faisant: wdw.wm_resizable(0, 0) Mais (sous Windows) ça le désactive seulement; ça ne l'enlève pas. Et les boutons de minimisation et de fermeture sont toujours présents et actifs. Pour rendre le bouton de fermeture inopérant, on peut aussi faire un: wdw.protocol('WM_DELETE_WINDOW', lambda: None) mais ça le laisse affiché et apparemment actif (même si cliquer dessus ne fait plus rien).
Mais la question de fond reste: pourquoi veux-tu faire ça?
HTH quand même... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
En fait, je dois absolument maitriser la fermeture de cette boite de
dialogue. J'ai créé un bouton "VALIDER" qui me permet de vérifier et
d'enregistrer des données dans un fichier. La présence du bouton "Fermer"
permet à l'utilisateur de quitter la boite de dialogue en contournant
l'étape de création du fichier, et cela je souhaite l'éviter.
En ce qui concerne les boutons "minimiser" et "maximiser", ils ne me servent
pas donc je voulais les faire sauter par la même occasion. En voyant une
tkMessageBox, j'ai cru que c'était faisable facilement...
En tout cas, les solutions que vous me proposez me conviennent parfaitement.
Soit je rend le bouton de fermeture inopérant.
Soit je passe par un canvas en m'inspirant du code fourni par Pierre.
Merci à tous les deux.
Mickael.
"Eric Brunel" <eric_brunel@despammed.com> a écrit dans le message de news:
op.tf986lxhrqur0o@eb.pragmadev...
On Fri, 22 Sep 2006 14:14:56 +0200, Mickael <rouyerm@hotmail.com> wrote:
(merci de répondre en dessous du message d'origine, sinon c'est difficile
à lire - corrigé)
"Pierre Quentel" <quentel.pierre@wanadoo.fr> a écrit dans le message de
news: 1158854447.596537.38630@h48g2000cwc.googlegroups.com...
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever
toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre
perso avec un Canvas
Merci pour ta réponse Pierre.
Je viens d'essayer cette instruction mais c'est assez violent ! La barre
de
titre disparait mais la bordure de la fenêtre également. De plus, je ne
suis
plus en mesure de déplacer ma fenêtre.
C'est à ça que sert overrideredirect: la fenêtre n'est plus gérée par le
window manager (où ce qui en tient lieu).
Je débute en python et la classe Canvas m'est peu familière. Permet-elle
de
redonner ces fonctionnalités à mon application ?
Non. C'est un conteneur "de base", sans fonctionnalité particulière.
Quant à ta question d'origine, il serait utile de savoir ce que tu veux
faire exactement. Il est assez inhabituel de vouloir une fenêtre sans
bouton, mais qu'on peut quand même déplacer.
Il existe toutefois un moyen de désactiver le bouton de maximisation en
faisant:
wdw.wm_resizable(0, 0)
Mais (sous Windows) ça le désactive seulement; ça ne l'enlève pas. Et les
boutons de minimisation et de fermeture sont toujours présents et actifs.
Pour rendre le bouton de fermeture inopérant, on peut aussi faire un:
wdw.protocol('WM_DELETE_WINDOW', lambda: None)
mais ça le laisse affiché et apparemment actif (même si cliquer dessus ne
fait plus rien).
Mais la question de fond reste: pourquoi veux-tu faire ça?
HTH quand même...
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
En fait, je dois absolument maitriser la fermeture de cette boite de dialogue. J'ai créé un bouton "VALIDER" qui me permet de vérifier et d'enregistrer des données dans un fichier. La présence du bouton "Fermer" permet à l'utilisateur de quitter la boite de dialogue en contournant l'étape de création du fichier, et cela je souhaite l'éviter. En ce qui concerne les boutons "minimiser" et "maximiser", ils ne me servent pas donc je voulais les faire sauter par la même occasion. En voyant une tkMessageBox, j'ai cru que c'était faisable facilement...
En tout cas, les solutions que vous me proposez me conviennent parfaitement. Soit je rend le bouton de fermeture inopérant. Soit je passe par un canvas en m'inspirant du code fourni par Pierre.
Merci à tous les deux.
Mickael.
"Eric Brunel" a écrit dans le message de news:
On Fri, 22 Sep 2006 14:14:56 +0200, Mickael wrote:
(merci de répondre en dessous du message d'origine, sinon c'est difficile à lire - corrigé)
"Pierre Quentel" a écrit dans le message de news:
Bonjour,
Tu ne peux pas enlever seulement ces boutons, mais tu peux enlever toute la barre du haut en ajoutant
root.overrideredirect(1)
avant le mainloop(). Ensuite tu peux te refaire une barre de titre perso avec un Canvas
Merci pour ta réponse Pierre. Je viens d'essayer cette instruction mais c'est assez violent ! La barre de titre disparait mais la bordure de la fenêtre également. De plus, je ne suis plus en mesure de déplacer ma fenêtre.
C'est à ça que sert overrideredirect: la fenêtre n'est plus gérée par le window manager (où ce qui en tient lieu).
Je débute en python et la classe Canvas m'est peu familière. Permet-elle de redonner ces fonctionnalités à mon application ?
Non. C'est un conteneur "de base", sans fonctionnalité particulière.
Quant à ta question d'origine, il serait utile de savoir ce que tu veux faire exactement. Il est assez inhabituel de vouloir une fenêtre sans bouton, mais qu'on peut quand même déplacer.
Il existe toutefois un moyen de désactiver le bouton de maximisation en faisant: wdw.wm_resizable(0, 0) Mais (sous Windows) ça le désactive seulement; ça ne l'enlève pas. Et les boutons de minimisation et de fermeture sont toujours présents et actifs. Pour rendre le bouton de fermeture inopérant, on peut aussi faire un: wdw.protocol('WM_DELETE_WINDOW', lambda: None) mais ça le laisse affiché et apparemment actif (même si cliquer dessus ne fait plus rien).
Mais la question de fond reste: pourquoi veux-tu faire ça?
HTH quand même... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Méta-MCI
Bonjour !
Si tu es sous windows, et si tu ne trouves pas d'autre solution, j'ai un petit exécutable, qui désactive le bouton "close", et le menu_système "close".
Mais ceci n'empêche pas les utilisateurs de faire Alt-F4 (il faut intercepter ça dans le programme).
C'est une solution un peu "bricolage", car il faut appeler l'exécutable externe ; mais, en cas d'urgence...
@-salutations
Michel Claveau
Bonjour !
Si tu es sous windows, et si tu ne trouves pas d'autre solution, j'ai un
petit exécutable, qui désactive le bouton "close", et le menu_système
"close".
Mais ceci n'empêche pas les utilisateurs de faire Alt-F4 (il faut
intercepter ça dans le programme).
C'est une solution un peu "bricolage", car il faut appeler l'exécutable
externe ; mais, en cas d'urgence...
Si tu es sous windows, et si tu ne trouves pas d'autre solution, j'ai un petit exécutable, qui désactive le bouton "close", et le menu_système "close".
Mais ceci n'empêche pas les utilisateurs de faire Alt-F4 (il faut intercepter ça dans le programme).
C'est une solution un peu "bricolage", car il faut appeler l'exécutable externe ; mais, en cas d'urgence...