Gå til innhold

TclError: no such file or directory


Anbefalte innlegg

Hei,

 

Holder på å lage ett enkelt script som skal vise bilder på en info skjerm men har kommet over ett problem jeg ikke forstår meg på rett og slett.

 

Det som er saken er at jeg hele tiden sjekker mappen som inneholder bilder, og om det er endringer(kommer inn flere filer, eller minker) vill jeg at den skal vise "de nye" bildene i mappen så listen over gamle filnavn blir slettet og ny laget.

 

Men når den kommer til det nye filnavnet får jeg TclError: no such file or directory men filen er jo såklart der så jeg forstår ikke hvorfor jeg ikke klarer å åpne den? Noen formeninger? Det skjer det samme om jeg legger inn nytt bilde i mappen eller fjerner for så å legge tilbake. Men scriptet håndterer det fint ift listen.

Lenke til kommentar
Videoannonse
Annonse

Skudd i blinde, men er det noe veldig annerledes med filnavnet? Kan være biblioteket ikke støtter filnavnet for åpning?

 

Skulle ønske det, de er helt "like" 1.gif, 2.gif, 3.gif and so on :/

 

Det er forrsten samme problemet når jeg restarter hele røkla, må fjerne filen fra mappen før det går bra igjen. Også verdt å nevne at filen fungerte fra starten av, helt til jeg fjernet fra mappen og la til igjen.

Endret av Salvesen.
Lenke til kommentar

Kan det være noe med store og små boksver i navnet på katalogen. Du må gjerne vise frem litt kode også.


from itertools import cycle
import os

try:
    import Tkinter as tk
except ImportError:

	
class App(tk.Tk):

	def __init__(self,x, y, delay):
		print "init running"
		tk.Tk.__init__(self)
		self.geometry('+{}+{}'.format(x, y))
		self.delay = delay
		self.image_files = []
		self.new_image = []
		for path, subdirs, files in os.walk('C:\kitfinder2\pictures'):
			for filename in files:
				f = filename
				self.image_files.append(f)
				self.new_image.append(f)				
		self.pictures = cycle((tk.PhotoImage(file=image), image)
                              for image in self.image_files)
		self.picture_display = tk.Label(self)
		self.picture_display.pack()

	def UpdateImages(self):
		self.new_image = []
		for path, subdirs, files in os.walk('C:\kitfinder2\pictures'):
			for filename in files:
				f = filename
				self.new_image.append(f)			

		if len(self.image_files) != len(self.new_image):
			print "Difference!"
			self.image_files = []
			for path, subdirs, files in os.walk('C:\kitfinder2\pictures'):
				for filename in files:
					f = filename
					self.image_files.append(f)
			self.pictures = cycle((tk.PhotoImage(file=image), image)
                              for image in self.image_files)			
		
			print "image updated!:" + str(self.image_files)				
		self.show_slides()		
	def show_slides(self):	
		print self.image_files
		'''cycle through the images and show them'''
		img_object, img_name = next(self.pictures)
		self.picture_display.config(image=img_object)
		self.title(img_name)
		self.after(self.delay, self.UpdateImages)
	def run(self):
		self.mainloop()

delay = 3500




x = 100
y = 50
app = App( x, y, delay)
app.UpdateImages()
app.run()

Dette er kun ett eksempel og sjekk og slikt kommer til å bli på en annen måte, har bare samlet sammen noe røsk for å få testet.

 

Det som skjer er at når jeg starter programmet blar den igjennom bildene(1.gif og 2.gif). Legger jeg til ett bilde(3.gif) så oppdaterer listene seg som forventet men når bildet skal vises får jeg tclError og jeg aner ikke hvorfor. Starter jeg på ny får jeg samme feil, fjerner jeg først bilde fra mappe og starter på¨ny fungerer det fint igjen til jeg evt legger inn nytt bilde. Noen tips?

 

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1486, in __call__
    return self.func(*args)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 533, in callit
    func(*args)
  File "start_stopp.py", line 56, in UpdateImages
    self.show_slides()
  File "start_stopp.py", line 60, in show_slides
    img_object, img_name = next(self.pictures)
  File "start_stopp.py", line 53, in <genexpr>
    for image in self.image_files)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 3326, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 3282, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
TclError: couldn't open "2.gif": no such file or directory

Lenke til kommentar

Er det sånn å forstå at du legger til 3.gif, og så får du ikke åpnet 2.gif lenger? Eller var det 2.gif du hadde lagt til i eksempelet?

 

når jeg kjører scriptet ligger 1 og 3 i mappen(tilfeldig). legger så til 2 og jeg får feilen. Starter så på ny(med alle filene i mappen), samme feil. fjerner jeg å starter på ny går det helt fint.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...