Witam, otóż zrobiłem taką funkcje
def fight():
i = 1
global var_fightLog
currentHP = myChar.maxHP
monsterHP = monsterBeta.maxHP
while i > 0:
dmgCharDone = random.uniform(1.0, 1.5) * myChar.DMG
var_fightLog.set(f" Zadałeś {dmgCharDone}")
time.sleep(1)
monsterHP = monsterHP - dmgCharDone
dmgMonsDone = random.uniform(1.0, 1.5) * monsterBeta.DMG
var_fightLog.set(f" Monster zadał Ci {dmgMonsDone}")
time.sleep(1)
currentHP = currentHP - dmgMonsDone
if monsterHP < 0:
var_fightLog.set("wygrałeś")
break
if currentHP < 0:
var.fightLog.set("przegrałeś")
break
i = i + 1
Efekt funkcji jest takowy, że wyskakuje tylko komunikat "wygrałeś". Ja natomiast chciałem, aby wyskakiwała swojego typu relacja z walki.
Myślałem, że pomoże time.sleep ale to tylko przedłuża czas wykonywania funkcji, a zmiana stringu za pomocą set jest tylko na końcu - efekt końcowy "wygrałeś" bądź "przegrałeś"
Wiem, że trochę, źle zastosowałem if, ale to później zmienię, chodzi mi natomiast o to, czemu ten set nie działa "live".
Funckja, jest przypisana to przycisku "fight"
fightButton=tk.Button(mainFrame)
fightButton.config(command=fight, text="go")
fightButton.grid(column=6, row=1, padx=(10,10))
Gdy klikam, przycisk pozostaje "wciśnięty" dopóki funkcja nie zostanie skończona. Ja chciałem, aby tylko raz się naciskało i przycisk "wrócił" do swojej normalnej pozycji.
pozostałe rzeczy, jeśli to za mało:
var_fightLog = tk.StringVar()
var_fightLog.set("")
logsLabel=tk.Label(characterFrame)
logsLabel.config(textvariable=var_fightLog, borderwidth=0)
logsLabel.grid(column=5, row=5, padx=(10, 10), pady=(10,10))