Skip to content

Commit c69ad03

Browse files
committed
Remove legacy 1-bit api, fix AttributeError
PytestUnraisableExceptionWarning: Exception ignored in: <function PhotoImage.__del__> AttributeError: 'PhotoImage' object has no attribute '_PhotoImage__photo'
1 parent 7435a06 commit c69ad03

File tree

1 file changed

+5
-23
lines changed

1 file changed

+5
-23
lines changed

src/PIL/ImageTk.py

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,6 @@
3535
# --------------------------------------------------------------------
3636
# Check for Tkinter interface hooks
3737

38-
_pilbitmap_ok = None
39-
40-
41-
def _pilbitmap_check() -> int:
42-
global _pilbitmap_ok
43-
if _pilbitmap_ok is None:
44-
try:
45-
im = Image.new("1", (1, 1))
46-
tkinter.BitmapImage(data=f"PIL:{im.im.id}")
47-
_pilbitmap_ok = 1
48-
except tkinter.TclError:
49-
_pilbitmap_ok = 0
50-
return _pilbitmap_ok
51-
5238

5339
def _get_image_from_kw(kw: dict[str, Any]) -> ImageFile.ImageFile | None:
5440
source = None
@@ -142,6 +128,8 @@ def __init__(
142128
self.paste(image)
143129

144130
def __del__(self) -> None:
131+
if not hasattr(self, "__photo"):
132+
return
145133
name = self.__photo.name
146134
self.__photo.name = None
147135
try:
@@ -225,17 +213,11 @@ def __init__(self, image: Image.Image | None = None, **kw: Any) -> None:
225213
self.__mode = image.mode
226214
self.__size = image.size
227215

228-
if _pilbitmap_check():
229-
# fast way (requires the pilbitmap booster patch)
230-
image.load()
231-
kw["data"] = f"PIL:{image.im.id}"
232-
self.__im = image # must keep a reference
233-
else:
234-
# slow but safe way
235-
kw["data"] = image.tobitmap()
236-
self.__photo = tkinter.BitmapImage(**kw)
216+
self.__photo = tkinter.BitmapImage(data=image.tobitmap(), **kw)
237217

238218
def __del__(self) -> None:
219+
if not hasattr(self, "__photo"):
220+
return
239221
name = self.__photo.name
240222
self.__photo.name = None
241223
try:

0 commit comments

Comments
 (0)