首页 > 解决方案 > 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()

标签: pythonpython-3.xtkintertkinter-canvas

解决方案


您的 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()

推荐阅读