Frage

ich eine Instanz von ttk.Entry haben. Der Benutzer klickt. Ich habe das Ereignis gebunden. In Abhängigkeit von einer Bedingung, mag ich entweder die Eingabecursor Eingabe erscheinen und erlaubt oder Ich möchte im Wesentlichen den Klick ignorieren und nicht den Eingang hat Cursor im ttk.Entry erscheinen. I nicht wollen die nur lesbar oder deaktiviert Staaten haben zu verwenden.

Fokus Manipulieren hat nicht wirksam.

War es hilfreich?

Lösung 2

Nach der TTK Dokumentation Schleppen, dies funktioniert der Trick:

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

Andere Tipps

Hier ist eine Klasse, die das tut, was Sie fragen.

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)

Da jedoch Ihre wirkliche Sorge ist, dass Sie nicht wollen, ein behinderter Eintrag deaktiviert aussehen soll, stellt nur die Farben von disabledbackground und disabledforground die Farben von background und forground anzupassen. Wenn Sie diese in eine Klasse gerollt müssen, tun Sie es wie folgt aus:

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

Und es wie folgt verwendet werden:

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

Hinweis. Seien Sie vorsichtig, wenn gui Konventionen neu zu erfinden. Mit etwas, das aussieht handeln aktiviert deaktiviert kann verwirrend für Benutzer werden. Also nicht ändern, wenn Sie guten Grund haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top