IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

"entry widget": saisie caractère "e" accent circonflex ou "i" tréma. Code joint.


Sujet :

Tkinter Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut "entry widget": saisie caractère "e" accent circonflex ou "i" tréma. Code joint.
    Bonjour,
    Dans mes essais de programmation python je me heurte au problème suivant:
    l'utilisateur de mon programme doit taper des mots dans une zone d'entrée ( entry widget).
    Il ne peut pas taper normalement des mots comme "même" ou "haï".
    Le "e" et son accent circonflex ou le "i" et son tréma apparaissent comme 2 caractères cote à cote.
    Je n'ai pas ce problème avec "é" ou"è" ou "à".
    Je suis sous Ubuntu 10.04.
    J'utilise open office , thunderbird et firefox et je n'ai pas du tout ce type de problème avec ces programmes.
    Pour bien caractériser mon problème je joins un exemple de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from Tkinter import *
     
    class Application(Frame):  
     
        def createWidgets(self):
            self.QUIT = Button(self)
            self.QUIT["text"] = "QUIT"
            self.QUIT["fg"]   = "red"
            self.QUIT["command"] =  self.quit
            self.QUIT.pack({"side": "left"})
     
            self.hi_there = Label(self, width=25)
            self.hi_there["text"] = "Test accent circonflex",
            self.hi_there.pack({"side": "left"})
     
            self.type_accent = Entry(self)
            self.type_accent.focus_force()
            self.type_accent.bind('<Return>', self.enter)
            self.type_accent.pack({"side": "left"})
     
        def enter (self, event):        
     
            print self.type_accent.get()
     
        def __init__(self, master=None):
            Frame.__init__(self, master)
            self.pack()
            self.createWidgets()
     
    root = Tk()
    app = Application(master=root)
    app.mainloop()
    root.destroy()
    Je n'ai pas posté dans tkinter car j'ai l'impression que ce n'est pas lié.
    J'utilise idle ou ellipse pour écrire mon code source et j'ai le même problème au niveau de ce code source. Mais il ne me gène pas.

    Merci pour votre aide

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Pas de problème en 10.10 avec le code donné...
    Le problème est il le même dans un Widget text ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Par défaut
    Ça fonctionne aussi sous Ubuntu 11.04 (Python 2.7).
    Peut-être qu'en mettant ça au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import sys
    reload(sys)  # force l'interpréteur Python à fonctionner avec l'encodage utf-8
    if hasattr(sys,"setdefaultencoding"):
        sys.setdefaultencoding("utf-8")
    Je sais pas trop ce que ça fait mais il y a ça dans la calculext de Tyrtamos, et j'y ai pensé en voyant ton problème. C'est pile ou face

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Je réponds à pausekawa: c'est la même chose avec le widget text.
    Voir l'image:

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Je réponds à spitfire95: pas d'amélioration avec le code supplémentaire.

    A propos dans la fenètre éditeur de idle python 2.6 j'ai le même problème.
    Impossible de rentrer, ne serait ce qu'en commentaire , un e accent circonflex ou un i tréma, j'obtiens:
    " ^e^e^ ¨i¨i¨ ééé à ç"
    Cela simplifie- t -il le problème?

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Que donne echo $LANG et echo $GDM_LANG (voir echo $LC_CTYPE) dans un terminal ?
    Quel est l'encodage dans IDLE (options > configure > general > default source encoding) ? Si tu le force en UTF-8 cela donne quoi ?
    Quel est le comportement dans un terminal ?

    @+

    (edit: A lire aussi)

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Autre chose: IDLE c'est du tk, cela pourrais venir de tcl.tk...
    Prend du code tcl.tk et regarde si cela fais pareil.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Bonjour pausekawa,
    je réponds à tes questions:

    robert@robert-desktop:~$ echo $LANG
    fr_FR.utf8
    robert@robert-desktop:~$ ^C
    robert@robert-desktop:~$ echo $GDM_LANG
    fr_FR.utf8
    robert@robert-desktop:~$ echo $LC_CTYPE
    (rien !)
    robert@robert-desktop:~$

    Dans idle 2.6 "default source encoding" : UTF-8

    Pour ce qui est de tcl.tk je ne sais pas trop ce que c'est.
    Apparemment c'est une alternative à Tkinter. je ne crois pas que je vais investir la dedans.
    Faute de mieux j'utiliserai une fonction pour reconstruire mes "ê" !!.

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par carnussien Voir le message
    Pour ce qui est de tcl.tk je ne sais pas trop ce que c'est.
    Apparemment c'est une alternative à Tkinter. je ne crois pas que je vais investir la dedans.
    Faute de mieux j'utiliserai une fonction pour reconstruire mes "ê" !!.
    C'était pourtant ma meilleure question...
    Tkinter en est un wrapper.
    Dans ce sens j'avais penser à la réinstallation du deb, voir une question sur le forum de la distrib.

    Bonne découverte.

  10. #10
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par carnussien Voir le message
    Pour ce qui est de tcl.tk je ne sais pas trop ce que c'est.
    Apparemment c'est une alternative à Tkinter. je ne crois pas que je vais investir la dedans.
    Si tu souhaite tester voici un début de code avec une entry
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package require Tk
     
    wm title . "Test tk"
    pack [entry .e -bg yellow -font {Courier -16} -width 30]
    focus .e
    pack [button .b -text "Quitter" -command exit]
    Tu l'enregistre en cequetuvx.tk et le lance avec wish cequetuvx.tk

    @+

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Bonjour pausekawa,

    Résultat négatif:


    (je n'ai riencompris à ce que j'ai fait mais tcl à l'air très "compact"!)
    Je cherche actuellement sur la notion de "deadkey" et "diacritic key".
    Peut être vais je ré installer python 2.6 Tkinter et Idle.

    A titre de by pass il y a peut être aussi comme sous windows la possibilité de frapper un caractère absent du clavier avec "alt" + séquence de chiffre
    Merci pour ton aide

  12. #12
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Je n'ai pas l'image. Négatif ? C'est à dire ?

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Bonjour pausekawa,

    Cad que j'obtiens:
    ^e et ¨i
    Limage est là:

    http://img10.hostingpics.net/pics/79...tureTesttk.png

    Mais chez moi elle s'affiche automatiquemet.

  14. #14
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Comme on peut mettre en cause la gestion du clavier, on pourrait afficher un texte unicode qui ne passe pas par le clavier. Le texte est censé être "yéyé ümlaut straße 45.61€". S'il s'affiche correctement, Tkinter n'est probablement pas en cause.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import Tkinter
    root = Tkinter.Tk()
    pattern = u""
    for value in [121, 233, 121, 233, 32, 252, 109, 108, 97, 117, 116, 32, 115, 116, 114, 97, 223, 101, 32, 52, 53, 46, 54, 49, 8364]:
        pattern += unichr(value)
    root.title(pattern)
    Tkinter.Label(root, text=pattern, width=40).grid()
    root.mainloop()

  15. #15
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par pfeuh Voir le message
    Tkinter n'est probablement pas en cause.
    C'est même sur puisque le souci se présente aussi avec tcl.tk.
    Je pense qu'une réinstallation du deb tk, voir du tcl si cela ne fonctionne pas, devrais arranger la chose.

    @+

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    bonsoir pfeuh
    Résultat:



    Donc re install?

  17. #17
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Citation Envoyé par carnussien Voir le message
    Donc re install?
    Ben non, là c'est exactement ce qu'il doit y avoir. Il faudrait donc chercher le problème ailleurs.

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 11
    Par défaut
    Bonjour à tous,
    A force de "googler" et de "bricoler" j'ai finalement résolu mon problème sans être vraiment conscient de LA solution:
    Voici ce que je pense qui a amélioré la situation:

    Contenu de:
    /var/lib/locales/supported.d/local

    fr_FR.UTF-8 UTF-8
    en_US.UTF-8 UTF-8
    fr_FR ISO-8859-1

    Contenu de:
    /etc/environment

    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    LANG="fr_FR.UTF-8"
    LANGUAGE="fr:fr_FR:en"

    Contenu de:
    /etc/default/locale

    LANG="fr_FR.UTF-8"
    LANGUAGE="fr:fr_FR:en"

    commande utilisée et re boot:

    sudo dpkg-reconfigure locales

    il y a bien le " :en" qui me défrise ... mais je ne touche plus à rien!

    merci de m'avoir orienté aileurs que vers python

  19. #19
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    A vrais dire je pense que ce n'est utile que dans /var/lib/locales/supported.d/local.

    Soit
    /var/lib/locales/supported.d/local
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fr_FR.UTF-8 UTF-8
    en_US.UTF-8 UTF-8
    /etc/environment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
    /etc/default/locale
    Mais bon... Si cela fonctionne.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/04/2011, 14h37
  2. Ajout d'une quote (') dans une chaine de caractère
    Par moutu91 dans le forum Débuter
    Réponses: 2
    Dernier message: 19/01/2009, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo