Всегда возвращать последнее изображение в Label - PullRequest
0 голосов
/ 08 мая 2020

Я делаю записку на веб-сайте для частного игрового сервера, используя Python. В части этого веб-сайта напечатан результат последнего победителя национальной войны и показаны 2 сообщения: "Capella Ganhou!!" и "Procyon Ganhou!!" с использованием библиотеки BeautfulSoup. Я поставил условие для каждого события показывать изображение страны-победителя в ярлыке по URL-адресу. Но по какой-то причине он всегда показывает последний URL-адрес изображения, и я не знаю, что происходит. Вот код ниже:

from tkinter import *
import urllib.request
from bs4 import BeautifulSoup
from IPython.display import Image, display
from PIL import Image, ImageTk
from io import BytesIO

def capella_tg():
    resultado_tg = StringVar()
    try:
        resultado_tg.set(soup.find_all("font")[5].string)
        label_resultado_tg = Label(root, textvariable=resultado_tg, font=("Consolas", 25)).pack()
    except:
        return False

def procyon_tg():
    resultado_tg = StringVar()
    try:
        resultado_tg.set(soup.find_all("font")[4].string[3:])
        label_resultado_tg = Label(root, textvariable=resultado_tg, font=("Consolas", 25)).pack()
    except:
        return False

root = Tk()
root.title("Resultado TG Cabal Ghost")

with urllib.request.urlopen("http://www.cabaleasy.com") as url: page = url.read()
soup = BeautifulSoup(page, "html.parser")

if capella_tg():
    url = "https://i.imgur.com/AHLqtt0.jpg"    
    with urllib.request.urlopen(url) as u: raw_data = u.read()        
    im = Image.open(BytesIO(raw_data))
    image = ImageTk.PhotoImage(im)
    label = Label(image=image).pack()
else:
    procyon_tg()
    url = "https://i.imgur.com/TQyCnfD.jpg"    
    with urllib.request.urlopen(url) as u: raw_data = u.read()        
    im = Image.open(BytesIO(raw_data))
    image = ImageTk.PhotoImage(im)
    label = Label(image=image).pack()


root.mainloop()
...