2017-10-01 2 views
0

私は自分のローカルRogue Traderキャンペーンで弾丸を追跡するための基本的なPythonプログラムを構築しています。私は書き込みが嫌い - 消去 - 私のシートに書き換え、それは汚れやグロスを残しています。これは私のコーディングスキルを実践する言い訳になります。最終的には値をファイルに保存し、起動時に値を読み取るようにしますが、それは将来です。別々の値をトラッキングするためのボタンを分ける[python]

私はそれが私が持っている銃を頼んで、その銃のクリップサイズを設定し、各銃を参照するボタンを作成します。ボタンを押すと、fireGunはどのボタンが押されたかに対応するガンショットの値をとることになっています。しかし、現在実行されている方法では、最後の 'clipSize'である同じ弾薬量からすべての銃砲が発射されます。

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() 

答えて

0

command = callを使用して関数にパラメータを送信するには、partialを使用します。また、エントリーを使用して銃情報を取得し、各銃の名前と各ラベルの弾薬量が更新された銃のラベルを1つずつ使用することもできます。非常にお粗末な例(私は仕事に行く必要があります)。

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() 
+0

Ooooh。驚くばかり。私はまだPythonを学んでいます。だから%()と部分的なことは私には新しいものです。常にもっと学ぶこと。 –

関連する問題