0

I had made a program where I require files from that directory where the python file is located. The files are located in the same folder where the python file located.

I can't write the full path of the file in the python script I used the ./ method in the script but it gives error

Please help me to solve the problem

here is my code

'''

#code

root=Tk()
root.title("SOHAM YOUTUBE VIDEO DOWNLOADER")
root["bg"]='#1F1F1F'
root.iconbitmap("./img/youtube_(1).ico")
root.geometry("900x680")

file =PhotoImage(file="./img/youtube-icon.png")
headingIcon=Label(root, image=file)
headingIcon.pack(side=TOP, pady=3)

'''

My folder location

here img is my required folder in YOUTUBE_VEDIO_DOWNLOADER.py which is my python file

Here img is my required folder in YOUTUBE_VEDIO_DOWNLOADER.py which is my python file

My script error is given below

y"python "e:/python projects/YOUTUBE VIDEO DOWNLOADER/YOUTUBE_VIDEO_DOWNLOADER.py
Traceback (most recent call last):
  File "e:\python projects\YOUTUBE VIDEO DOWNLOADER\YOUTUBE_VIDEO_DOWNLOADER.py", line 215, in <module>
    root.iconbitmap("./img/youtube_(1).ico")
  File "C:\Users\soham\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 2073, in wm_iconbitmap
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "./img/youtube_(1).ico" not defined
  • To show code, put three _backticks_ \`\`\` before and after the block of code. NOT single quotes. – pepoluan Oct 22 '20 at 13:47
  • The error obviously means that the file does not exist. I have tested your code without the ico file, it shows the same error. Then I just create an *empty* ico file (file size is zero) and the script runs without error. – acw1668 Oct 22 '20 at 14:55

1 Answers1

2

Use the __file__ variable, then get its parent.

Example:

from pathlib import Path

my_dir = Path(__file__).parent

Later on, you can use my_dir directly if the function understand Path objects, or str() it first:

# if root.iconbitmap accepts Path objects
root.iconbitmap(my_dir / "img/youtube_(1).ico")

#or

# if root.iconbitmap does not accept Path objects
icopath = str(my_dir / "img/youtube_(1).ico")
root.iconbitmap(icopath)
pepoluan
  • 6,132
  • 4
  • 46
  • 76
  • Sure it works. I see no error message from you, so it works. – pepoluan Oct 22 '20 at 14:04
  • ERROR $ python "e:/python projects/YOUTUBE VIDEO DOWNLOADER/YOUTUBE_VIDEO_DOWNLOADER.py" Traceback (most recent call last): File "e:\python projects\YOUTUBE VIDEO DOWNLOADER\YOUTUBE_VIDEO_DOWNLOADER.py", line 220, in root.iconbitmap(icopath) File "C:\Users\soham\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 2073, in wm_iconbitmap return self.tk.call('wm', 'iconbitmap', self._w, bitmap) _tkinter.TclError: bitmap "e:\python projects\YOUTUBE VIDEO DOWNLOADER\img\youtube_(1)" not defined – SOHAM DAS BISWAS. Oct 22 '20 at 14:16
  • from pathlib import Path my_dir = Path(__file__).parent icopath = str(my_dir/ "./img/youtube_(1)") root.iconbitmap(icopath) – SOHAM DAS BISWAS. Oct 22 '20 at 14:17
  • 2
    Is your file named `youtube_(1)` or `youtube_(1).ico` ? Also, next time you should just edit your question, saying you're trying out my suggestion, and put in the error message there. – pepoluan Oct 22 '20 at 14:24
  • my file is youtube_(1).ico – SOHAM DAS BISWAS. Oct 22 '20 at 14:25
  • 1
    Sorry sir I forget to say that I had tried your code and also thank you for spend time to solve my problem – SOHAM DAS BISWAS. Oct 22 '20 at 14:28
  • 1
    @SOHAMDASBISWAS. Well, if an answer works for you, please mark the answer with a checkmark. That indicates to others that the problem is solved and there's a satisfactory solution. – pepoluan Nov 02 '20 at 05:19