如何使用tkinter在python中单击按钮后更新内容
我是tkinter模块的新手,想知道在按下按钮后是否有更新标签的方法。我试图做一个益智游戏,使用按钮来增加和减少标签的价值。我包括了所有的代码,这样你们都可以看到发生了什么。当我运行它并单击按钮时,什么也没发生如何使用tkinter在python中单击按钮后更新内容,python,tkinter,Python,Tkinter,我是tkinter模块的新手,想知道在按下按钮后是否有更新标签的方法。我试图做一个益智游戏,使用按钮来增加和减少标签的价值。我包括了所有的代码,这样你们都可以看到发生了什么。当我运行它并单击按钮时,什么也没发生 #creat GUI import tkinter import time #------------------------------------------------- def isactive(): return Tr
#creat GUI
import tkinter
import time
#-------------------------------------------------
def isactive():
return True
#-------------------------------------------------
def inv(event):
global OkToPressI
if OkToPressI == False:
pass
else:
updateflint()
updategrass()
updatehay()
updatetree()
updatelog()
updatesapling()
updatetwig()
updateboulder()
updaterock()
updatepickaxe()
updateaxe()
updatefirepit()
updatetent()
updatetorch()
startLabel.config(text='')
OkToPressI =False
#-------------------------------------------------
def updateflint():
global flint
if isactive():
flintlabel.after(100, updateflint)
#-------------------------------------------------
def updategrass():
global grass
if isactive():
grasslabel.after(100, updategrass)
#-------------------------------------------------
def updatehay():
global hay
if isactive():
haylabel.after(100, updatehay)
#-------------------------------------------------
def updatetree():
global tree
if isactive():
treelabel.after(100, updatetree)
#-------------------------------------------------
def updatelog():
global log
if isactive():
loglabel.after(100, updatelog)
#-------------------------------------------------
def updatesapling():
global sapling
if isactive():
saplinglabel.after(100,updatesapling)
#-------------------------------------------------
def updatetwig():
global twig
if isactive():
twiglabel.after(100, updatetwig)
#-------------------------------------------------
def updateboulder():
global boulder
if isactive():
boulderlabel.after(100, updateboulder)
#-------------------------------------------------
def updaterock():
global rock
if isactive():
rocklabel.after(100, updaterock)
#-------------------------------------------------
def updatepickaxe():
global pickaxe
if isactive():
pickaxelabel.after(100, updatepickaxe)
#-------------------------------------------------
def updateaxe():
global axe
if isactive():
axelabel.after(100, updateaxe)
#-------------------------------------------------
def updatefirepit():
global firepit
if isactive():
firepitlabel.after(100, updatefirepit)
#-------------------------------------------------
def updatetent():
global tent
if isactive():
tentlabel.after(100, updatetent)
#-------------------------------------------------
def updatetorch():
global torch
if isactive():
torchlabel.after(100, updatetorch)
#-------------------------------------------------
#crafting constrants
def crafthay():
global hay
global grass
if grass == 0:
return 'You can\'t.'
else:
return 'Crafting...'
time.sleep(5)
hay += 1
grass -= 1
return 'Item crafted.'
#-------------------------------------------------
def crafttwig():
global twig
global sapling
if sapling == 0:
return 'You can\'t.'
else:
return 'Crafting...'
time.sleep(5)
sapling -= 1
twig += 1
return 'Item crafted.'
#-------------------------------------------------
def craftlog():
global axe
global tree
global log
if axe == 0:
if tree ==0:
return 'You can\'t.'
else:
return 'You are missing something.'
else:
return 'Crafting...'
time.sleep(5)
axe -= 1
tree -= 1
log += 1
return 'Item crafted.'
#-------------------------------------------------
def craftaxe():
global twig
global flint
global axe
if flint == 0:
if twig < 3:
return 'You can\'t.'
else:
return 'You are missing something.'
else:
return 'Crafting...'
time.sleep(5)
twig -= 3
flint -=1
axe += 1
return 'Item crafted.'
#-------------------------------------------------
def crafttent():
global twig
global tent
global hay
if twig < 10:
if hay < 15:
return 'You can\'t.'
else:
return 'Crafting...'
time.sleep(5)
twig -= 10
hay -= 15
tent += 1
return 'Item Crafted.'
#-------------------------------------------------
def craftfirepit():
global boulder
global log
global twig
global torch
global firepit
if boulder < 5:
if log < 3:
if twig == 0:
if torch == 0:
return 'You can\'t.'
else:
return 'Crafting...'
time.sleep(5)
boulder -= 5
log -= 3
twig -= 1
torch -= 1
firepit += 1
return 'Item crafted'
#-------------------------------------------------
def crafttorch():
global flint
global grass
global twig
global torch
if flint == 0:
if grass == 0:
if twig == 0:
return 'You can\'t.'
else:
return 'crafting...'
time.sleep(5)
flint -= 1
grass -= 1
twig -= 1
torch += 1
return 'Item crafted.'
#-------------------------------------------------
def craftpickaxe():
global flint
global twig
global pickaxe
if flint < 2:
if twig == 0:
return 'You can\'t'
else:
return 'Crafting...'
time.sleep (5)
flint -= 2
twig -= 1
pickaxe += 1
return 'Item crafted.'
#-------------------------------------------------
#all global variables
OkToPressI = True
flint = 50
grass = 100
hay = 0
tree = 100
log = 0
sapling = 100
twig = 0
boulder = 30
rock = 0
pickaxe = 0
axe = 0
firepit = 0
tent = 0
torch = 0
#-------------------------------------------------------
print("'Crafting Challenge' Game")
print("-----------------------------------------\n")
print("TRY TO SURVIVE BY CRAFTING A TENT AND A FIREPIT!")
print('Press i to see your inventroy and c to craft.')
#----------------------------------------------------------------------
#run the GUI for the active inventory
root = tkinter.Tk()
root.title("Inventory")
root.geometry("750x750")
startLabel= tkinter.Label(root, text="Press 'i' to see inventory!", font=('Helvetica', 12))
flintlabel= tkinter.Label(root, text="Flint: " + str(flint), font = ('Helvetica',12))
grasslabel= tkinter.Label(root, text='Grass: ' + str(grass), font = ('Helvetica',12))
haylabel= tkinter.Label(root, text='Hay: ' + str(hay), font = ('Helvetica',12))
treelabel= tkinter.Label(root, text='Tree: ' + str(tree), font = ('Helvetica',12))
loglabel= tkinter.Label(root, text='Log: ' +str(log), font = ('Helvetica',12))
saplinglabel= tkinter.Label(root, text='Sapling: ' + str(sapling), font = ('Helvetica',12))
twiglabel= tkinter.Label(root, text='Twig: ' +str(twig), font = ('Helvetica',12))
boulderlabel= tkinter.Label(root, text='Boulder: ' + str(boulder), font = ('Helvetica',12))
rocklabel= tkinter.Label(root, text='Rock: ' + str(rock), font=('Helvetica',12))
pickaxelabel= tkinter.Label(root, text='Pickaxe: ' + str(pickaxe), font=('Helvetica',12))
axelabel= tkinter.Label(root, text='Axe: ' +str(axe), font=('Helvetica',12))
firepitlabel= tkinter.Label(root, text='Firepit: ' + str(firepit), font=('Helvetica',12))
tentlabel= tkinter.Label(root, text='Tent: ' + str(tent), font=('Helvetica',12))
torchlabel= tkinter.Label(root, text='Torch: ' + str(torch), font=('Helvetica',12))
craftlabel= tkinter.Label(root, text='----------------------------------------------')
craft2label= tkinter.Label(root, text='Press the button to craft.')
btnhay = tkinter.Button(root, text='Hay', command=crafthay)
btntwig = tkinter.Button(root, text='Twig', command=crafttwig)
btnlog = tkinter.Button(root, text='Log', command=craftlog)
btnaxe = tkinter.Button(root, text='Axe', command=craftaxe)
btntent = tkinter.Button(root, text='Tent', command=crafttent)
btnfirepit = tkinter.Button(root, text='Firepit', command=craftfirepit)
btntorch = tkinter.Button(root, text='Torch', command=crafttorch)
btnpickaxe = tkinter.Button(root, text='Pickaxe', command=craftpickaxe)
startLabel.pack()
flintlabel.pack()
grasslabel.pack()
haylabel.pack()
treelabel.pack()
loglabel.pack()
saplinglabel.pack()
twiglabel.pack()
boulderlabel.pack()
rocklabel.pack()
pickaxelabel.pack()
axelabel.pack()
firepitlabel.pack()
tentlabel.pack()
torchlabel.pack()
craftlabel.pack()
btnhay.pack()
btntwig.pack()
btnlog.pack()
btnaxe.pack()
btntent.pack()
btnfirepit.pack()
btntorch.pack()
btnpickaxe.pack()
root.bind('<i>',inv)
root.mainloop()
#starts crafting
if tent >= 1 and firepit >= 1:
print("\n**YOU HAVE MANAGED TO SURVIVE!\nWELL DONE!")
#创建GUI
进口tkinter
导入时间
#-------------------------------------------------
def isactive():
返回真值
#-------------------------------------------------
def库存(事件):
全球OkToPressI
如果OkToPressI==False:
通过
其他:
updateflint()
updategrass()
updatehay()
updatetree()
updatelog()
更新采样()
updatewig()
UpdateBolder()
updaterock()
更新表kaxe()
updateaxe()
updatefirepit()
updateent()
updatetorch()
startabel.config(文本=“”)
OkToPressI=False
#-------------------------------------------------
def updateflint():
全球燧石
如果是活动的():
flintlabel.after(100,updateflint)
#-------------------------------------------------
def updategrass():
全球草
如果是活动的():
grasslabel.after(100,updategrass)
#-------------------------------------------------
def updatehay():
全球干草
如果是活动的():
haylabel.after(100,updatehay)
#-------------------------------------------------
def updatetree():
全局树
如果是活动的():
treelabel.after(100,updatetree)
#-------------------------------------------------
def updatelog():
全局日志
如果是活动的():
loglabel.after(100,更新日志)
#-------------------------------------------------
def UPDATESAPPLING():
全球树苗
如果是活动的():
saplinglabel.after(100,更新采样)
#-------------------------------------------------
def updatetwig():
全球细枝
如果是活动的():
twiglabel.after(100,updatewig)
#-------------------------------------------------
def updatebounder():
全球巨砾
如果是活动的():
boulderlabel.after(100,updateboulder)
#-------------------------------------------------
def updaterock():
环球摇滚
如果是活动的():
rocklabel.after(100,updaterock)
#-------------------------------------------------
def UPDATEPICAXE():
全球鹤嘴锄
如果是活动的():
pickaxelabel.after(100,更新的Epickaxe)
#-------------------------------------------------
def updateaxe():
全球斧头
如果是活动的():
axelabel.after(100,updateaxe)
#-------------------------------------------------
def updatefirepit():
全球壁炉
如果是活动的():
firepitlabel.after(100,updatefirepit)
#-------------------------------------------------
def updatetent():
全球帐篷
如果是活动的():
tentlabel.after(100,更新测试)
#-------------------------------------------------
def updatetorch():
全球火炬
如果是活动的():
手电筒标签后(100,updatetorch)
#-------------------------------------------------
#制作建筑材料
def crafthay():
全球干草
全球草
如果草地==0:
返回“您不能”
其他:
返回“手工制作…”
时间。睡眠(5)
干草+=1
草-=1
返回“物品制作”
#-------------------------------------------------
def craftwig():
全球细枝
全球树苗
如果树苗==0:
返回“您不能”
其他:
返回“手工制作…”
时间。睡眠(5)
树苗-=1
小枝+=1
返回“物品制作”
#-------------------------------------------------
def craftlog():
全球斧头
全局树
全局日志
如果axe==0:
如果tree==0:
返回“您不能”
其他:
return“您缺少了一些东西。”
其他:
返回“手工制作…”
时间。睡眠(5)
斧头-=1
树-=1
对数+=1
返回“物品制作”
#-------------------------------------------------
def craftaxe():
全球细枝
全球燧石
全球斧头
如果燧石==0:
如果细枝<3:
返回“您不能”
其他:
return“您缺少了一些东西。”
其他:
返回“手工制作…”
时间。睡眠(5)
小枝-=3
燧石-=1
axe+=1
返回“物品制作”
#-------------------------------------------------
def craftent():
全球细枝
全球帐篷
全球干草
如果树枝<10:
如果hay<15:
返回“您不能”
其他:
返回“手工制作…”
时间。睡眠(5)
细枝-=10
干草-=15
帐篷+=1
返回“物品制作”
#-------------------------------------------------
def.it():
全球巨砾
全局日志
全球细枝
全球火炬
全球壁炉
如果漂石<5:
如果日志<3:
如果细枝==0:
如果火炬==0:
返回“您不能”
其他:
返回“手工制作…”
时间。睡眠(5)
卵石-=5
对数-=3
小枝-=1
import tkinter as tk
flint_text = tk.StringVar()
flint_text.set("Flint: " + str(flint))
flintlabel= tkinter.Label(root, textvariable=flint_text)
flintlabel= tkinter.Label(root, "Flint: 0")
flintlabel['text'] = "Flint: " + str(flint)
flintlabel.config(text="Flint: " + str(flint))
try: # In order to be able to import tkinter for
import tkinter as tk # either in python 2 or in python 3
except ImportError:
import Tkinter as tk
def update_something(widget):
import random
widget['text'] = random.randint(0, 9)
if __name__ == '__main__':
root = tk.Tk()
label = tk.Label(root, text=0)
tk.Button(root, text="Update",
command=lambda w=label: update_something(w)).pack()
label.pack()
tk.mainloop()