Я работаю над кодом, который является игрой для кликера. Я сделал 90% себя, так как я никогда не использовал модуль Tkinter раньше, так как был действительно учебным проектом, так или иначе:Tkinter update label при изменении переменной
Я только что отсортировал функцию автоматического нажатия и метку в окне, прикрепленном к переменной (количество наличных денег), на данный момент у меня есть метка в .pack() и устанавливается так, что она создает новую метку после каждой секунды. Очевидно, что это создаст путаницу, и это не то, что вы ожидаете от игры, поэтому я задавался вопросом, есть ли способ:
1) Обновляйте ярлык каждый раз, когда изменяется переменная (количество наличных денег) (это было бы идеально, если вы можете мне помочь)
2) Удалите метку строкой кода, а затем введите новую метку с текущим номером переменных (не так хорошо, как первый, но все равно будет отлично чтобы это один, если первый не представляется возможным)
Вот код до сих пор:
import time
from tkinter import *
root=Tk()
CPS=0
cash=0
mult=1
def blankLine():
for i in range(16):
print ("")
def infoprint():
print("Cash =",cash)
print("")
print("Each click is worth",mult,"cash")
print("")
print("CPS =",CPS)
blankLine()
def CashASecond():
global root
global cash
global CPS
cash += CPS
root.after(1000, CashASecond)
CashASecond()
def CashLabel():
label1=Label(root,text=cash)
label1.pack()
root.after(1000, CashLabel)
CashLabel()
def ManualClicker():
global cash
global mult
cash += 1*(mult)
infoprint()
ManualClickerButton=Button(root,text="Click",command=ManualClicker)
ManualClickerButton.pack()
class upgrades():
def DoubleManualClicker():
global cash
global mult
if cash < 1000:
print("Not enough cash, sorry")
elif cash>= 1000:
print ("Double clicks purchased!")
mult *= 2
cash = cash - 1,000
DoubleManualClickerButton=Button(root,text="Purchase double clicks",command=DoubleManualClicker)
DoubleManualClickerButton.pack()
DoubleManualClickerLabel=Label(root,text="Each click is worth twice as much, costs 1,000 \n")
DoubleManualClickerLabel.pack()
def clicker():
global cash
global mult
global CPS
if cash < 25:
print("Not enough cash, sorry")
elif cash >=25:
CPS += 1
print("CPS is now",CPS)
cash = cash - 25
ClickerButton=Button(root,text="Purchase auto clicker", command=clicker)
ClickerButton.pack()
ClickerLabel=Label(root,text="+1 CPS, costs 25 \n")
ClickerLabel.pack()
def SingleMachine():
global cash
global mult
global CPS
if cash < 50:
print("Not enough cash, sorry")
elif cash >= 50:
CPS += 3
print("CPS is now",CPS)
cash = cash - 50
SingleMachineButton=Button(root,text="Purcahse Single Cash Printer",command=SingleMachine)
SingleMachineButton.pack()
SingleMachineLabel=Label(root,text="+3 CPS, costs 50 \n")
SingleMachineLabel.pack()
def LoftOfCashPrinter():
global cash
global mult
global CPS
if cash < 100:
print("Not enough cash, sorry")
elif cash >= 100:
CPS += 5
print("CPS is now",CPS)
cash=cash-100
LoftOfCashPrinterButton=Button(root,text="Purchase a loft of cash printers",command=LoftOfCashPrinter)
LoftOfCashPrinterButton.pack()
loftlabel=Label(root,text="+7 CPS, costs 100 \n")
loftlabel.pack()
root.title("Cash Clicker! ALPHA! By George Hill")
root.geometry("500x900+900+0")
root.mainloop()
Заранее спасибо :)
Я думаю, что это то, что вы ищете: [Stringvar in Tkinter] (http://effbot.org/tkinterbook/variable.htm) использует 'textvariable'-option вашего' label' для связывания Stringvar. Теперь вы можете изменить свой stringvar, и ваш ярлык автоматически изменится. – VRage