在函数中显示存储的图像

4

我正在开发一个Python程序,让用户发现新喀里多尼亚的艺术作品(它是太平洋上的一个法国小岛: ))。

我试图调用一个函数来存储一张图片。但经过几个小时的研究后,我发现了这个网页描述了我的问题。问题是Python会清除我的图片,因为我需要“保持对图像对象的额外引用。一个简单的方法就是将图像分配给一个部件属性。”我尝试着去做了,但因为我是初学者,我不太知道如何去做。

下面是我的脚本:

from tkinter import *

# Création de la fenêtre de menu
fenetre=Tk()
fenetre.title("ART'CAL")
Canevas=Canvas(fenetre, height=768,width=1346)
Canevas.pack()
# Insertion de l'image du menu
PhotoMenu = PhotoImage(file ='Diapositive1.gif')
Fond = Canevas.create_image(680, 350, image=PhotoMenu)

# Création de la fenêtre de règles du jeu
def Rules():
    fenetre=Tk()
    fenetre.title("Règles du jeu")
    CanevasRules=Canvas(fenetre, height=768,width=1346)
    CanevasRules.pack()
# Insertion de l'image des règles du jeu
    PhotoRules = PhotoImage(file ='Diapositive2.gif')
    Fond = CanevasRules.create_image(680, 350, anchor=CENTER, image=PhotoRules)
    Suivant = Button(CanevasRules, text="Suivant")
    Suivant.place(x=600, y=510)
    Suivant.config(font=('Product Sans',20,'bold'))

# Création et personnalisaton du bouton "Découvrir"
Decouvrir = Button(Canevas, text="Découvrir")
Decouvrir.place(x=600, y=510)
Decouvrir.config(font=('Product Sans',20,'bold'), command=Rules)

fenetre.mainloop()

一切正常,直到我按下“DECOUVRIR”(法语中的“发现”)。它没有显示任何图像。有人能帮助我并告诉我如何显示这张图片吗?

1个回答

1

需要修改两个问题: 首先,你不应该打开新的Tkinter根窗口(Tk()),为了打开一个新窗口,请使用Toplevel。 其次,为了“保存图像副本”,只需将其分配为新窗口的属性即可。

我希望这个修改后的代码能帮到你:

from tkinter import *

# Creation de la fenetre de menu
root=Tk()
root.title("ART'CAL")
Canevas=Canvas(root, height=768, width=1346)
Canevas.pack()
# Insertion de l'image du menu
PhotoMenu = PhotoImage(file ='Diapositive1.gif')
Fond = Canevas.create_image(680, 350, image=PhotoMenu)

# Creation de la fenetre de regles du jeu
def Rules():
    fenetre=Toplevel(root)  # open a new window using Toplevel
    fenetre.title("Regles du jeu")
    CanevasRules=Canvas(fenetre, height=768,width=1346)
    CanevasRules.pack()
    # Insertion de l'image des regles du jeu
    PhotoRules = PhotoImage(file ='Diapositive2.gif')
    Fond = CanevasRules.create_image(680, 350, anchor=CENTER, image=PhotoRules)
    Suivant = Button(CanevasRules, text="Suivant")
    Suivant.place(x=600, y=510)
    Suivant.config(font=('Product Sans',20,'bold'))
    fenetre.my_image = PhotoRules  # saving a copy of the image

# Creation et personnalisaton du bouton "Decouvrir"
Decouvrir = Button(Canevas, text="Decouvrir")
Decouvrir.place(x=600, y=510)
Decouvrir.config(font=('Product Sans',20,'bold'), command=Rules)

root.mainloop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,