python - tkinter:创建的图像不出现
问题描述
我正在用python创建一个纸牌游戏。我想创建一个在 tkinter 窗口中显示图片但没有图像出现的函数。我将所有图片文件放在正确的位置。
这是我的代码:
from tkinter import*
root = Tk()
pictures = ['1C kopiera.gif', '1D kopiera.gif', '1H kopiera.gif', '1S kopiera.gif',
'2C kopiera. gif', '2D kopiera.gif', '2H kopiera.gif', '2S kopiera.gif',
'3C kopiera.gif','3D kopiera.gif', '3H kopiera.gif', '3S kopiera.gif',
'4C kopiera.gif', '4D kopiera.gif', '4H kopiera.gif', '4S kopiera.gif',
'5C kopiera.gif', '5D kopiera.gif', '5H kopiera.gif', '5S kopiera.gif',
'6C kopiera.gif', '6D kopiera.gif', '6H kopiera.gif', '6S kopiera.gif',
'7C kopiera.gif', '7D kopiera.gif', '7H kopiera.gif', '7S kopiera.gif',
'8C kopiera.gif', '8D kopiera.gif', '8H kopiera.gif', '8S kopiera.gif',
'9C kopiera.gif', '9D kopiera.gif', '9H kopiera.gif', '9S kopiera.gif',
'10C kopiera.gif', '10D kopiera.gif', '10H kopiera.gif',
'10S kopiera.gif', '11C kopiera.gif', '11D kopiera.gif',
'11S kopiera.gif', '11h kopiera.gif', '12C kopiera.gif',
'12D kopiera.gif', '12H kopiera.gif', '12S kopiera.gif',
'13C kopiera.gif', '13D kopiera.gif', '13H kopiera.gif',
'13S kopiera.gif']
C = Canvas(root, width=1300, height=750, bg="dark green")
C.grid(column=0, row=1, columnspan=20)
root.title("Black Jack")
def create_image():
gif = PhotoImage(file=""
+ "/Users/ivanwahlund/PycharmProjects/yeboi/5C kopiera.gif")
C.create_image(400, 350, image=gif)
create_image()
root.mainloop()
解决方案
您的 gif 对象是一个局部变量。使其成为全局,图像将显示。
通常您应该保存对图像的引用。
from tkinter import*
root = Tk()
pictures =['1C kopiera.gif', '1D kopiera.gif', '1H kopiera.gif', '1S kopiera.gif', '2C kopiera. gif', '2D kopiera.gif', '2H kopiera.gif', '2S kopiera.gif', '3C kopiera.gif','3D kopiera.gif', '3H kopiera.gif', '3S kopiera.gif', '4C kopiera.gif', '4D kopiera.gif', '4H kopiera.gif', '4S kopiera.gif', '5C kopiera.gif', '5D kopiera.gif', '5H kopiera.gif', '5S kopiera.gif', '6C kopiera.gif', '6D kopiera.gif', '6H kopiera.gif', '6S kopiera.gif', '7C kopiera.gif', '7D kopiera.gif', '7H kopiera.gif', '7S kopiera.gif', '8C kopiera.gif', '8D kopiera.gif', '8H kopiera.gif', '8S kopiera.gif', '9C kopiera.gif', '9D kopiera.gif', '9H kopiera.gif', '9S kopiera.gif','10C kopiera.gif', '10D kopiera.gif', '10H kopiera.gif', '10S kopiera.gif', '11C kopiera.gif', '11D kopiera.gif', '11S kopiera.gif', '11h kopiera.gif', '12C kopiera.gif', '12D kopiera.gif', '12H kopiera.gif', '12S kopiera.gif', '13C kopiera.gif', '13D kopiera.gif', '13H kopiera.gif', '13S kopiera.gif']
C = Canvas(root, width=1300, height=750, bg="dark green")
C.grid(column=0, row=1, columnspan=20)
root.title("Black Jack")
def create_image():
global gif # make it global else out of scope
gif = PhotoImage(file="earth.gif")
C.create_image(400, 350, image=gif)
C.grid(column=0, row=1, columnspan=20)
create_image()
root.mainloop()
推荐阅读
- python-3.x - Scrapy - 自定义爬虫,尽管爬虫启动成功,但爬取为零
- c++ - 如何从立方体纹理中检索 6 个面
- r - 有没有更有效的方法来从客户投资组合中计算每月投资组合价值?
- mongodb - 集合内的MongoDB jsonarray长度
- bash - 如何在 bash 中使用 jq 迭代 JSON 内容
- unity3d - 如何在鼠标悬停统一 UI 上放大扇形菜单(仅在菜单的饼形上,而不是方形图像上)?
- reactjs - 从 firebase 成功删除项目后出现错误
- javascript - windows.location 不适用于我重定向到另一个 html 文件
- css - 我可以使用 perl 的 Parse::RecDescent 就地解析文件吗?
- java - 如何修复“FFmpeg 无法就地编辑现有文件。”-Java 中的问题