【问题标题】:Drawing a png image on a tkinter canvas python在 tkinter 画布 python 上绘制 png 图像
【发布时间】:2018-03-05 10:11:37
【问题描述】:

我正在尝试使用画布小部件在python 3.5 中使用tkinter 创建一个简单的游戏。对于这个游戏,我需要能够使用透明(png)图像。这是我的代码:

from PIL import ImageTk
from tkinter import Tk, Canvas

root = Tk()
im = ImageTk.PhotoImage(file="test.png")
canvas = Canvas(root, width=900, height=900)
canvas.pack()
canvasImage = canvas.create_image(0, 0, image=im, anchor="nw")
root.mainloop()

问题是,尽管没有出现错误,但我无法加载具有透明背景的图像,但我可以加载没有透明背景的 png 图像。

【问题讨论】:

    标签: python-3.x canvas tkinter png tkinter-canvas


    【解决方案1】:

    你应该试试这个:

    from tkinter import * 
    root = Tk()
    canvas = Canvas(root, width=500, height=500)
    canvas.pack()
    img = PhotoImage(file='path/your_image.png')
    canvas.create_image(250, 250, image=img)
    root.mainloop()
    

    输出here

    【讨论】:

    • 不要使用通配符导入,而是使用import tkinter as tk
    • @Coal_ 在这种情况下,可以使用通配符导入;永远不要使用它不是一揽子规则。
    • 我同意你对这个特殊情况的看法,但是如果你需要一个可扩展的代码库并且有很多交叉依赖,那么通配符导入是很糟糕的。我的意思是,现在更容易忘记它们,而不是以后必须在每个对象前面加上 tk
    • 当我这样做时,我在控制台中得到 '_tkinter.TclError: could not identify data in image file "test.png"''。
    • @Mindstormer 尝试把你的图片的完整路径(如果图片在程序的目录下,你可以这样做import osimg = PhotoImage(file=os.getcwd()+'\your_image.png')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    相关资源
    最近更新 更多