tkinter, как узнать, изменилось ли значение Combobox python

Я использую Python 3.9.0 и сейчас делаю окно настроек для простой игры. в настройках вы можете выбрать сложность, и я хотел сделать возможность выбора пользовательской сложности, что просто означает ручной выбор осей X и Y в игре.

from tkinter import *
import tkinter.font as font
import tkinter.ttk as ttk
import tkinter as tk

settingsWin = tk.Tk()
settingsWin.title('Start Menu')
settingsWin.geometry("500x500")
settingsWin.resizable(0, 0)

back = tk.Frame(master=settingsWin,bg='white')
back.pack_propagate(0)
back.pack(fill=tk.BOTH, expand=1)

# General Font for general use
GeneralFont = font.Font(family='Helvetica', size=15)

# Label and Combobox for game Difficulty
difficulty_label = tk.Label(master=back, text='Game Difficulty:', font=GeneralFont, bg='white')
difficulty_label.place(x=60, y=120)
DIFFICULTY_OPTIONS = [
"Easy",
"Hard",
"Harder",
"Hardest",
"Custom"
]
difficulty_combobox = ttk.Combobox(master=back, state="readonly", values=DIFFICULTY_OPTIONS,font=GeneralFont, width=8)
difficulty_combobox.current(0)
difficulty_combobox.place(x=220, y=120)

# custom Difficulty in X and Y entries
def callback(input):
    if input.isdigit():
        if len(input) > 3:
            print(input)
            return False
        else:
            print(input) 
            return True
    elif input is "": 
        print(input) 
        return True
    else: 
        print(input) 
        return False
reg = settingsWin.register(callback)
X_label = tk.Label(master=back, text='X:', font=GeneralFont, bg='white')
X_label.place(x=60, y=185)
X_entry = tk.Entry(master=back, font=GeneralFont, bg='white', width=8)
X_entry.place(x=90, y=185)
X_entry.config(validate="key", validatecommand=(reg, '%P'))
Y_label = tk.Label(master=back, text='Y:', font=GeneralFont, bg='white')
Y_label.place(x=200, y=185)
Y_entry = tk.Entry(master=back, font=GeneralFont, bg='white', width=8)
Y_entry.place(x=230, y=185)
Y_entry.config(validate="key", validatecommand=(reg, '%P'))

Я хотел, чтобы X_entry и Y_entry имели state="normal" только тогда, когда вы выбираете Custom в сложности. Итак, я написал это:

if difficulty_combobox.get() != 4:
    X_entry.config(state="disabled")
    Y_entry.config(state="disabled")
else:
    X_entry.config(state="normal")
    Y_entry.config(state="normal")

Но это не работает, я предполагаю, что мне нужно, чтобы этот оператор If/Else возникал при изменении difficulty_combobox текущего значения? Если да, то как мне это сделать?

заранее спасибо!


person DVDavid    schedule 27.11.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как использовать виртуальное событие ‹ComboboxSelected› с tkinter   -  person Henry Yik    schedule 27.11.2020