Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 22, 2021 22:57:07

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

Включение/отключение кнопки в зависимости от состояния выбранного от значения из 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)

Офлайн

#2 Фев. 22, 2021 23:01:53

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

Получаем следующий текст ошибки

 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

Офлайн

#3 Фев. 22, 2021 23:46:06

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1308
Репутация: +  112  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

немного подправил

 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)

Офлайн

#4 Фев. 23, 2021 10:53:01

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

xam1816
немного подправил
Смысл понятен но код не отрисовывает форму.

Офлайн

#5 Фев. 23, 2021 15:31:23

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1308
Репутация: +  112  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

VIRTOK
Смысл понятен но код не отрисовывает форму.
код который я посылал у меня вроде как надо работает.Включить кнопка нормальная,отключить кнопка отключена

Офлайн

#6 Фев. 23, 2021 18:20:03

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

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()
зы кнешно в реале так делать не надо т.к. подерживать такое да ну его нафик ну читать это ну такое



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Фев. 23, 2021 20:11:51)

Офлайн

#7 Фев. 23, 2021 23:50:09

VIRTOK
Зарегистрирован: 2017-10-23
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Включение/отключение кнопки в зависимости от состояния выбранного от значения из Combobox

Я успешно адаптировал пример в свой код.
Спасибо все работает.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version