Tkinter холст рисунок изображения - PullRequest
1 голос
/ 14 апреля 2020

У меня есть несколько меток на интерфейсе, и я хочу, чтобы изображение "arkaplan.pbm" отображалось на заднем плане. Я использую этот формат, потому что я заставил его работать с методом отображения изображения на этикетке, поэтому я предполагаю, что canvas может также поддерживать файл pbm.

До сих пор мне удавалось либо показывать метки, либо изображение, но не вместе. Я использовал ярлык, чтобы нарисовать изображение. Поэтому я переключился на метод canvas, но теперь я вообще не вижу изображения.

Я использую Python 3.7 и разрабатываю его на 7-дюймовом экране Raspberry Pi. Что я делаю не так?

from bs4 import BeautifulSoup
import requests
import time
from tkinter import * 
import tkinter.font 
from PIL import Image, ImageTk

country = "Turkey"
notification_duration = 10
refresh_time = 10 #minutes
data_check= []
worldmetersLink = "https://www.worldometers.info/coronavirus/"

win = tkinter.Tk() 
arkaplan_PIL = Image.open("/home/pi/Desktop/arkaplan.pbm")
arkaplan_image = ImageTk.PhotoImage(arkaplan_PIL)

def data_cleanup(array):
    L = []
    for i in array:
        i = i.replace("+","")
        i = i.replace("-","")
        i = i.replace(",",".")
        if i == "":
            i = "0"
        L.append(i.strip())
    return L

win.geometry('800x480') 
win.attributes('-fullscreen', True) 


while True:
    try:
        html_page = requests.get(worldmetersLink)
    except requests.exceptions.RequestException as e:
        print (e)
        continue
    bs = BeautifulSoup(html_page.content, 'html.parser')

    search = bs.select("div tbody tr td")
    start = -1
    for i in range(len(search)):
        if search[i].get_text().find(country) !=-1:
            start = i
            break
    data = []
    for i in range(1,8):
        try:
            data = data + [search[start+i].get_text()]
        except:
            data = data + ["0"]

    data= data_cleanup(data)



    if data_check != data:
        data_check = data
        toplam_vaka=data[0]
        toplam_vefat = data[2]
        toplam_taburcu = data[4]

        etiket1 = Label(win, text=(toplam_vaka),bg="white",fg="black",font = "Helvetica 26 bold italic")
        etiket1.place(x=500, y=200)

        etiket2 = Label(win, text=(toplam_vefat),bg="white",fg="black",font = "Helvetica 20 bold italic")
        etiket2.place(x=450, y=300) 

        etiket3 = Label(win, text = (toplam_taburcu),bg="white",fg="black",font = "Helvetica 20 bold italic")
        etiket3.place(x=600, y=300) 

        canv = Canvas(win, width=800, height=480, background="white")
        canv.create_image(800, 480, image = arkaplan_image)

        win.mainloop()
    else:
        time.sleep(refresh_time*60)
        continue
...