#python
#python
Вопрос:
Я вызываю оператор if, и условие выполнено. Я пытаюсь заставить оператор if обновить изображение, однако это не работает, и я не уверен, почему.
attempts = 0
if attempts == 0:
Hangman = ImageTk.PhotoImage(Image.open("Images/Hangman0.png"))
Hangman = Label(image= Hangman)
Hangman.grid(row=0, column=0)
elif attempts == 1:
Hangman = ImageTk.PhotoImage(Image.open("Images/Hangman1.png"))
Hangman = Label(image= Hangman)
Hangman.grid(row=0, column=0)
def button_click(letter):
if letter not in word:
global attempts
print("Not in word")
guessed_letters.add(letter)
#Add to letters guess
attempts = attempts 1
print(attempts)
a = Button(window, text= "a", padx= 10, pady=10, bg= "black", fg= "white", font= ("none", 15), borderwidth=0, command =lambda: button_click("a"))
a.grid(row= 3, column=1)
Комментарии:
1. Вы не можете «вызвать»
if
оператор. Этот код находится вверху внутри функции? Если нет, то он будет выполняться только один раз в самом начале.2. Извините, поскольку при вызове я имел в виду, что попытки должны обновляться из функции button_click, которая затем вызовет оператор if, нет, код вверху не находится внутри функции. Как бы я мог убедиться, что попытки продолжают обновляться, вызывая изменение изображения?
3. Похоже, вы хотите превратить
if/elif
вверху в свою собственную функцию, которая вызывается изbutton_click()
сразу послеattempts = attempts 1
.4. хорошо, похоже, что если я помещу if /elif в функцию и вызову ее после попыток = atttempts 1 , это сработает. Однако он по-прежнему не изменяет изображение, и я не совсем уверен, что его вызывает у вас есть какие-либо идеи?
5. Возможно, вам потребуется использовать
global Hangman
в функции.
Ответ №1:
Ваш код ограничен, поэтому я немного предполагаю. Как упоминалось в комментариях, операторы if else не вызываются повторно при каждом attempts
изменении. Вам нужно поместить их в функцию и вызывать функцию каждый раз, когда attempts
обновляется.
Попробуйте это:
attempts = 0
def CheckAttempts():
global Hangman, attempts
if attempts == 0:
HangmanImg = ImageTk.PhotoImage(Image.open("Images/Hangman0.png"))
Hangman = Label(image= HangmanImg)
Hangman.grid(row=0, column=0)
elif attempts == 1:
HangmanImg = ImageTk.PhotoImage(Image.open("Images/Hangman1.png"))
Hangman = Label(image= HangmanImg)
Hangman.grid(row=0, column=0)
def button_click(letter):
if letter not in word:
global attempts
print("Not in word")
guessed_letters.add(letter)
#Add to letters guess
attempts = attempts 1
print(attempts)
CheckAttempts()
a = Button(window, text= "a", padx= 10, pady=10, bg= "black", fg= "white", font= ("none", 15), borderwidth=0, command =lambda: button_click("a"))
a.grid(row= 3, column=1)