AppJar, отображающий изображения / картинки из пути к файлу - PullRequest
0 голосов
/ 03 июля 2018


Я работаю над сценарием, который позволяет пользователю выбрать файл (изображение) на своем компьютере, который затем обрабатывается в сценарии. Все это работает без проблем. Последняя часть скрипта создает графический интерфейс с использованием AppJar и отображает информацию, собранную из предыдущей обработки. Однако единственное, что не работает, - это отображение изображения, которое пользователь выбрал в начале, с помощью графического интерфейса. Ниже приведены фрагменты кода, отвечающего за описанные функции сверху.

Выбор файла:

Tk().withdraw() 
filename = askopenfilename() 
print(filename)
Tk().destroy()

Запуск графического интерфейса и добавление картинки:

app = gui()
app.setImageLocation(filename)
app.addImage(Processed_Image, filename, compound=None)
for i in range(0, extractor):
    app.addLabel(f"f{number}", labels1[diction_counter])
    number += 1
    diction_counter += 1
app.go()

Графический интерфейс работает за исключением изображения. Возвращается следующая ошибка:

Exception: Invalid image location: /Users/xxx/Pictures/2017_10_31/IMG_5271.JPG

Я ценю любые советы по решению этой проблемы.

+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++

UpDate:
После того, как мы попробовали решения, предложенные XanderMJ и Malte, единственное, что до сих пор не работает так, как должно, это изображение в графическом интерфейсе. Однако местоположение файла, которое было проблемой в начале, было решено с помощью кода, предложенного Malte. Тем не менее при запуске кода я получаю следующее сообщение об ошибке:

app.addImage("Analyzed", filename, compound=None)
File "/Users/XXX/anaconda3/lib/python3.6/site-packages/appJar/appjar.py", line 
7118, in addImage
self._addImageObj(name, imgObj, row, column, colspan, rowspan, 
compound=compound)
File "/Users/XXX/anaconda3/lib/python3.6/site-packages/appJar/appjar.py", line 
7144, in _addImageObj
label.config(anchor=CENTER, 
font=self._getContainerProperty('labelFont'),image=img)
File "/Users/XXX/anaconda3/lib/python3.6/tkinter/__init__.py", line 1482, in 
configure
return self._configure('configure', cnf, kw)
File "/Users/XXX/anaconda3/lib/python3.6/tkinter/__init__.py", line 1473, in 
_configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: image "pyimage1" doesn't exist

Интересной частью этой ошибки является то, что изображение, которое было выбрано в начале, не называется pyimage1, а имеет такие имена, как "img_1245.jpg". Кроме того, код работает как отдельная программа без переменных в качестве имен файлов или путей. Ниже приведены части кода, которые я только что упомянул, с переменными и без них.

Этот код не вызывает проблем:

from appJar import gui 
from PIL import Image, ImageTk

app = gui()
app.setImageLocation("/Users/XXX/Desktop")
app.addImage("test", "road.jpg")
app.zoomImage("test", -3)
app.go()

Этот код вызывает ранее показанную ошибку:

app = gui()
app.setImageLocation(directory)
app.addImage("Analyzed", filename)
for i in range(0, extractor):
app.addLabel(f"f{number}", labels1[diction_counter])
number += 1
diction_counter += 1
app.go()

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Обновив функцию пути к файлу до следующего, вы сможете извлечь каталог, каталог с именем файла и имя файла полностью самостоятельно:

Tk().withdraw() 
path = askopenfilename() 
filename = os.path.basename(path)
directory = os.path.split(path)[0]
Tk().destroy()

Вам необходимо импортировать import os.path, если вы этого еще не сделали.
Кроме того, для отображения изображения / картинки должно работать следующее:

app.setImageLocation(directory)
app.addImage(title, file, compound=None)

Надеюсь, это поможет!

0 голосов
/ 03 июля 2018

После быстрого просмотра документов AppJar: ссылка

.setImageLocation (location) Установить папку для файлов изображений. Это будет помещено перед именами любых файлов изображений.

В данный момент вы пытаетесь указать путь для поиска изображений, но путь, который вы указываете, - это путь к 1 изображению. Измените его на app.setImageLocation(folder_paht), затем укажите имя файла для вашего изображения при использовании app.addImage('file.png').

Так что вам нужно получить путь к папке с файлами, я бы посоветовал проверить этот пост о получении пути к папке вместо пути к файлу. Затем вы можете перечислить все файлы в этой папке с определенным расширением ( ссылка )

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...