Модуль tkinter. Выдает ошибки в выполнении программы

Анна Красницкая

Новичок
Пользователь
Дек 27, 2020
1
0
1
Задание составить меню, добавить к подпунктам пару картинок и вывести свою фамилию в текстовом редакторе при нажатии одного из пунктов подменю. Вот текст:

from tkinter import *


FILENAME = "ball.gif" # файл с графическим изображением


root = Toplevel()
root.title('Виды спорта')
root.geometry('800x600')
mainmenu = Menu(root)
root.config(menu=mainmenu)


#Добавление фото

im = PhotoImage(file = 'ball.gif')

#Вставка фамилии

surname_entry = Entry()
surname_entry.insert(0, 'Аннова')
surname_entry["bg"]='green'
surname_entry["fg"]='Black',
surname_entry["font"]='Forte 16'
surname_entry.place(x=15, y=15)

#Создаем метку с фамилией при выборе нужной опции или при нажатии определенных клавиш
l1 = Label(root, text="")
def place1():
l1.place(x=250, y=170)
l1["text"] = surname_entry.get()
def place1_1(event):
l1.place(x=250, y=170)
l1["text"] = surname_entry.get()
root.bind('<Control-c>', place1_1)

#Удаляем метку с фамилией при выборе нужной опции или при нажатии определенных клавиш

def place2():
l1.place_forget()
def place2_2(event):
l1.place_forget()
root.bind('<Control-x>', place2_2)

#Устанавливаем контекстное меню для фамилии в редакторе
def f12():
b1["font"] = "Arial 12"
def f15():
b1["font"] = "Arial 15"
def f18():
b1["font"] = "Arial 18"
def f21():
b1["font"] = "Arial 21"

# Создание набора опций контекстного меню

pm = Menu(tearoff=0)
pm.add_checkbutton(label="12", onvalue = 0, offvalue=0, command=f12)
pm.add_checkbutton(label="15", onvalue = 1, offvalue=0, command=f15)
pm.add_checkbutton(label="18", onvalue = 2, offvalue=0, command=f18)
pm.add_checkbutton(label="18", onvalue = 3, offvalue=0, command=f21)

#Отображение контекстного меню

def pom(event):
x1 = event.x
y1 = event.y
if (x1 > 0 and x1 < 111) and (y1 > 0 and y1 < 24):
pm.post(event.x_root, event.y_root)

#Создание первого меню и его подменю
menu1=Menu(mainmenu, tearoff=0)
menu1_2=Menu(menu1, tearoff=0)
menu1_3=Menu(menu1_2, tearoff=0)
menu1_4=Menu(menu1_3, tearoff=0)
mainmenu.add_cascade(label='Силовые', menu=menu1)
menu1.add_cascade(label='Метание', menu=menu1_2)
menu1.add_cascade(label='Спринт', menu=menu1_2)
menu1.add_cascade(label='Прыжки', menu=menu1_2)
menu1.add_cascade(label='Ходьба', menu=menu1_2)
menu1_2.add_cascade(label='На скорость', menu=menu1_3)
menu1_2.add_cascade(label='На расстояние',menu=menu1_4)
menu1_3.add_command(label='Большая')
menu1_3.add_command(label='Маленькая')
menu1_4.add_command(label='Очень большое')
menu1_4.add_command(label='очень маленькое')

#Создание второго меню
menu2=Menu(mainmenu, tearoff=0)
menu2_2=Menu(menu2, tearoff=0)
menu2_3=Menu(menu2_2, tearoff=0)
menu2_4=Menu(menu2_3, tearoff=0)
mainmenu.add_cascade(label='Спортивные', menu=menu2)
menu2.add_cascade(label='Волейбол', menu=menu2_2)
menu2.add_cascade(label='Хоккей', menu=menu2_2)
menu2.add_cascade(label='Гандбол', menu=menu2_2)
menu2.add_cascade(label='Футбол', menu=menu2_2, image = im, compound="left")
menu2_2.add_cascade(label='Пляжный', menu=menu2_3)
menu2_2.add_cascade(label='На льду', menu=menu2_4)
menu2_3.add_command(label='С сеткой')
menu2_3.add_command(label='Без сетки')
menu2_4.add_command(label='В зале')
menu2_4.add_command(label='На улице')

#Создание третьего меню
menu3=Menu(mainmenu, tearoff=0)
menu3_2=Menu(menu3, tearoff=0)
menu3_3=Menu(menu3_2, tearoff=0)
menu3_4=Menu(menu3_3, tearoff=0)
mainmenu.add_cascade(label='Циклические', menu=menu3)
menu3.add_cascade(label='Бег', menu=menu3_2)
menu3.add_cascade(label='Гребля', menu=menu3_2)
menu3.add_cascade(label='Плавание', menu=menu3_2)
menu3.add_cascade(label='Триатлон', menu=menu3_2)
menu3_2.add_cascade(label='На суше', menu=menu3_3)
menu3_2.add_cascade(label='В воде',menu=menu3_4)
menu3_3.add_command(label='Где')
menu3_3.add_command(label='Когда')
menu3_4.add_command(label='Под водой')
menu3_4.add_command(label='На воде')

#Создание четвертого меню
menu4=Menu(mainmenu, tearoff=0)
menu4_2=Menu(menu4, tearoff=0)
menu4_3=Menu(menu4_2, tearoff=0)
menu4_4=Menu(menu4_3, tearoff=0)
mainmenu.add_cascade(label='Единоборства', menu=menu3)
menu4.add_cascade(label='Сумо', menu=menu4_2)
menu4.add_cascade(label='Дзюдо', menu=menu4_2)
menu4.add_cascade(label='Бокс', menu=menu4_2)
menu4.add_cascade(label='Каратэ', menu=menu4_2)
menu4_2.add_cascade(label='Происхождение', menu=menu4_3)
menu4_2.add_cascade(label='Стиль',menu=menu4_4)
menu4_3.add_command(label='Азиатское')
menu4_3.add_command(label='Греческое')
menu4_4.add_command(label='Внешние')
menu4_4.add_command(label='Внутренние')

#Создание пятого меню
menu5=Menu(mainmenu, tearoff=0)
menu5_2=Menu(menu5, tearoff=0)
menu5_3=Menu(menu5_2, tearoff=0)
mainmenu.add_cascade(label='Кнопка', menu=menu5)
menu5.add_command(label='Показать фамилию (Ctrl+c)', command=place1)
menu5.add_command(label='Скрыть фамилию (Ctrl+x)',command=place2)

root.mainloop()


Вот ошибки:

Traceback (most recent call last):
File "C:\Users\DELL1\Downloads\test (1).py", line 24, in <module>
im = PhotoImage(file = 'ball.gif')
File "C:\Users\DELL1\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 3539, in __init__
Image.__init__(self, 'photo', name, cnf, master, **kw)
File "C:\Users\DELL1\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 3495, in __init__
self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "ball.gif": no such file or directory
»>
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Путь к файлу нужен полный.
 

Форум IT Специалистов