Скажите пожалуйста, в чем ошибка в приведенном коде на Python с использованием библиотеки Tkinter?
Код:
from tkinter import* w=Tk() def vivesti(): a=open('11.txt','r',encoding='utf-8') b=a.read() t.insert(1.0,b) def sohra(): a=open('11.txt','w',encoding='utf-8') t.delete(1.0,END) eg=e.get() eg2=e2.get() eg3=e3.get() a.write('Сайт-'+eg+':логин-'+eg2+',пароль-'+eg3) m2=Menu() m2.add_cascade(label='Save') m2.add_cascade(label='Save as') m=Menu() m.add_command(label='File',menu=m2) m.add_command(label='Help') m.add_command(label='Close') w.config(menu=m) l=Label(text='Введите название',font=('Times New Roman',18)) l2=Label(text='Введите логин',font=('Times New Roman',18)) l3=Label(text='Введите пароль',font=('Times New Roman',18)) e=Entry(width=30) e2=Entry(width=30) e3=Entry(width=30) b=Button(text='Cохранить данные в файл.',font=('Times New Roman',18),command=sohra) l4=Label(text='↓ Здесь выведутся логины и пароли от всех сайтов ↓',font=('Times New Roman',12)) t=Text(w,width=70,height=30,wrap=WORD) b2=Button(text='↑ Вывести все сайты,логины и пароли ↑',font=('Times New Roman',18),command=vivesti) l.grid(row=1,column=1,sticky='swen') l2.grid(row=2,column=1,sticky='swen') l3.grid(row=3,column=1,sticky='swen') e.grid(row=1,column=2,sticky='swen') e2.grid(row=2,column=2,sticky='swen') e3.grid(row=3,column=2,sticky='swen') b.grid(row=4,column=1,columnspan=2,sticky='swen') l4.grid(row=5,column=1,columnspan=2,sticky='swen') t.grid(row=6,column=1,columnspan=2,sticky='swen') b2.grid(row=7,column=1,columnspan=2,sticky='swen') Ошибка: Traceback (most recent call last): File "C:\Users\OK\Desktop\Kate Krasichenko\ШАГ\4 курс\python medium\11\11.py", line 24, in m.add_command(label='File',menu=m2) File "C:\Program _tkinter.TclError: unknown option "-menu"
Информатика 9 класс Графические интерфейсы пользователя (GUI) на Python (Tkinter) ошибка в коде Python tkinter меню в Tkinter команда меню код на Python обработка ошибок Python программирование на Python ошибки Tkinter работа с файлами Python графический интерфейс Python Новый
В приведенном коде на Python с использованием библиотеки Tkinter ошибка возникает из-за неправильного использования метода add_command
для добавления выпадающего меню. Давайте разберем, в чем именно проблема и как ее исправить.
Проблема с использованием метода add_command
:
Ваша строка m.add_command(label='File',menu=m2)
вызывает ошибку, потому что метод add_command
не принимает параметр menu
. Вместо этого, чтобы добавить подменю, нужно использовать метод add_cascade
.
Исправление кода:
Чтобы исправить ошибку, вам нужно заменить строку, которая вызывает ошибку, на правильное использование метода add_cascade
. Вот как это можно сделать:
Замените эту строку:
m.add_command(label='File',menu=m2)
на:
m.add_cascade(label='File', menu=m2)
Общий вид исправленного кода: После внесения исправления ваш код будет выглядеть так:
from tkinter import*
w=Tk()
def vivesti():
a=open('11.txt','r',encoding='utf-8')
b=a.read()
t.insert(1.0,b)
def sohra():
a=open('11.txt','w',encoding='utf-8')
t.delete(1.0,END)
eg=e.get()
eg2=e2.get()
eg3=e3.get()
a.write('Сайт-'+eg+':логин-'+eg2+',пароль-'+eg3)
m2=Menu()
m2.add_cascade(label='Save')
m2.add_cascade(label='Save as')
m=Menu()
m.add_cascade(label='File', menu=m2) # Исправлено здесь
m.add_command(label='Help')
m.add_command(label='Close')
w.config(menu=m)
l=Label(text='Введите название',font=('Times New Roman',18))
l2=Label(text='Введите логин',font=('Times New Roman',18))
l3=Label(text='Введите пароль',font=('Times New Roman',18))
e=Entry(width=30)
e2=Entry(width=30)
e3=Entry(width=30)
b=Button(text='Cохранить данные в файл.',font=('Times New Roman',18),command=sohra)
l4=Label(text='↓ Здесь выведутся логины и пароли от всех сайтов ↓',font=('Times New Roman',12))
t=Text(w,width=70,height=30,wrap=WORD)
b2=Button(text='↑ Вывести все сайты,логины и пароли ↑',font=('Times New Roman',18),command=vivesti)
l.grid(row=1,column=1,sticky='swen')
l2.grid(row=2,column=1,sticky='swen')
l3.grid(row=3,column=1,sticky='swen')
e.grid(row=1,column=2,sticky='swen')
e2.grid(row=2,column=2,sticky='swen')
e3.grid(row=3,column=2,sticky='swen')
b.grid(row=4,column=1,columnspan=2,sticky='swen')
l4.grid(row=5,column=1,columnspan=2,sticky='swen')
t.grid(row=6,column=1,columnspan=2,sticky='swen')
b2.grid(row=7,column=1,columnspan=2,sticky='swen')
Дополнительные замечания:
a.close()
в функции vivesti
и sohra
.Теперь код должен работать корректно, и выпадающее меню будет отображаться без ошибок.