2017-10-01 3 views
0

Ich erstelle ein rudimentäres Python-Programm zur Verfolgung von Kugelfeuern in meiner lokalen Rogue Trader-Kampagne. Ich hasse es zu schreiben - zu löschen - neu zu schreiben auf meinem Blatt und es verschmiert und ekelhaft. Das gibt mir eine Ausrede, um meine Programmierkenntnisse zu üben. Irgendwann wird es Werte in einer Datei speichern und sie dann beim Start lesen, aber das ist in der Zukunft.Getrennte Schaltflächen zum Verfolgen separater Werte [python]

Ich lasse es fragen, welche Waffen ich habe, setze eine clipSize für besagte Pistole und erstelle dann einen Knopf, der auf jede Waffe verweist. Nach dem Drücken der Taste, soll FireGun den Wert des Schusses entsprechend der gedrückten Taste übernehmen. Wie auch immer es derzeit läuft, feuern alle Geschütze aus der gleichen Munitionsmenge, die die letzte eingegebene "clipSize" ist.

Ich brauche jede Taste, um ihre eigene Variable zu verfolgen, um die korrekte Wörterbuchreferenz nach fireGun zu aktualisieren.

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

Antwort

0

Verwenden Sie partiell, um Parameter an eine Funktion mit einem Befehl = Aufruf zu senden. Sie können auch einen Eintrag verwenden, um die Waffeninformationen und ein Etikett für jede Waffe mit dem Namen und der aktualisierten Munitionsmenge auf jedem Etikett zu erhalten. Ein sehr schlampiges Beispiel (ich muss zur Arbeit gehen).

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. Genial. Ich lerne immer noch Python. Also sind die%() und teilweise neue Dinge für mich. Immer mehr zu lernen. –

Verwandte Themen