英文:
Jupyter script with images for standalone
问题
以下是您要翻译的代码部分:
import tkinter as tk
from PIL import Image, ImageTk
while True:
name = input("\nWhat is your name? ")
print(f'\nNice to meet you {name}')
age = input("\nHow old are you? ")
age = int(age)
if age >= 40:
# Open the "old" image
image = Image.open(r'old.jpg')
else:
# Open the "young" image
image = Image.open(r'young.jpg')
# Convert the image to a PhotoImage object
photo_image = ImageTk.PhotoImage(image)
# Create a Tkinter window
root = tk.Tk()
# Create a label and set the image as its background
label = tk.Label(root, image=photo_image)
label.pack()
# Run the Tkinter event loop
root.mainloop()
exit_prompt = input("\nEnter 'exit' to close the script, or press Enter to continue: ")
if exit_prompt == "exit":
break
请注意,我已经移除了代码中的HTML实体编码,以使其更加清晰。如果您需要任何进一步的帮助,请告诉我。
英文:
New to python created a very simple script but seem to be running into issues with images.
I want to take this script and create a standalone.
However when I did it originally without tkinter or imagetk the file would open and close immediately so I tried this.
You can see the error messages I get below the code.
> <sub>`import tkinter as tk from PIL import Image, ImageTk
>
> while True:
> name = input("\nWhat is your name? ")
>
> print(f'\nNice to meet you {name}')
>
> age = input("\nHow old are you? ")
> age = int(age)
> if age >= 40:
> # Open the "old" image
> image = Image.open(r'old.jpg')
> else:
> # Open the "young" image
> image = Image.open(r'young.jpg')
>
> # Convert the image to a PhotoImage object
> photo_image = ImageTk.PhotoImage(image)
>
> # Create a Tkinter window
> root = tk.Tk()
>
> # Create a label and set the image as its background
> label = tk.Label(root, image=photo_image)
> label.pack()
>
> # Run the Tkinter event loop
> root.mainloop()
>
> exit_prompt = input("\nEnter 'exit' to close the script, or press Enter to continue: ")
> if exit_prompt == "exit":
> break
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_986051054611.py in <module>
17
18 # Convert the image to a PhotoImage object
---> 19 photo_image = ImageTk.PhotoImage(image)
20
21 # Create a Tkinter window
~\anaconda3\lib\site-packages\PIL\ImageTk.py in __init__(self, image, size, **kw)
138 self.__mode = mode
139 self.__size = size
--> 140 self.__photo = tkinter.PhotoImage(**kw)
141 self.tk = self.__photo.tk
142 if image:
~\anaconda3\lib\tkinter\__init__.py in __init__(self, name, cnf, master, **kw)
4062 Valid resource names: data, format, file, gamma, height, palette,
4063 width."""
-> 4064 Image.__init__(self, 'photo', name, cnf, master, **kw)
4065
4066 def blank(self):
~\anaconda3\lib\tkinter\__init__.py in __init__(self, imgtype, name, cnf, master, **kw)
3995 self.name = None
3996 if not master:
-> 3997 master = _get_default_root('create image')
3998 self.tk = getattr(master, 'tk', master)
3999 if not name:
~\anaconda3\lib\tkinter\__init__.py in _get_default_root(what)
295 if not _default_root:
296 if what:
--> 297 raise RuntimeError(f"Too early to {what}: no default root window")
298 root = Tk()
299 assert _default_root is root
RuntimeError: Too early to create image: no defa
ult root window`</sub>
答案1
得分: 0
I think you only need to call image.show()
after image
is opened if you want to show it.
英文:
I think you only need to call image.show()
after image
is opened if you want to show it.
from PIL import Image
while True:
name = input("\nWhat is your name? ")
print(f'\nNice to meet you {name}')
age = input("\nHow old are you? ")
age = int(age)
if age >= 40:
# Open the "old" image
image = Image.open(r'old.jpg')
else:
# Open the "young" image
image = Image.open(r'young.jpg')
image.show()
答案2
得分: 0
以下是您要翻译的内容:
一旦这个问题被修复,我遇到了以下错误:
> --------------------------------------------------------------------------- TclError Traceback (most recent call
> last) ~\AppData\Local\Temp\ipykernel_11772\4142766009.py in <module>
> 26
> 27 # Create a label and set the image as its background
> ---> 28 label = tk.Label(root, image=photo_image)
> 29 label.image = photo_image # Keep a reference to the PhotoImage object
> 30 label.pack()
>
> ~\anaconda3\lib\tkinter_init_.py in init(self, master, cnf,
> **kw) 3146 3147 """
> -> 3148 Widget.init(self, master, 'label', cnf, kw) 3149 3150
>
> ~\anaconda3\lib\tkinter_init_.py in init(self, master,
> widgetName, cnf, kw, extra) 2570 for k, v in classes:
> 2571 del cnf[k]
> -> 2572 self.tk.call( 2573 (widgetName, self._w) + extra + self._options(cnf)) 2574 for k, v in
> classes:
>
> TclError: image "pyimage28" doesn't exist
我尝试通过存储图像来修复它:
> import tkinter as tk from tkinter import PhotoImage from PIL import
> Image, ImageTk
>
> while True:
> name = input("\nWhat is your name? ")
> print(f'\nNice to meet you {name}')
>
> age = input("\nHow old are you? ")
> age = int(age)
> if age >= 40:
> # Open the "old" image
> image = Image.open(r'old.jpg')
> else:
> # Open the "young" image
> image = Image.open(r'young.jpg')
>
> # Convert the image to a PhotoImage object
> photo_image = PhotoImage(image)
>
> # Create a Tkinter window
> root = tk.Tk()
>
> # Create a label and set the image as its background
> label = tk.Label(root, image=photo_image)
> label.image = photo_image # Keep a reference to the PhotoImage object
> label.pack()
>
> # Run the Tkinter event loop
> root.mainloop()
>
> exit_prompt = input("\nEnter 'exit' to close the script, or press Enter to continue: ")
> if exit_prompt == "exit":
> break
英文:
Once that issue was fixed I was getting the following error:
> --------------------------------------------------------------------------- TclError Traceback (most recent call
> last) ~\AppData\Local\Temp\ipykernel_11772\4142766009.py in <module>
> 26
> 27 # Create a label and set the image as its background
> ---> 28 label = tk.Label(root, image=photo_image)
> 29 label.image = photo_image # Keep a reference to the PhotoImage object
> 30 label.pack()
>
> ~\anaconda3\lib\tkinter_init_.py in init(self, master, cnf,
> **kw) 3146 3147 """
> -> 3148 Widget.init(self, master, 'label', cnf, kw) 3149 3150
>
> ~\anaconda3\lib\tkinter_init_.py in init(self, master,
> widgetName, cnf, kw, extra) 2570 for k, v in classes:
> 2571 del cnf[k]
> -> 2572 self.tk.call( 2573 (widgetName, self._w) + extra + self._options(cnf)) 2574 for k, v in
> classes:
>
> TclError: image "pyimage28" doesn't exist
I tried fixing it by storing the image:
> import tkinter as tk from tkinter import PhotoImage from PIL import
> Image, ImageTk
>
> while True:
> name = input("\nWhat is your name? ")
> print(f'\nNice to meet you {name}')
>
> age = input("\nHow old are you? ")
> age = int(age)
> if age >= 40:
> # Open the "old" image
> image = Image.open(r'old.jpg')
> else:
> # Open the "young" image
> image = Image.open(r'young.jpg')
>
> # Convert the image to a PhotoImage object
> photo_image = PhotoImage(image)
>
> # Create a Tkinter window
> root = tk.Tk()
>
> # Create a label and set the image as its background
> label = tk.Label(root, image=photo_image)
> label.image = photo_image # Keep a reference to the PhotoImage object
> label.pack()
>
> # Run the Tkinter event loop
> root.mainloop()
>
> exit_prompt = input("\nEnter 'exit' to close the script, or press Enter to continue: ")
> if exit_prompt == "exit":
> break
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论