Мне кажется, что я искал в сети целую вечность, перефразировал мой вопрос тысячу раз для чего-то, что, как мне кажется, должно быть очень простым.
Интересно, есть ли способ проверить, есть ли Tkinter?Виджет активен (не выделен серым цветом / отключен).У меня есть набор OptionMenus, которые вначале отключены и настроены на state=ACTIVE
при установке флажка, чтобы пользователь мог выбрать, какие OptionMenus они хотят использовать.
Когда я пытаюсь «отправить»поля в OptionMenus, я хочу только те, которые ACTIVE
.Я уже пробовал if OptionMenu.state == ACTIVE
, но затем я получаю сообщение об ошибке, что у OptionMenu нет состояния атрибута, хотя я настраиваю его ранее.
Вот пример моего кода:
from tkinter import *
class Application(Frame):
# Initializing the window and the required variables
def __init__(self, master=None):
Frame.__init__(self, master)
self.checkbox_in_use = BooleanVar(self, False)
self.checkbox = Checkbutton(self, text="check",
var=self.checkbox_in_use,
command=self.check_change
self.checkbox.grid(row=0, column=1, sticky='W')
self.menu = OptionMenu(title_setting,
"Menu",
"Menu",
["Menu1", "Menu2"])
self.menu.grid(row=1, column=1)
self.menu.config(state=DISABLED)
submit = Button(self, text="submit",
command=self.submit_function)
submit.grid(row=2, column=0)
self.master = master
self.init_window()
# Initialize the window
def init_window(self):
self.master.title("Example")
self.pack(fill=BOTH, expand=1)
def check_change(self):
if self.checkbox_in_use.get():
self.menu.config(state=ACTIVE)
else:
self.menu.config(state=DISABLED)
def submit_function(self):
# This is the part I want to do something with.
if self.menu.state == ACTIVE:
print("You are good to go! Do the stuff.")
root = Tk()
root.geometry("400x300")
app = Application(root)
root.mainloop()
СпасибоВы за все ответы.