У меня возникли проблемы с устранением ошибки конкатенации, когда она присутствует в окне Tkinter. Я пытался использовать несколько методов, но они не сработали с тем, что я пытаюсь сделать. Я пытаюсь сделать так, чтобы при нажатии кнопки Tkinter он случайным образом выбирал значение от 0 до 100. Если случайное значение меньше или равно 70, и «Хороший парень», и «Плохой парень». "ухудшится их здоровье. Но если оно больше 70, Хороший парень получит только урон. Затем он печатал их новые хп в окно.
from random import randrange
class App5(tk.Toplevel):
def __init__(self, title: str):
super().__init__()
self.title(title)
self.style = ttk.Style(self)
self.style.theme_use("classic")
self.geometry("490x250")
self.tres_label = ttk.Label(
self,
text = "Oh yeah, also while you were doing that, I enrolled you into a tournament. \nHave fun........what? Why did I sign you up for a tournament you didn't ask for? \nTo increase the total run time on this project.",
)
self.tres_label.grid(row=0, column=0, padx=5, pady=5)
self.rng_button = ttk.Button(self, text = "Click Me", command=self.rng)
self.rng_button.grid(row=2, column=0, padx=5, pady=5)
def rng(self):
class Character:
def __init__(self, name: str, hp: int, damage: int):
self.name = name
self.hp = hp
self.damage = damage
Goodguy = Character("Goodguy", 300, 75)
Badguy = Character("Badguy", 375, 25)
score = 70
num = randrange(0, 100)
G = Goodguy.hp - Badguy.damage
B = Badguy.hp - Goodguy.damage
if num >= score:
Goodguy.hp - Badguy.damage
Badguy.hp - Goodguy.damage
self.good = ttk.Label(self, text = "Goodguy Hp:" + G)
self.good.grid(row=3, column=3)
self.bad = ttk.Label(self, text = "BadGuy Hp:" + B)
self.bad.grid(row=3, column=6)
B = B - Goodguy.damage
G = G - Badguy.damage
else:
Goodguy.hp - Badguy.damage
self.good = ttk.Label(self, text = "Goodguy Hp:" + G)
self.good.grid(row=3, column=3)
self.bad = ttk.Label(self, text = "BadGuy Hp:" + B)
self.bad.grid(row=3, column=6)
B = B - Goodguy.damage
G = G - Badguy.damage






я подозреваю, что проблема здесь:
self.good = ttk.Label(self, text = "Goodguy Hp:" + G)
какой тип Г? если это int, вы не можете сложить их вместе, как вы пытаетесь сделать, вам нужно изменить его на text = "Goodguy Hp: " + str(G) или использовать f-строку, как упоминалось @AKX
попробуйте изменить это выражение во всех четырех местах
может только конкатенировать str (не "int") в str
говорит вам, в чем именно заключается ошибка (и трассировка, которую вы все равно должны были добавить в свой исходный вопрос, точно указала бы, где именно).
Проблема в том, что вы не можете «суммировать» строку и целое число. Вместо этого используйте форматирование строки:
"Goodguy Hp:" + G
станет
f"Goodguy Hp:{G}"
используя форматирование f-строки.
То же самое относится и к другим ярлыкам хороших и плохих парней.
В python вы не можете объединить целое число и строку. Если вы попытаетесь это сделать, это приведет к следующей ошибке, которую вы получили:
can only concatenate str (not "int") to str
Проблемы будут в следующих блоках кода:
"Goodguy Hp:" + G
и
"BadGuy Hp:" + B
Чтобы решить эту проблему, Вы можете использовать предоставленные решения @AKX и @vencaslac или использовать оператор %d:
"Goodguy Hp: %d" % G
"Badguy Hp: %d" % B