Найти - Пользователи
Полная версия: Функция не работает
Начало » Python для новичков » Функция не работает
1
Grom
При нажатии кнопки не проиcходит действий с nn и значение в тексте постоянно равно 5. Сколько на кнопку не нажимай.

from tkinter import *

nn = 5

def form(t):
if nn > 1:
dd = nn - 1
nn = dd
text1.configure(text=nn)

root = Tk()
text1 = Label(root, font="Arial 15")
but = Button(root, text="Enter", width=15,height=1, bg="yellow", fg="blue")
but.bind("<Button-1>",form)
text1.pack()
but.pack()
root.title("")
root.geometry("400x400+450+200")
root.mainloop()
PEHDOM
фунекция работает(то что она работает не так как хочет ТС это уже другой вопрос), это ктото не знает что такое область видимости.
Grom учите матчасть https://python-scripts.com/scope
кроме того у вас nn даже будучи глобальной никак не изменяеться и всегда равна 5

 nn=5
...
if nn > 1:   # nn =5
        dd = nn - 1 # dd= 4, nn=5
        dd = nn # dd=5, nn=5
        text1.configure(text=nn) #  nn=5
....
Grom
PEHDOM
Спасибо, да ошибку сделал. Они должны быть поменяны местами . поменял. и nn при каждом нажатии должна становится меньше на 1, а вылазиет ошибка local variable ‘nn’ referenced before assignment
PEHDOM
Grom
а вылазиет ошибка local variable ‘nn’ referenced before assignment
а вот чтобы этого не происходило и нужно почитать про области видимости переменных по ссылочке
https://python-scripts.com/scope
там все подробненько разжовано, с картинками и примерами.
Grom
PEHDOM
Благодарю!
Помогла строчка global nn
 from tkinter import *
nn = 5
def form(t):
     global nn
     if nn > 1:
        dd = nn - 1
        nn = dd
        text1.configure(text=nn)
root = Tk()
text1 = Label(root, font="Arial 15")
but = Button(root, text="Enter", width=15,height=1, bg="yellow", fg="blue")
but.bind("<Button-1>",form)
text1.pack()
but.pack()
root.title("")
root.geometry("400x400+450+200")
root.mainloop()
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