«IOError Нет такого файла или каталога» для файла изображения, который находится в текущем каталоге

#python #tkinter #notepad #python-imaging-library #python-2.7

#python #tkinter #notepad #python-imaging-library #python-2.7

Вопрос:

Я использую библиотеку изображений Python и Tkinter. В настоящее время я пытаюсь отобразить изображение в виде метки, и я получаю вышеупомянутое исключение. Мой 35-строчный источник:

 from PIL import Image, ImageTk
from Tkinter import Tk, Frame, Label

class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.parent = parent
        self.initUI()

    def initUI(self):
        self.parent.title("Label")

        self.img = Image.open("diesl.jpg")
        diesl = ImageTk.PhotoImage(self.img)
        label = Label(self, image=diesl)

        label.image = diesl
        label.pack()

        self.pack()

    def setGeometry(self):
        w, h = self.img.size
        self.parent.geometry(("%dx%d 300 300") % (w, h))

def main():
    root = Tk()
    ex = Example(root)
    ex.setGeometry()
    root.mainloop()

if __name__ == '__main__':
    main()
 

Комментарии:

1. Откуда вы знаете, что он на самом деле находится в текущем каталоге, а не в каком-то другом каталоге, который, по вашему мнению , является текущим каталогом?

2. Попробуйте этот код: f=open(«diesl.jpg «) и если это не работает, возникает вопрос о разрешении.

3. @lc2817: разрешения дают другое IOError значение.

4. ХОРОШО, в этом случае вы правы, у него нет файла в том же каталоге.

5. Я трижды проверил. У меня определенно есть это в том же каталоге.

Ответ №1:

На самом деле, вы правы в своем комментарии: Notepad , похоже, запускает файлы из своего собственного каталога.

Вы можете найти решение своей проблемы здесь: http://damienlearnsperl.blogspot.com/2009/01/launch-your-perl-script-from-notepad.html (проверьте комментарий Ли), если вы все еще собираетесь использовать Notepad

Комментарии:

1. Я не понимал, что npp использует свой собственный каталог в качестве рабочего каталога. Большое спасибо!

Ответ №2:

Я попробовал ваш точный код, и он отлично сработал.

Я думаю, что вы находитесь в странном каталоге
(например, Program Files, для которого требуются специальные разрешения)

Почему бы вам не попробовать завершить explorer.exe через диспетчер задач,
чем снова запускать ваш код?

Комментарии:

1. Как было сказано ранее, это, безусловно, не вопрос разрешения, иначе это было бы указано в ошибке.

2. Возможно, но вы никогда не знаете 😉

Ответ №3:

Я новичок в Python, но мой метод работает для меня. Вот код:

 from Tkinter import *
from PIL import Image,ImageTk
import os
import platform
import webbrowser

sys = platform.system()


def setup_window():
    global window
    window = Tk()
    window.geometry("300x150")
    window.title("Computer Utility GUI")


def style_window():
    path = "/home/pi/Desktop/tool icon"
    img = ImageTk.PhotoImage(Image.open(path))
    label = Label(window, image = img)
    label.grid(row=0,column=0,sticky=W)

setup_window()
style_window()

window.mainloop()
 

Как я заставил его работать:

1) (Вам нужно импортировать ОС, но в моем коде я это уже сделал.) Из результирующего окна оболочки при запуске моего кода я ввел os.getcwd()

Это дает вам текущий рабочий каталог.

2) Убедитесь, что ваш файл сохранен в этом каталоге; с вашим скриптом Python.

3) Введите текущий каталог в круглые скобки там, где вам нужно его использовать, затем поместите косую черту в конце и подождите.

4) Должен появиться небольшой виджет с помощью клавиш со стрелками вниз и найдите изображение, которое должно быть сохранено в пути. Затем при его выборе нажмите enter, и это путь, который вам нужно использовать,

5) Надеюсь, это должно сработать. Я обнаружил, что Python не требует окончания.