2016-03-23 4 views
0

Я создаю карточную игру на 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, что вы хотите получить изображение в подпапке?

+1

Является ли '.../cards/heart7.py' ваш основной исполняемый файл, файл, который вы запускаете? – Finwood

+0

вы можете использовать абсолютный путь, если знаете, но условия трассировки вы пытаетесь инициализировать карту из файла '.../cards/heart7.py', и в этом случае она находится в той же папке, и вы будете делать 'file =" heart8.gif "' –

+0

Вы забыли косую черту, должен быть файл = '/ mypackages/cards/heart8.gif', но может зависеть от вашей ОС и предполагает, что нет каталогов выше «mypackages», хотя здесь говорится: что вы должны также включить «root» Файл «root \ mypackages \ cards \ heart7.py», строка 5, в

ответ

1

Я обнаружил, что делать в этом случае:

Вы должны дать этот путь: «»

./mypackages/cards/heart7.gif 

Это монтирует УХО как и позволяет мне получить доступ ко всем файлам в подпапках (на самом деле, просто отсутствовала точка !!!)

+1

Это все! просто пинту (facepalm) –

Смежные вопросы