Question

J'ai une instance de ttk.Entry. L'utilisateur clique dessus. Je l'événement lié. Selon certaines conditions, soit je veux que le curseur d'entrée apparaît et permet de taper ou Je veux essentiellement ignorer le clic et ne pas avoir le curseur d'entrée apparaît dans la ttk.Entry. I ne pas voulez avoir à utiliser les états de lecture seule ou handicapées.

mise au point n'a pas Manipuler effet.

Était-ce utile?

La solution 2

Après la pêche au chalut de la documentation TTK, cela ne l'astuce:

    ttk.Style().map("TEntry",
                    foreground=[('disabled', 'black')],
                    fieldbackground=[('disabled','white')]
                    )
    widget['state'] = 'disabled'

Autres conseils

Voici une classe qui fait ce que vous demandez.

class MyEntry(Entry):

    def disable(self):
        self.__old_insertontime = self.cget('insertontime')
        self.config(insertontime=0)
        self.bind('<Key>', lambda e: 'break')

    def enable(self):
        self.unbind('<Key>')
        if self.cget('insertontime') == 0:
            self.config(insertontime=self.__old_insertontime)

Cependant, étant donné que votre véritable préoccupation est que vous ne voulez pas d'une entrée désactivée pour regarder désactivé, juste définir les couleurs de disabledbackground et disabledforground pour correspondre aux couleurs de background et forground. Si vous avez besoin de ce roulé dans une classe, faire comme ceci:

class MyEntry(Entry):
    def __init__(self, *args, **kwds):
        Entry.__init__(self, *args, **kwds)
        self.config(disabledbackground=self.cget('background'))
        self.config(disabledforeground=self.cget('foreground'))

Et l'utiliser comme ceci:

e = MyEntry(root)
e.config(state=DISABLED) # or state=NORMAL

Remarque. Soyez prudent lorsque réinvente les conventions graphiques. Avoir quelque chose qui semble acte permis désactivé peut être source de confusion pour les utilisateurs. Donc, ne changent pas à moins que vous ayez une bonne raison.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top