Basics Tutorial python: método de python para conseguir imagens de exibição dinâmica em tkinter o rótulo

pequena hoje para que todos possam compartilhar um método python para conseguir imagens de exibição dinâmica em tkinter o rótulo, tem um bom valor de referência, nós queremos ajudar. Venha e veja, a seguir as pequenas séries juntos
na programação que tendem a querer ser capaz de realizar tal operação: clique no botão, escolher a imagem e, em seguida, etiqueta na janela para exibir a imagem selecionada. Então, desta vez precisamos o seguinte código:

from tkinter import *
from tkinter.filedialog import askopenfilename
  
def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_gif=Tkinter.PhotoImage(file='xxx.gif')
  l1.config(image=img_gif)
   
root=Tk()
path=StringVar()
Button(root,text='选择图片',command=choosepic).pack()
e1=Entry(root,state='readonly',text=path)
e1.pack()
l1=Label(root)
l1.pack()
root.mainloop

E porque tkinter só reconhece fotos formato GIF, se queremos adicionar imagens JPG ou PNG formato, então você deve pedir PIL para processamento. Este código de tempo é a seguinte:

from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image,ImageTk
  
def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_open = Image.open(e1.get())
  img=ImageTk.PhotoImage(img_open)
  l1.config(image=img)

Mas desta vez vai achar que não como etiqueta e mudança como esperávamos.
Sob r-label viu a solução dada pelos entrevistados:

photo = ImageTk.PhotoImage(self.img)
self.label1.configure(image = photo)
self.label1.image = photo # keep a reference!

Assim, em sua inspirada meu código foi modificado após a solução perfeita para o problema. parte modificada do código de função é a seguinte:

def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_open = Image.open(e1.get())
  img=ImageTk.PhotoImage(img_open)
  l1.config(image=img)
  l1.image=img #keep a reference

E porque eu Caishuxueqian, pelas razões para este fenômeno não é compreendido. Mas que os entrevistados estrangeiros também dá as razões para tais mudanças, por isso deve manter uma referência feitas em http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm uma explicação detalhada.
Diz o seguinte:
? Por que não aparecem ImagesRF Royalty Free My Tkinter
O Quando você ou a adicionar um PhotoImage OUTRAS A Tkinter objeto Imagem para o widget, o Manter a MUST-lhe a sua própria imagem No Object Reference ao Se não o fizer, não para a imagem por Will sempre aparecem. .

O problema é que a interface Tkinter / Tk não lidar com referências a imagem Objetos adequadamente; o Tk widget irá manter uma referência para o objeto interno, mas Tkinter não. Quando coletor de lixo do Python descarta o objeto Tkinter, Tkinter diz Tk para liberar a imagem. Mas desde que a imagem está em uso por um widget, Tk não destruí-lo. Não completamente. Ele só apaga a imagem, tornando-a completamente transparente ...

A solução é certificar-se de manter uma referência para o objeto Tkinter, por exemplo, anexando-o a um atributo widget:

foto = PhotoImage (...)

label = Etiqueta (imagem = fotográficos)
label.image = fotos # manter uma referência!
label.pack ()
CATEGORIA: gui

CATEGORIA: tkinter
escrever para você, para que todos possam recomendar uma ampla recolha de recursos de aprendizagem python, clique para entrar , há um programador sênior antes de aprender a compartilhar

Experiência, notas de estudo, há uma chance de experiência em negócios, e para que todos possam organizar cuidadosamente um python para combate item de informação baseado em zero,

Dia para você na mais recente python tecnologia, perspectivas, necessidades de aprendizagem pequeno comentário sobre os detalhes
do método acima deste python conseguir imagens de exibição dinâmica no rótulo tkinter em pequenas séries é para compartilhar todo o conteúdo de toda a

Publicado 41 artigos originais · ganhou elogios 34 · vê 60000 +

Acho que você gosta

Origin blog.csdn.net/haoxun08/article/details/104869200
Recomendado
Clasificación