Pillow & Tkinter не показывает PNG с прозрачностью - PullRequest
0 голосов
/ 06 марта 2019

Мое приложение недавно работало нормально, но когда я обновил Python до версии 3.7.2, что решило другую проблему, с которой я столкнулся, изображения больше не отображаются или имеют низкое качество.

После некоторого тестирования я пришел к выводу, что могу отображать любой PNG без прозрачности, но PNG с прозрачностью демонстрируют эту проблему. Я могу воссоздать его с помощью этого кода:

import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()
path = 'png-transparent.png'
img = Image.open(path)
imgtk = ImageTk.PhotoImage(img)
panel = tk.Label(root, image=imgtk).pack()
root.mainloop()

Если я использую метку для отображения изображения, оно вообще не отображается. Если я использую кнопку для отображения изображения, а это то, что мне действительно нужно, это плохое качество (что означает неправильное отображение, отсутствие четкости, грубые края).

Они очень маленькие (16x16), но вы можете увидеть здесь две разные иконки: те, что в коробках, - искаженные, а те, которых нет в коробках, - то, как они должны выглядеть.

Bin-distorted Bin-normal Plus-distorted Plus-normal

Текущие версии: Python 3.7.2, Подушка 5.4.1, OS X 10.13.6

...