Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Python, tkinter. При нажатии на btn1 ничего не происходит, помогите пожалуйста

Вера Зай Ученик (206), открыт 5 дней назад
import tkinter as tk

def sub(buttons):
for button in buttons:
button.pack_forget()
btn1 = tk.Button(root, text=str("русский язык"))
btn1.pack()
buttons.append(btn1)
btn2 = tk.Button(root, text=str("математика"))
btn2.pack()
buttons.append(btn2)
btn3 = tk.Button(root, text=str("информатика"))
btn3.pack()
buttons.append(btn3)

def rus(buttons):
for button in buttons:
if button != btn1:
button.pack_forget()
btn11 = tk.Button(root, text=str("виды подчинительной связи слов в словосочетании"))
btn11.pack()
buttons.append(btn11)
btn22 = tk.Button(root, text=str("типы сказуемых"))
btn22.pack()
buttons.append(btn22)

root = tk.Tk ()
root.geometry("500x400")
root.title("Button Click")

buttons = []
button = tk.Button(root, text=str("8 класс"), command=lambda: sub(buttons))
btn1 = tk.Button(root, command=lambda: rus(buttons))
button.pack()
buttons.append(button)

root.mainloop()
При нажатии на btn1 ничего не происходит, помогите пожалуйста
1 ответ
Валерий Шумилин Знаток (345) 4 дня назад
import tkinter as tk

def sub(buttons):
for button in buttons:
button.pack_forget()

# Создаем кнопки и возвращаем их
btn1 = tk.Button(root, text=str("русский язык"))
btn1.pack()
btn2 = tk.Button(root, text=str("математика"))
btn2.pack()
btn3 = tk.Button(root, text=str("информатика"))
btn3.pack()

# Возвращаем список новых кнопок
return [btn1, btn2, btn3]

def rus(buttons):
# Здесь btn1 не является глобальной переменной, поэтому код корректный
for button in buttons:
if button != buttons [0] : ["русский язык"](# Сравниваем с кнопкой) , чтобы она не удалялась
button.pack_forget()

btn11 = tk.Button(root, text=str("виды подчинительной связи слов в словосочетании"))
btn11.pack()
buttons.append(btn11)
btn22 = tk.Button(root, text=str("типы сказуемых"))
btn22.pack()
buttons.append(btn22)


root = tk.Tk()
root.geometry("500x400")
root.title("Button Click")

buttons = []
button = tk.Button(root, text=str("8 класс"), command=lambda: sub(buttons)) # Изменения здесь
button.pack()
buttons.append(button)

# Кнопка русского языка. Привязывается к первой кнопке, которая вернётся из sub
btn1 = None # Изначально не определена
def after_sub(returned_buttons):
global btn1
btn1 = returned_buttons[0]
btn1.config(command=lambda: rus(returned_buttons))

button.config(command = lambda: after_sub(sub(buttons)))

root.mainloop()
Похожие вопросы