在Python中打开JPEG图像
使用以下代码在Python2.7中打开jpeg图像时遇到问题在Python中打开JPEG图像,python,image,jpeg,Python,Image,Jpeg,使用以下代码在Python2.7中打开jpeg图像时遇到问题 import Tkinter as tk from PIL import ImageTk, Image path = 'C:/Python27/chart.jpg' root = tk.Tk() img = ImageTk.PhotoImage(Image.open(path)) panel = tk.Label(root, image = img) panel.pack(side = "bottom", fill = "both
import Tkinter as tk
from PIL import ImageTk, Image
path = 'C:/Python27/chart.jpg'
root = tk.Tk()
img = ImageTk.PhotoImage(Image.open(path))
panel = tk.Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
jpeg打开得很好,但随后代码停止运行。我想在程序中间打开JPEG,但是一旦图像打开,剩下的代码就不会被执行。
我还尝试使用下面的代码打开jpeg,但只得到错误“没有模块命名图像”。我已经安装了PIL,它是正确的2.7版本
import Image
image = Image.open('File.jpg')
image.show()
任何帮助都将不胜感激 Tkinter是单螺纹的。
root.mainloop
调用进入负责显示和更新所有图形元素、处理用户事件等的GUI循环,直到图形应用程序退出。主循环退出后,您将无法再以图形方式更新任何内容
因此,您可能需要重新考虑程序的设计。在主循环旁边运行自己的代码有两个选项:
选项1:在单独的线程中运行代码
在进入主循环之前,生成一个线程,该线程将运行您自己的代码
...
def my_code(message):
time.sleep(5)
print "My code is running"
print message
my_code_thread = threading.Thread(target= my_code, args=("From another thread!"))
my_code_thread.start()
root.mainloop()
选项2:使用Tk.after
root.after_idle(my_code) #will run my_code as soon as it can
root.mainloop()
警告
mainloop负责使GUI可用的所有相关工作。当您的代码在mainloop线程内运行时(使用root.after\u idle或root.after进行调度),GUI将完全无响应(冻结),因此请确保您没有使用长时间运行的操作加载mainloop。在单独的线程中运行这些线程,如选项1所示
基本上,主线程必须运行主循环,并且您的代码只能使用上面列出的方法并发运行,因此很遗憾,您可能必须重新构造整个程序。您需要从PIL导入图像
。