проблема с tkinter и переменными - PullRequest
0 голосов
/ 11 июля 2019

Когда я запускаю это, я получаю ошибку, которую не понимаю

Я пытался редактировать переменные, чтобы исправить проблему, однако она не работала

from tkinter import *
cookie = 0
am = 1

def cookieFunc():
    global cookie
    global am
    cookie = cookie + am
    print(cookie)

def grandma():
    global cookie
    global am
    if cookie >= 10:
        cookie = cookie - 10
        am = am + 0.5

def farm():
    global cookie
    global am
    if cookie >= 100:
        cookie = cookie - 100
        am = am + 5

root = Tk()
root.geometry('300x300')
cookie = Button(root, text='cookie', command=cookieFunc)
cookie.pack()
grandma = Button(root, text='grandma', command=grandma)
grandma.pack()
farm = Button(root, text='farm', command=farm)
farm.pack()

root.mainloop()

Когда вы нажимаете cookie, он должендобавьте 1 к cookie, бабушка должна добавить 0,5 к утра, то есть к количеству файлов cookie, которые вы получаете за клик, ферма должна добавить 5 к часу

Ответы [ 2 ]

2 голосов
/ 11 июля 2019

У вас проблема, потому что вы используете одно и то же имя для разных переменных

cookie = 0
cookie = Button(...)

, поэтому вы думаете, что добавляете два целых числа в

cookie + am

, но Python видит

Button + am

Аналогично

def farm()
farm = Button(...)

def grandma()
grandma = Button(...)

Рабочий код использования button_cookie, button_farm

from tkinter import *

cookie = 0
am = 1

def cookieFunc():
    global cookie
    global am

    cookie = cookie + am
    print(cookie, am)

def grandma():
    global cookie
    global am

    if cookie >= 10:
        cookie = cookie - 10
        am = am + 0.5
    print(cookie, am)

def farm():
    global cookie
    global am

    if cookie >= 100:
        cookie = cookie - 100
        am = am + 5
    print(cookie, am)

root = Tk()
root.geometry('300x300')

button_cookie = Button(root, text='cookie', command=cookieFunc)
button_cookie.pack()

button_grandma = Button(root, text='grandma', command=grandma)
button_grandma.pack()

button_farm = Button(root, text='farm', command=farm)
button_farm.pack()

root.mainloop()
1 голос
/ 11 июля 2019

В начале вы объявляете переменную int cookie:

cookie = 0

После этого вы присваиваете Button() этой переменной:

cookie = Button(root, text='cookie', command=cookieFunc)

Я думаю, это не то, что выхотеть сделать. Просто переименуйте одну из переменных.

PS попробуйте использовать IDE, она выделит вашу переменную, которая была затенена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...