Найти - Пользователи
Полная версия: Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox
Начало » Python для новичков » Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox
1
VIRTOK
Включение/отключение кнопки в зависимости от состояния выбранного от значения из 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
Получаем следующий текст ошибки
 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
xam1816
немного подправил
 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)
VIRTOK
xam1816
немного подправил
Смысл понятен но код не отрисовывает форму.
xam1816
VIRTOK
Смысл понятен но код не отрисовывает форму.
код который я посылал у меня вроде как надо работает.Включить кнопка нормальная,отключить кнопка отключена
AD0DE412
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()
зы кнешно в реале так делать не надо т.к. подерживать такое да ну его нафик ну читать это ну такое
VIRTOK
Я успешно адаптировал пример в свой код.
Спасибо все работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB