Witam, mam problem z zmienną "pkt", i wyskakuje błąd. Proszę o pomoc

- Rejestracja:prawie 4 lata
- Ostatnio:prawie 4 lata
- Postów:4
0
edytowany 1x, ostatnio: Paweł Dłubała
AnyKtokolwiek
Błąd się podaje - choćbyś niezupełnie go rozumiał. jest o wiele szybciej

Paweł Dłubała
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Paweł Dłubała\AppData\Local\Programs\Python\Python39\lib\tkinter_init_.py", line 1892, in call
return self.func(*args)
File "C:\Users\Paweł Dłubała\Desktop\AimTraining by PawełeK.py", line 13, in xd
pkt = pkt + 1
UnboundLocalError: local variable 'pkt' referenced before assignment
AnyKtokolwiek
Użycie zmiennej przed przypisaniem do niej wartości

Paweł Dłubała
we wczesniejszych linijkach dopisałem: pkt = 0 lub pkt = 1 i wciąż nie dziala, w takim razie mozesz napisać w jaki sposob mogę to zrobić?

- Rejestracja:ponad 6 lat
- Ostatnio:około 2 lata
2
pkt + 1 = pkt
=> pkt = pkt + 1

wcześniej próbowałem tak, i dalej nie dziala. błąd:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Paweł Dłubała\AppData\Local\Programs\Python\Python39\lib\tkinter_init_.py", line 1892, in call
return self.func(*args)
File "C:\Users\Paweł Dłubała\Desktop\AimTraining by PawełeK.py", line 13, in xd
pkt = pkt + 1
UnboundLocalError: local variable 'pkt' referenced before assignment

Użyj
global pkt
jeśli chcesz się odwołać do tego wcześniejszego.

Mógłbyś mi edytować program, nie za bardzo wiem jak to zrobić.

dobra, udało się, dzieki bardzo!

- Rejestracja:ponad 6 lat
- Ostatnio:5 dni
- Postów:517
3
Poczytaj o zasięgu zmiennych.
W funkcjach zmienna 'pkt' to zmienna lokalna, co znaczy że z 'pkt' zadeklarowanym przed nimi nie ma nic wspólnego.

w takim razie musze zmienić "pkt = 1" na global jak napisal Pan wyżej. Mozesz mi zedytowac program? Przepraszam ale dopiero się uczę.

dobra, udało się, dzieki bardzo!

spoko

- Rejestracja:prawie 4 lata
- Ostatnio:prawie 4 lata
- Postów:4
0
gotowy kod: https://code.skript.pl/DdX6zcCl
import tkinter
import random
root = tkinter.Tk()
root.geometry("500x500")
root.title("AimTraining by PawełeK.")
root.configure(bg='orange')
pkt = 0
def xd():
b.place(x=random.randint(0, 450),y=random.randint(0, 450))
global pkt
pkt = pkt + 1
print(pkt)
def xd2():
b2.place(x=random.randint(0, 450), y=random.randint(0, 450))
global pkt
pkt = pkt + 1
print(pkt)
def xd3():
global pkt
pkt = pkt + 1
print(pkt)
def xd4():
b4.place(x=random.randint(0, 450), y=random.randint(0, 450))
global pkt
pkt = pkt + 1
print(pkt)
b = tkinter.Button(root, bg='#69e5ae', height=4,width=8, command=xd)
b.pack()
b.place(x=random.randint(0, 450),y=random.randint(0, 450))
b2 = tkinter.Button(root, bg='#69e5ae', height=4,width=8, command=xd2)
b2.pack()
b2.place(x=random.randint(0, 450),y=random.randint(0, 450))
b3 = tkinter.Button(root, bg='#69e5ae', height=4,width=8, command=xd3)
b3.pack()
b3.place(x=random.randint(0, 450),y=random.randint(0, 450))
b4 = tkinter.Button(root, bg='#69e5ae', height=4,width=8, command=xd4)
b4.pack()
b4.place(x=random.randint(0, 450),y=random.randint(0, 450))
root.mainloop()
edytowany 1x, ostatnio: Ktos

Spokojnie możesz wklejać kod do postu, zwłaszcza taki niezbyt długi :)

- Rejestracja:około 18 lat
- Ostatnio:ponad rok
0
Trochę przydługawy ten krótki kod ;) Przestań używać ctrl+c ctrl+v :)
xd3 u Ciebie nie zmienia pozycji, ale zakładam, że to przypadkowo.
import tkinter
import random
root = tkinter.Tk()
root.geometry("500x500")
root.title("AimTraining by PawełeK.")
root.configure(bg='orange')
pkt = 0
def xd(event):
event.widget.place(x=random.randint(0, 450),y=random.randint(0, 450))
global pkt
pkt = pkt + 1
print(pkt)
for i in range(4):
btn = tkinter.Button(root, bg='#69e5ae', height=4, width=8)
btn.pack()
btn.bind('<Button-1>', xd)
btn.place(x=random.randint(0, 450),y=random.randint(0, 450))
root.mainloop()
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.