2017-12-18 2 views
0

카탈로그의 files.gif 목록에서 사진을 보여주고 싶습니다. 그림은 3 초마다 변경해야합니다. 나는 다른 해결책을 시도했으나 어느 것이나 전나무 사진만을 보여 주었다.파일 목록의 사진 표시

TIA

from tkinter import * 
import os 
path = os.getcwd() 
arr = [] 
for files in next(os.walk('/home/vimart/Python/img/'))[2]: 
     arr.append('/home/vimart/Python/img' + "/" + files) 
canvas_width = 300 
canvas_height =300 

master = Tk() 

canvas = Canvas(master, 
      width=canvas_width, 
      height=canvas_height) 
canvas.pack() 

def display(): 
     canvas.create_image(20,20, anchor=NW, image=canvas.img) 


def get_picture(): 
     for picture in arr: 
       canvas.img = PhotoImage(picture) 
       master.after(3000, display) 
get_picture() 

mainloop() 
+0

Google에 "tkinter slideshow"라고 말하면 많은 예제가 있습니다. – Novel

+0

'for '를 사용하지 마십시오. 모든 이미지를 즉시 이동시키고 마지막 이미지 만 봅니다. 'after()'를 사용하여 하나의 이미지 만 표시하는 함수를 실행하고 전역 변수를 사용하여 이미지를 기억하고'next_image + = 1','picture = arr [next_image]'를 수행하십시오. – furas

+0

비슷한 이미지 뷰어를 보려면 [이 답변] (https://stackoverflow.com/a/47869161/7032856)을 참조하십시오. – Nae

답변

2

나는 그것을 설명이 필요하지 않습니다 생각합니다.

import tkinter as tk 
from PIL import ImageTk 
import os 

# --- functions --- 

def get_filenames(path): 
    result = [] 

    #for one_file in os.listdir(path): 
    for one_file in next(os.walk(path))[2]: 
     if one_file.lower().endswith('.gif'): # sugessted by Nae 
      result.append(path + one_file) 

    return result 

def display(): 
    global current_index 

    picture = arr[current_index] 
    canvas.img = ImageTk.PhotoImage(file=picture) 
    canvas.create_image(20,20, anchor='nw', image=canvas.img) 

    current_index = (current_index + 1) % len(arr) 

    master.after(3000, display) 

# --- main --- 

path = '/home/vimart/Python/img/' 

arr = get_filenames(path) 
current_index = 0 

canvas_width = 300 
canvas_height = 300 

master = tk.Tk() 

canvas = tk.Canvas(master, width=canvas_width, height=canvas_height) 
canvas.pack() 

display() 

master.mainloop() 
+0

추가하기 전에 if one_file.lower(). endswith ('.gif') :'를 추가하여 파일 유형 필터링을 추가 할 수 있습니다. – Nae

+1

@ 네 당신 말이 맞아요. 'os.listdir'을 추가 할 때 이것을 생각하고 있었지만 마침내 저는 이것을 건너 뜁니다. 이제 추가되었습니다. – furas