单独的按钮跟踪单独的值[Python]



我正在建立一个基本的Python计划,用于在我当地的Rogue Trader运动中跟踪子弹火。我讨厌写作 - 擦除 - 在我的床单上重写,使它弄脏并粗暴。这为我提供了练习编码技能的借口。最终将其保存为文件,然后在启动时阅读它们,但这是将来的。

我让它询问我有什么枪,为上述枪剪辑,然后创建一个引用每枪的按钮。按下按钮后,FireGun应该采用与按下哪个按钮相对应的枪的值。但是,目前运行的方式是,所有枪支都从同一弹药金额中射击,这是最后一个"剪辑"输入的。

我需要每个按钮来跟踪自己的变量以更新FireGun上的正确字典参考。

from tkinter import *
addGuns = 'true'
gunList = {}

while (addGuns == 'true'):
    newGun = input("What is the name of your gun? ")
    clipSize = int(input("What is its clip size? "))
    gunList[newGun] = clipSize 
    gunCheck = input("Done adding guns? ")
    if (gunCheck == 'yes'):
        addGuns = 'false'
root = Tk()
root.title("Pew Pew")
def fireGun(x):
    startingAmmo = gunList[x]
    endingAmmo = startingAmmo - 1
    gunList[x] = endingAmmo
    print(gunList[x])
    return
for gun in gunList:
    button = Button(root, text = gun, command = lambda name = gun:fireGun(gun))
    button.pack()
root.mainloop()

使用部分使用命令=呼叫将参数发送到函数。您也可以使用条目获取枪支信息,并为每个枪的标签提供一个名称,并在每个标签上更新弹药金额。一个非常草率的例子(我必须去上班)。

from tkinter import *
from functools import partial
gunCheck="no"
gunList = {}
while gunCheck != 'yes':
    newGun = input("What is the name of your gun? ")
    clipSize = int(input("What is its clip size? "))
    gunList[newGun] = int(clipSize)
    gunCheck = input("----->Done adding guns? ")
##    if (gunCheck == 'yes'):
##        addGuns = 'false'
root = Tk()
root.title("Pew Pew")
def fireGun(x):
    startingAmmo = gunList[x]
    endingAmmo = startingAmmo - 1
    gunList[x] = endingAmmo
    print(gunList[x])
    label_list[x].config(text=x + "-->" + str(endingAmmo))
    return
label_list={}
fr=Frame(root)
fr.pack(side="top")
for gun in gunList:
    lab=Label(fr, text="%s --> %d" %(gun, gunList[gun]))
    lab.pack(side=TOP) 
    label_list[gun]=lab
    button = Button(root, text = gun, command = partial(fireGun, gun))
    button.pack()
root.mainloop()

最新更新