#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() Результат:
Комментариев нет:
Отправить комментарий