我正在尝试在 Python 中编写纸牌游戏代码并想要放置图像,但该图像不会出现在 Tkinter 中的 canvas 上
I am attempting to code a card game in Python and want to place an image, but the image wont appear on the canvas in Tkinter
from Tkinter import *
frame = Tk()
frame.geometry("1200x900")
w = Canvas(frame,width=250,height=450)
w.place(x=30,y=300)
img=PhotoImage(file="card2.ppm")
w.create_image(100,100,anchor=NW,image=img)
frame.mainloop()
PhotoImage class 可以从文件中读取 GIF 和 PGM/PPM 图像:
photo = PhotoImage(file="image.gif")
photo = PhotoImage(file="lenna.pgm")
PhotoImage 还可以从字符串中读取 base64 编码的 GIF 文件。您可以使用它在 Python 源代码中嵌入图像(使用 base64 模块中的函数将二进制数据转换为 base64 编码的字符串):
photo = """
R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQY GBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZ GRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
...
AfjHtq1bAP/i/gPwry4AAP/yAtj77x+Af4ABAwDwrzAAAP8S
A /j3DwCAfwAA/JsM4J/lfwD+/QMA
4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs=
"""
photo = PhotoImage(data=photo)
如果您需要使用其他文件格式,Python 图像库 (PIL) 包含 class 允许您加载超过 30 种格式的图像,并将它们转换为 Tkinter 兼容格式图片对象:
from PIL import Image, ImageTk
image = Image.open("lenna.jpg")
photo = ImageTk.PhotoImage(image)
您可以在 Tkinter 接受图像对象的任何地方使用 PhotoImage 实例。一个例子:
label = Label(image=photo)
label.image = photo # keep a reference!
label.pack()
您必须在 Python 程序中保留对图像对象的引用,方法是将其存储在全局变量中,或将其附加到另一个对象。
尝试 运行:
import Tkinter as tk
root = tk.Tk()
root.title("display a website image")
photo = tk.PhotoImage(file=
r "C:\Some\Local\location\smile.ppm")
cv = tk.Canvas()
cv.pack(side='top', fill='both', expand='yes')
cv.create_image(10, 10, image=photo, anchor='nw')
root.mainloop()
如果这不起作用,请尝试添加参考
from Tkinter import *
frame = Tk()
frame.geometry("1200x900")
w = Canvas(frame,width=250,height=450)
w.place(x=30,y=300)
img=PhotoImage(file="card2.ppm")
w.create_image(100,100,anchor=NW,image=img)
frame.mainloop()
PhotoImage class 可以从文件中读取 GIF 和 PGM/PPM 图像:
photo = PhotoImage(file="image.gif")
photo = PhotoImage(file="lenna.pgm")
PhotoImage 还可以从字符串中读取 base64 编码的 GIF 文件。您可以使用它在 Python 源代码中嵌入图像(使用 base64 模块中的函数将二进制数据转换为 base64 编码的字符串):
photo = """
R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQY GBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZ GRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
...
AfjHtq1bAP/i/gPwry4AAP/yAtj77x+Af4ABAwDwrzAAAP8S
A /j3DwCAfwAA/JsM4J/lfwD+/QMA
4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs=
"""
photo = PhotoImage(data=photo)
如果您需要使用其他文件格式,Python 图像库 (PIL) 包含 class 允许您加载超过 30 种格式的图像,并将它们转换为 Tkinter 兼容格式图片对象:
from PIL import Image, ImageTk
image = Image.open("lenna.jpg")
photo = ImageTk.PhotoImage(image)
您可以在 Tkinter 接受图像对象的任何地方使用 PhotoImage 实例。一个例子:
label = Label(image=photo)
label.image = photo # keep a reference!
label.pack()
您必须在 Python 程序中保留对图像对象的引用,方法是将其存储在全局变量中,或将其附加到另一个对象。
尝试 运行:
import Tkinter as tk
root = tk.Tk()
root.title("display a website image")
photo = tk.PhotoImage(file=
r "C:\Some\Local\location\smile.ppm")
cv = tk.Canvas()
cv.pack(side='top', fill='both', expand='yes')
cv.create_image(10, 10, image=photo, anchor='nw')
root.mainloop()
如果这不起作用,请尝试添加参考