我的变量在标签上没有变化? (蟒蛇)

时间:2017-12-04 09:06:23

标签: python variables tkinter label

在我的程序中有四个标签。 3是独立变量,但第4个是其中一个变量除以100.0,并且工作正常。

我的程序工作正常并运行良好,但我添加了第5个(这是2个变量的乘法),但它不会从0变化。它在程序的代码中位于相同的位置第四,但我仍然无法弄清楚为什么它不会起作用。我能想到的唯一一件事就是我没有重装它,但我看了,我有。我真的被困了所以请有人帮忙吗?这是代码:

import tkinter as tk
from PIL import Image, ImageTk

# --- functions ---

def moar_eggz():
    global eggzps, chookz

    chookz += 1


def update_labels():
    try:
        label1.config(text="Eggs: " + str(round(eggz)))
        if eggzps >= 10:
            label2.config(text="Eggs Per Second: " + str(round(int(eggzps))))
        elif eggzps < 10:
            label2.config(text="Eggs Per Second: " + str(eggzps))
        label3.config(text="Egg Value: " + str(eggvalue))
        label4.config(text="Chickens: " + str(chookz))
        label5.config(text="Money: " + str(money))
    except Exception as e: 
        print(e) # display exception to see problem

    # repeat it after 20ms 
    root.after(20, update_labels)

def main_loop():
    global eggz, eggzps
    eggzps = chookz / 100.0
    money = eggz * eggvalue
    update_labels()
    try:
        eggz += eggzps
    except Exception as e:
        print(e) # display exception to see problem

    # repeat it after 1000ms 
    root.after(1000, main_loop)

# --- main ---

root = tk.Tk()
root.title("Chicken Clicker")

eggz = 0
eggvalue = 0.2
chookz = 0
eggzps = 0.0
eggzpms = 0
money = eggz * eggvalue


# empty labels - `update_labels` will add text  
label5 = tk.Label(root)
label4 = tk.Label(root)
label3 = tk.Label(root)
label2 = tk.Label(root)
label1 = tk.Label(root)
label5.pack()
label4.pack()
label3.pack()
label2.pack()
label1.pack()

chickencnv = Image.open("img\\1.png")
chicken = ImageTk.PhotoImage(chickencnv)

openbutton6= tk.Button(root, image=chicken, width=500, height=500, command=moar_eggz)
openbutton6.pack()


# run it first time at once
main_loop()


root.mainloop()

我在游戏中尝试了许多更改代码,但都没有改变任何内容,所以我来到这里。

对此主题的任何不相关或相关的答案或建议将受到高度赞赏。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您只是忘记在main_loop中为全局变量添加资金。所以在update_labels中,它始终是显示的初始值0。

def main_loop():
    global eggz, eggzps, money
    ...