Как добавить изображения в графический интерфейс Tkinter на Python 3.x - PullRequest
0 голосов
/ 27 ноября 2018

Справочная информация, чтобы вы могли понять, почему я задал этот вопрос:

  • Я использую версию Python 3.7

  • Я являюсьученик

  • В моем классе мы начали изучать Python 2 месяца назад

  • В начале этого класса я впервые столкнулся с Python

  • Вы можете считать меня почти нулевым знанием этого языка.

В любом случае,

Я пытался кодировать несколько изображений водин кадр в проекте, который я делал, который использует графический интерфейс Tkinter.Тем не менее, сообщение об ошибке:

'_ tkinter.TclError: не удалось открыть "snake1.jpg": такой файл или каталог не существует "

появляется при каждой попытке запустить программу, хотяЯ уже гарантировал, что все изображения, которые я планирую использовать, был помещен в тот же каталог, что и мой проект, а также убедился, что при попытке вызвать файл не было опечаток и ошибок.

Я думаю, чточто-то не так с тем, что я вставил, но в соответствии со справочным материалом, который я использую, похоже, что нет ошибок.

В каталоге файлы находятся в следующих папках:

C: \ Users \ [имя моей учетной записи] \ PycharmProjects \ Практика кодирования \ Практика графического интерфейса

Практика графического интерфейса содержит: Practice_GUI_Game.py, snake1.jpg, snake2.jpg, snake3.jpg, snake4.jpg.

Пожалуйста, просмотрите код и скажите, что я сделал не так.Все ответы будут отмечены и оценены.Спасибо.

    from tkinter import *

    game = Tk()
    game.wm_title("Snake Collection")
    game.config(bg="#EB5E55")

    left1 = Frame(game, width=500, height=1000)
    left1.grid(row=0, column=0, padx=15, pady=15)
    def bonuslvl():
        bonusimg1 = PhotoImage(file='snake1.jpg')
        Label(left1, image=bonusimg1).grid(row=0, column=0, padx=5, pady=5)
        bonusimg2 = PhotoImage(file='snake2.jpg')
        Label(left1, image=bonusimg2).grid(row=0, column=1, padx=5, pady=5)
        bonusimg3 = PhotoImage(file='snake3.jpg')
        Label(left1, image=bonusimg3).grid(row=1, column=0, padx=5, pady=5)
        bonusimg4 = PhotoImage(file='snake4.jpg')
        Label(left1, image=bonusimg4).grid(row=1, column=1, padx=5, pady=5)
    bonuslvl()

    game.mainloop()

После изменения имен каждого изображения в формате JPEG на что-то другое, а затем возвращения их к исходному имени, я обнаружил новую ошибку:

      File "C:\Users\[my account name]\PycharmProjects\Practice Coding\GUI  Practice\Practice_GUI_Game.py", line 10, in bonuslvl
          bonusimg1 = PhotoImage(file='snake1.jpg')       
      File "C:\Users\[my account name]\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 3542, in __init__
          Image.__init__(self, 'photo', name, cnf, master, **kw)
      File "C:\Users\[my account name]\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 3498, in __init__
          self.tk.call(('image', 'create', imgtype, name,) + options)         
    _tkinter.TclError: couldn't recognize data in image file "snake1.jpg"

    Process finished with exit code 1

1 Ответ

0 голосов
/ 27 ноября 2018

Итак, кажется, что tkinter больше не поддерживает .jpg.

Я решил вашу проблему с помощью PIL.

Чтобы установить PIL, запустите pip install Pillow.

Мне удалось заставить его работать на моей локальной машине как:

from tkinter import *
from PIL import ImageTk, Image

game = Tk()
game.wm_title("Snake Collection")
game.config(bg="#EB5E55")

left1 = Frame(game, width=500, height=1000)
left1.grid(row=0, column=0, padx=15, pady=15)

def bonuslvl():

    bonusimg1 = ImageTk.PhotoImage(file='snake1.jpg')
    Label(left1, image=bonusimg1).grid(row=0, column=0, padx=5, pady=5)

bonuslvl()

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