Найти - Пользователи
Полная версия: Помогите пожалуйста с Tk
Начало » GUI » Помогите пожалуйста с Tk
1
4emp1ON
def answer(num): #функция проверки
    print("Выбран ответ ",num)
    if num!=data[2]:
        return False
        print('false')
    else:
        return True
        print('true')
ans1=Button(root, text = "1") #ответ 1
ans2=Button(root, text = "2") #ответ 2
ans3=Button(root, text = "3") #ответ 3
ans1.bind("<Button-1>", answer(1))
ans2.bind("<Button-1>", answer(2))
ans3.bind("<Button-1>", answer(3))
ans1.pack()
ans2.pack()
ans3.pack()
Добрый день, пытаюсь заставить работать ткинтер как следует, а он ни в какую. Помогите кто чем может. В попытке создать подобие теста пришел к вышеприведенному примеру(точнее, выписки из него).
Проблема в следующем:
По идее от всей этой конструкции требуется создать 3 кнопки, которые будут соответствовать вариантам ответа 1, 2 либо 3. И нажатие одной из них передает в функцию проверки числа, соответствующие выбранному варианту ответа. Но при запуске приложения сразу выводится в консоль
Выбран ответ 1
Выбран ответ 2
Выбран ответ 3,
и далее на нажатия кнопок окно не реагирует.

p.s. так же был опробован вариант с
ans1=Button(root, text = "1", command=answer(1)) #ответ 1
, но к сожалению, результат идентичный.
4kpt
Вам нужно разобраться в следующей разнице:
Что такое объект результата вызова функции и объект функции.
Почитайте М. Лутца. Сейчас я дам Вам ответ, но если Вы не почитаете - дальше будет значительно хуже.
По Вашему вопросу есть два варианта:
I
def answer(event, num):
    print("Выбран ответ %s" % (num))
ans1=Button(root, text="1")
ans2=Button(root, text="2")
ans3=Button(root, text="3")
ans1.bind("<Button-1>", lambda event: answer(event, 1))
ans2.bind("<Button-1>", lambda event: answer(event, 2))
ans3.bind("<Button-1>", lambda event: answer(event, 3))
ans1.pack()
ans2.pack()
ans3.pack()
II
def answer(event):
    print("Выбран ответ %s" % (event.widget["text"]))
ans1=Button(root, text="1")
ans2=Button(root, text="2")
ans3=Button(root, text="3")
ans1.bind("<Button-1>", answer)
ans2.bind("<Button-1>", answer)
ans3.bind("<Button-1>", answer)
ans1.pack()
ans2.pack()
ans3.pack()
Выбирайте любой, какой по-душе…

Есть еще парочка вариантов, но Вам их знать пока рановато :)
4emp1ON
М. Лутц уже в процессе прочтения. Спасибо большое!
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