[PYTHON] Aktivieren Sie die Schaltfläche Überprüfen in Tkinter, damit der Eintrag bearbeitet werden kann

Umgebung: Ubuntu 18.04.5 LTS (Windows Subsystem for Linux) Python 3.8.0 VcXsrv 1.20.5.1

Ziel

Wenn Sie in Tkinter of Python die Check-Taste (Check-Taste) aktivieren, wird das Eingabefeld (Eintrag) aktiviert und Sie können eingeben. Wenn diese Option nicht aktiviert ist, können Sie sie nicht bearbeiten. check.png checkme.png

Methode

import tkinter as tk

def change_state():
    if bool_check.get():
        #Wenn aktiviert
        entry.config(state='normal')
    else:
        #Wenn nicht markiert
        entry.config(state='disabled')

root = tk.Tk()

entry = tk.Entry()
entry.config(state='disabled')  #Anfangs ungültig

bool_check = tk.BooleanVar()
bool_check.set(False)  #Zuerst keine Prüfung
check = tk.Checkbutton(variable=bool_check, command=change_state)

check.pack()
entry.pack()

root.mainloop()

Definieren Sie die Funktion change_state.

Der Variablenname kann beliebig sein, aber weisen Sie der Variablen bool_check beispielsweise tk.BooleanVar () zu. Erstellen Sie ein Kontrollkästchen, indem Sie die Variable bool_check an das Variablenargument von tk.Checkbutton () und die Funktion change_state an das Befehlsargument übergeben.

Das Vorhandensein oder Fehlen der Prüfung wird von bool_check.get () als boolescher Wert zurückgegeben. Wenn das Kontrollkästchen deaktiviert ist, wird change_state () aufgerufen.

In change_state () wird der Status des erstellten Eintrags geändert, je nachdem, ob er aktiviert ist oder nicht.

Wenn Sie zwei oder mehr machen möchten

Wenn Sie bool_check oder entry als Argument an change_state () übergeben können, können Sie anscheinend dasselbe mit zwei oder mehr Eingabefeldern tun. likethis.png Zum Beispiel jedoch

def change_state(bool_check, entry):
    if bool_check.get():
        entry.config(state='normal')
    else:
        entry.config(state='disabled')

Definieren Sie die Funktion change_state mit einem Argument wie

tk.Checkbutton(command=change_state(bool_check, entry))

Selbst wenn Sie eine Funktion mit einem Argument an das Befehlsargument von tk.Checkbutton () übergeben, funktioniert dies nicht ordnungsgemäß. Übergeben Sie einen Lambda-Ausdruck an den Befehl, um ordnungsgemäß zu funktionieren. Das ist,

import tkinter as tk

def change_state(bool_check, entry):
    if bool_check.get():
        entry.config(state='normal')
    else:
        entry.config(state='disabled')

root = tk.Tk()

#Der erste
entry1 = tk.Entry()
entry1.config(state='disabled')
bool_check1 = tk.BooleanVar()
bool_check1.set(False)
check1 = tk.Checkbutton(text='1', variable=bool_check1,
                        command=lambda: change_state(bool_check1, entry1))
check1.pack()
entry1.pack()

#Zweite
entry2 = tk.Entry()
entry2.config(state='disabled')
bool_check2 = tk.BooleanVar()
bool_check2.set(False)
check2 = tk.Checkbutton(text='2', variable=bool_check2,
                        command=lambda: change_state(bool_check2, entry2))
check2.pack()
entry2.pack()

root.mainloop()

Ich bin der Meinung, dass diese Schreibweise besser ist, da die Funktion change_state nicht von globalen Variablen abhängt.

Einfache Anwendung

Wenn diese Option nicht aktiviert ist, wird die eingegebene Zeichenfolge gelöscht und "ungültig" angezeigt.

aaa.png mukou.png
import tkinter as tk

def change_state():
    if bool_check.get():
        #Wenn aktiviert
        entry.config(state='normal')
        entry.delete(0, tk.END)  #Nachdem ich es normal gemacht habe"Ungültig"Löschen
    else:
        #Wenn nicht markiert
        entry.delete(0, tk.END)  #Löschen Sie die Zeichenfolge vom 0. Zeichen bis zum Ende
        entry.insert(0, "Ungültig")  #0. Zeichen des Eintrags"Ungültig"Einfügen
        entry.config(state='disabled')  #einfügen und dann deaktivieren

root = tk.Tk()

entry = tk.Entry()
entry.insert(0, "Ungültig")  #0. Zeichen des Eintrags"Ungültig"Einfügen
entry.config(state='disabled')  #einfügen und dann deaktivieren

bool_check = tk.BooleanVar()
bool_check.set(False)
check = tk.Checkbutton(variable=bool_check, command=change_state)

check.pack()
entry.pack()

root.mainloop()

Es scheint, dass es angewendet werden kann, beispielsweise indem ein Anfangswert angegeben wird.

Recommended Posts

Aktivieren Sie die Schaltfläche Überprüfen in Tkinter, damit der Eintrag bearbeitet werden kann
So ändern Sie die Farbe nur der mit Tkinter gedrückten Taste
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Testcode, um auf der Seite nach defekten Links zu suchen
Den Typ mit Python beherrschen? (Wann ist eine Typprüfung durchzuführen?)
Erstellen wir eine Funktion, um die Schaltfläche in Tkinter gedrückt zu halten
[Python] Lösen des Importproblems aufgrund der unterschiedlichen Einstiegspunkte
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
Stellen Sie sicher, dass Python eine Zeichenfolge in int konvertieren / konvertieren kann
Programmierung, um in der Welt zu kämpfen ~ 5-5,5-6
Programmieren, um in der Welt zu kämpfen 5-3
Programmierung für den Kampf in der Welt - Kapitel 4
Im Python-Befehl zeigt Python auf Python3.8
Überprüfen Sie die Datenzusammenfassung in CASTable
Probieren Sie Cython in kürzester Zeit aus
Programmieren, um in der Welt zu kämpfen ~ 5-2
Annäherungserklärung für Anfänger, um in Kaggle Titanic_3 unter den besten 1,5% (0,83732) zu sein
So überprüfen Sie die lokale GAE über den iPhone-Browser im selben LAN
Einstellungen, mit denen auf IPython Notebook von außerhalb des lokalen Bereichs zugegriffen werden kann
Annäherungserklärung für Anfänger, um in Kaggle Titanic_1 unter den besten 1,5% (0,83732) zu sein
Wechseln Sie das zu ladende Modul für jede Ausführungsumgebung in Python
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Annäherungserklärung für Anfänger, um in Kaggle Titanic_2 unter den besten 1,5% (0,83732) zu sein
Überprüfen Sie das Verhalten des Zerstörers in Python
So überprüfen Sie die Version von Django
Überprüfen Sie, ob die URL in Python vorhanden ist
Fügen Sie in Jupyter IPerl zum Kernel hinzu.
So überprüfen Sie die Version von opencv mit Python
Verschiedene Kommentare im Programm zu schreiben
Setzen Sie Tkinter in Macbook ein und überprüfen Sie den Betrieb
Wie man eine Benutzergruppe mit Slack-Benachrichtigung erwähnt, wie man die ID einer Benutzergruppe überprüft
Ermöglichen Sie die Verwendung von HTML5 <input type = "date / time"> im DatetimeField-Formular in Django
Ich habe versucht, die Pferde vorherzusagen, die mit LightGBM unter den Top 3 sein werden
So zeigen Sie im gesamten Fenster an, wenn Sie das Hintergrundbild mit tkinter einstellen
Wenn in der Funktion eine Ausnahme auftritt, wird diese an den Anrufer 2 übertragen