Отображение изображения, сохраненного в функции - PullRequest
0 голосов
/ 21 октября 2018

Я работаю над программой на 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()

Все работает нормально, пока я не нажмуДЕКУВРИР («Открой» на французском языке).Это не отображает ни одного изображения.Может кто-нибудь помочь мне и показать мне, как отобразить это изображение?

1 Ответ

0 голосов
/ 21 октября 2018

Две проблемы нуждаются в модификации: во-первых, вы не должны открывать новый корень 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...