Я создаю карточную игру на Tkinter, и я хочу, чтобы сохранить файлы в суб-подпапки, это выглядит следующим образом:Показать изображения из вложенных папок в Tkinter
/
|-card_game.py
|-mypackages
|-anyrandomstuff
|-foo.py
|-spam.py
|-cards
|-heart7.gif
|-heart8.gif
|-heart9.gif #and so on all 32 cards of a standart card game
Я знаю, как отображать изображения в tkinter, но только если они находятся на том же уровне, что и card_game.py
. Поскольку я не хочу такого беспорядка в своих папках, я начал проводить исследования в google и Stackoverflow. Я не получил никаких результатов, так что я попробовал несколько разных вещей, как это:
from tkinter import *
main = Tk()
photo = PhotoImage(file='mypackages/cards/heart8.gif')#Here I tried: '.','\\','/', no results
photo_label = Label(image=photo)
photo_label.grid()
photo_label.image = photo
main.mainloop()
Вот сообщение об ошибке, я получаю Sence довольно хорошо, но я не знаю, как решить эту проблему
Traceback (most recent call last):
File "root\mypackages\cards\heart7.py", line 5, in <module>
photo = PhotoImage(file='mypackages/cards/heart7.gif')
File "Python\Python35-32\lib\tkinter\__init__.py", line 3393, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "Python\Python35-32\lib\tkinter\__init__.py", line 3349, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "mypackages/cards/heart8.gif": no such file or directory
Каков корркт-способ «рассказать» python, что вы хотите получить изображение в подпапке?
Является ли '.../cards/heart7.py' ваш основной исполняемый файл, файл, который вы запускаете? – Finwood
вы можете использовать абсолютный путь, если знаете, но условия трассировки вы пытаетесь инициализировать карту из файла '.../cards/heart7.py', и в этом случае она находится в той же папке, и вы будете делать 'file =" heart8.gif "' –
Вы забыли косую черту, должен быть файл = '/ mypackages/cards/heart8.gif', но может зависеть от вашей ОС и предполагает, что нет каталогов выше «mypackages», хотя здесь говорится: что вы должны также включить «root» Файл «root \ mypackages \ cards \ heart7.py», строка 5, в –