#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 не требует окончания.