我已經改編了一個python腳本來顯示圖像幻燈片。原始腳本可以在https://github.com/cgoldberg/py-slideshow來自幻燈片的文件輸出列表
我希望能夠記錄顯示的每個圖像的文件名,以便我可以更容易地調試任何錯誤(即刪除不兼容的圖像)。
我試圖在def get_image_paths
函數中包含一個命令來將文件名寫入文本文件。但是,這並沒有奏效。我的代碼出現在下面 - 任何幫助表示讚賞。
import pyglet
import os
import random
import argparse
window = pyglet.window.Window(fullscreen=True)
def get_scale(window, image):
if image.width > image.height:
scale = float(window.width)/image.width
else:
scale = float(window.height)/image.height
return scale
def update_image(dt):
img = pyglet.image.load(random.choice(image_paths))
sprite.image = img
sprite.scale = get_scale(window, img)
if img.height >= img.width:
sprite.x = ((window.width/2) - (sprite.width/2))
sprite.y = 0
elif img.width >= img.height:
sprite.y = ((window.height/2) - (sprite.height/2))
sprite.x = 0
else:
sprite.x = 0
sprite.y = 0
window.clear()
thefile=open('test.txt','w')
def get_image_paths(input_dir='.'):
paths = []
for root, dirs, files in os.walk(input_dir, topdown=True):
for file in sorted(files):
if file.endswith(('jpg', 'png', 'gif')):
path = os.path.abspath(os.path.join(root, file))
paths.append(path)
thefile.write(file)
return paths
@window.event()
def on_draw():
sprite.draw()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('dir', help='directory of images',
nargs='?', default=os.getcwd())
args = parser.parse_args()
image_paths = get_image_paths(args.dir)
img = pyglet.image.load(random.choice(image_paths))
sprite = pyglet.sprite.Sprite(img)
pyglet.clock.schedule_interval(update_image, 3)
pyglet.app.run()
最好使用'logging'模塊寫入日誌文件。 – furas
也許你必須關閉文件。 – furas
'sprite'永遠不會在'update_image'中聲明 - 這是一個編程錯誤還是你剝離代碼的結果? – Torxed