Domanda

Ho un'istanza di ttk.Entry. L'utente fa clic. Ho l'evento legato. In base a una certa condizione, io voglio sia il cursore di ingresso di apparire e permettere la digitazione o I essenzialmente vuole ignorare il clic e non hanno l'ingresso cursore apparirà nella ttk.Entry. I non vogliono dover utilizzare gli stati di sola lettura o disabili.

La manipolazione messa a fuoco non ha effetto.

È stato utile?

Soluzione 2

Dopo aver setacciato la documentazione TTK, questo fa il trucco:

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

Altri suggerimenti

Ecco una classe che fa quello che si chiede.

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)

Tuttavia, dal momento che la tua vera preoccupazione è che non si vuole una voce disabile a guardare disabili, è sufficiente impostare i colori del disabledbackground e disabledforground per abbinare i colori di background e forground. Se avete bisogno di questo rotolato in una classe, fare in questo modo:

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'))

E usare in questo modo:

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

Nota. Fare attenzione quando si reinventare convenzioni gui. Avere qualcosa che sembra abilitati agire disabile può essere fonte di confusione per gli utenti. Quindi non cambiare questo a meno che non si dispone di una buona ragione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top