problem ze zmienną

problem ze zmienną
Paweł Dłubała
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 4 lata
  • Postów:4
0

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

https://code.skript.pl/JUYKqV8u

edytowany 1x, ostatnio: Paweł Dłubała
AK
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
AK
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ć?
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
2

pkt + 1 = pkt => pkt = pkt + 1

Paweł Dłubała
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
Delor
Użyj global pkt jeśli chcesz się odwołać do tego wcześniejszego.
Paweł Dłubała
Mógłbyś mi edytować program, nie za bardzo wiem jak to zrobić.
Paweł Dłubała
dobra, udało się, dzieki bardzo!
Eldorad O.
  • 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.

Paweł Dłubała
w takim razie musze zmienić "pkt = 1" na global jak napisal Pan wyżej. Mozesz mi zedytowac program? Przepraszam ale dopiero się uczę.
Paweł Dłubała
dobra, udało się, dzieki bardzo!
Paweł Dłubała
  • Rejestracja:prawie 4 lata
  • Ostatnio:prawie 4 lata
  • Postów:4
0

gotowy kod: https://code.skript.pl/DdX6zcCl

Kopiuj
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
Ktos
Spokojnie możesz wklejać kod do postu, zwłaszcza taki niezbyt długi :)
Arthan
  • 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.

Kopiuj
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.