Страницы

Поиск по вопросам

среда, 22 января 2020 г.

Вывод белого пустого места, вместо картинки

#python #python_3x #tkinter


Начал изучать возможности питона 3.6 и столкнулся с такой проблемой. 
Если я хочу открыть фотку из программы, то она корректно открывается. Если из функции
то вместо фотки отображается только белый прямоугольник. 
Может кто помочь?

from tkinter import *
import json
import string
from PIL import ImageTk, Image
import requests
import urllib.request, io
root=Tk()
root.title("Join")
root.geometry("1000x1000")
root.configure(background='grey')
text1=Text(root,height=7,width=7,font='Arial 14',wrap=WORD)
text1.pack()
button1=Button(root,text='ok',width=25,height=5,bg='black',fg='red', 
font='arial 14')
button1.pack()
def leftclick(event):
 l=text1.get('1.0',END)
 pay={'q':l}
 r=requests.get("https://api.vk.com/method/photos.search?v=5.64",params=pay)
 l = r.json()
 print (l["response"]["items"])
 URL=l["response"]["items"][0]["photo_130"]
 with urllib.request.urlopen(URL) as url:
      f = io.BytesIO(url.read())
 img1 = Image.open(f)
 img = ImageTk.PhotoImage(img1)
 panel = Label(root, image=img)
 panel.pack()
 button1.bind('', leftclick)
 root.mainloop()

    


Ответы

Ответ 1



Вот так катит) panel.mainloop() добавьте в функцию from tkinter import * import json import string from PIL import ImageTk, Image import requests from time import sleep root = Tk() root.title("Join") root.geometry("500x500") root.configure(background='grey') def img_load(event): r = requests.get("https://api.vk.com/method/photos.search?v=5.64") l = r.json() #print (l["response"]["items"]) URL=l["response"]["items"][0]["photo_130"] print(URL) r1 = requests.get(URL) f = open('image.jpg','wb') f.write(r1.content) f.close() img = Image.open('image.jpg') image = ImageTk.PhotoImage(img) panel = Label(image=image) panel.pack() panel.mainloop() button = Button(root,text='ok',width=5,height=1,fg='red', font='arial 14') button.pack() button.bind('', img_load) root.mainloop()

Ответ 2



Добавлю и свою реализацию from tkinter import * root = Tk() root.title("Join") root.geometry("500x1000") root.configure(background='grey') text1 = Text(root, height=7, width=7, font='Arial 14', wrap=WORD) text1.pack() button1 = Button(root, text='Add new image', width=25, height=5, bg='black', fg='red', font='arial 14') button1.pack() def left_click(event): import requests rs = requests.get("https://api.vk.com/method/photos.search?v=5.64") img_urls = rs.json()["response"]["items"] # Перемешивает список import random random.shuffle(img_urls) url = img_urls[0]["photo_130"] rs = requests.get(url) import io bytes_io = io.BytesIO(rs.content) from PIL import ImageTk, Image img = Image.open(bytes_io) img = ImageTk.PhotoImage(img) panel = Label(root, image=img) panel.pack() panel.mainloop() button1.bind('', left_click) root.mainloop() Результат:

Комментариев нет:

Отправить комментарий