2013-04-14 8 views
2

J'ai besoin d'aide sur ce programme, ce programme devrait ouvrir l'image dans la nouvelle fenêtre tkinter en cliquant sur le bouton, mais il ne s'ouvre pas simplement une nouvelle fenêtre sans image. Où est le problème?Image dans la fenêtre tkinter en cliquant sur le bouton

utilisant: python 3.3 et tkinter

Ce programme est:

import sys 
from tkinter import * 


def button1(): 
    novi = Toplevel() 
    canvas = Canvas(novi, width = 300, height = 200) 
    canvas.pack(expand = YES, fill = BOTH) 
    gif1 = PhotoImage(file = 'image.gif') 
    canvas.create_image(50, 10, visual = gif1, anchor = NW) 


mGui = Tk() 
button1 = Button(mGui,text ='Sklop',command = button1, height=5, width=20).pack() 

mGui.mainloop() 

Répondre

5

create_image a besoin d'un argument image, non visual d'utiliser l'image, donc au lieu de visual = gif1, vous avez besoin image = gif1. Le problème suivant est que vous devez stocker la référence gif1 quelque part, sinon elle sera récupérée et tkinter ne pourra plus l'utiliser.

donc quelque chose comme ceci:

import sys 
from tkinter import * #or Tkinter if you're on Python2.7 

def button1(): 
    novi = Toplevel() 
    canvas = Canvas(novi, width = 300, height = 200) 
    canvas.pack(expand = YES, fill = BOTH) 
    gif1 = PhotoImage(file = 'image.gif') 
           #image not visual 
    canvas.create_image(50, 10, image = gif1, anchor = NW) 
    #assigned the gif1 to the canvas object 
    canvas.gif1 = gif1 


mGui = Tk() 
button1 = Button(mGui,text ='Sklop',command = button1, height=5, width=20).pack() 

mGui.mainloop() 

Il est aussi probablement pas une bonne idée de nommer votre Button le même nom que la fonction button1, ça va juste causer de la confusion plus tard.

+0

OK, merci beaucoup! ;) – TheQuiteStupidMan

Questions connexes