Форум сайта python.su
Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox
Прошу помочь в исправлении ошибки.
from tkinter import * from tkinter import Tk from tkinter.ttk import Combobox def switch(): print("Кнопка нажата") def newselection(event): if str(event.widget.get())!="Отключить": Button["state"] = "normal" ####################################################################################################################### window = Tk() window.title("Название") window.geometry('200x200')#Задаем размер главного окна и его расположение window.resizable(width=False, height=False)#Зафиксировать размер окна ####################################################################################################################### ####################################################################################################################### lbl3 = Label(window, text="").place(x=10,y=80) combo = Combobox(window) combo['values'] = ("Отключить","Включить") combo.current(0) # установите вариант по умолчанию combo.bind("<<ComboboxSelected>>", newselection) combo.place(x=10,y=10) ####################################################################################################################### ####################################################################################################################### button = Button(window,text="Отправить XML", state='disabled',command=switch).place(x=10,y=100) #button['state'] = 'disabled' ####################################################################################################################### window.mainloop()
Отредактировано VIRTOK (Фев. 22, 2021 23:03:09)
Офлайн
Получаем следующий текст ошибки
Exception in Tkinter callback Traceback (most recent call last): File "C:\Python\Python39-64x\lib\tkinter\__init__.py", line 1885, in __call__ return self.func(*args) File "D:\test2.py", line 10, in newselection if str(event.widget.get())!="Отключить": Button["state"] = "normal" TypeError: 'type' object does not support item assignment
Офлайн
немного подправил
from tkinter import * from tkinter import Tk from tkinter.ttk import Combobox def switch(): print("Кнопка нажата") def newselection(button,value): print(value) if value =='Включить': button.config(state='normal') elif value == 'Отключить': button.config(state='disabled') ####################################################################################################################### window = Tk() window.title("Название") window.geometry('200x200')#Задаем размер главного окна и его расположение window.resizable(width=False, height=False)#Зафиксировать размер окна ####################################################################################################################### ####################################################################################################################### ####################################################################################################################### button = Button(window,text="Отправить XML", state='disabled',command=switch) button.place(x=10,y=100) #button['state'] = 'disabled' ############################################################################# lbl3 = Label(window, text="").place(x=10,y=80) combo = Combobox(window) combo['values'] = ("Отключить","Включить") combo.current(0) # установите вариант по умолчанию combo.bind("<<ComboboxSelected>>", lambda e:newselection(button,e.widget.get())) combo.place(x=10,y=10) ####################################################################################################################### ########################################## window.mainloop()
button = Button(window,text="Отправить XML", state='disabled',command=switch).place(x=10,y=100)
Отредактировано xam1816 (Фев. 22, 2021 23:49:24)
Офлайн
xam1816Смысл понятен но код не отрисовывает форму.
немного подправил
Офлайн
VIRTOKкод который я посылал у меня вроде как надо работает.Включить кнопка нормальная,отключить кнопка отключена
Смысл понятен но код не отрисовывает форму.
Офлайн
xam1816подверждаю
вроде как надо работает
from tkinter import * from tkinter import Tk from tkinter.ttk import Combobox window = Tk() window.title("Название") #Задаем размер главного окна и его расположение window.geometry('200x200') #Зафиксировать размер окна window.resizable(0, 0) button = Button(window, text="Отправить XML", state='disabled', command=lambda: print("Кнопка нажата")) button.place(x=10,y=100) #button['state'] = 'disabled' lbl3 = Label(window, text="").place(x=10, y=80) combo = Combobox(window) combo['values'] = ("Отключить","Включить") # установите вариант по умолчанию combo.current(0) combo.bind( "<<ComboboxSelected>>", lambda e: button.config(state='normal')\ if combo.current() \ else button.config(state='disabled')) combo.place(x=10,y=10) window.mainloop()
Отредактировано AD0DE412 (Фев. 23, 2021 20:11:51)
Офлайн
Я успешно адаптировал пример в свой код.
Спасибо все работает.
Офлайн