Форум сайта python.su
Добрый вечер, уважаемые форумчане! Создаю текстовый редактор. Столкнулся с небольшой проблемой. У меня есть 4 меню(File, Edit, About, Setings). Я хочу, чтобы при нажатии на меню Setings у меня создавалось новое окно с настройкам, которые пользователь мог изменять, например изменять горячие клавиши event'ам. Помогите, пожалуйста, подскажите мне, как это реализовать.
from tkinter import * from tkinter import messagebox from tkinter import filedialog import time from datetime import datetime def popup(event): pmenu.tk_popup(event.x_root, event.y_root) def app(): messagebox.showinfo('About the App','The name of programm is Notepad\nVersion 0.1\nMade on Python 3.6.2 in 06.01.2018') def author(): messagebox.showinfo('About the Author','The Author of the programm is *********\nThanks for using us!') def close(event=None): wn.destroy() def newfile(event=None): wn.title('Untitled.txt') #Nameless.txt field.delete(1.0, END) def openfile(event=None): filename = filedialog.askopenfilename() pos = filename.rfind('/') + 1 newName = filename[pos:] file = open(filename, 'r') content = file.read() field.delete(1.0, END) field.insert(1.0, content) file.close() wn.title(newName) def savefile(event=None): filename = filedialog.asksaveasfilename() file = open(filename + '.txt', 'w') content = field.get(1.0, END) file.write(content) file.close() def cut(): field.event_generate('<<Cut>>') def copy(): field.event_generate('<<Copy>>') def paste(): field.event_generate('<<Paste>>') def undo(): field.event_generate('<<Undo>>') def redo(event=None): field.event_generate('<<Redo>>') def delete(): field.event_generate('<<Clear>>') def selectall(): field.event_generate('<<SelectAll>>') def time_and_date(event=None): field.insert(END, datetime.now()) wn = Tk() wn.geometry('400x400') wn.title('Notepad') menubar = Menu() wn.config(menu=menubar) fmenu = Menu(menubar) menubar.add_cascade(label='File', menu=fmenu) fmenu.add_command(label='New File', accelerator='Ctrl+N', command=newfile) fmenu.add_command(label='Open', accelerator='Ctrl+O', command=openfile) fmenu.add_command(label='Save As', accelerator='Ctrl+S', command=savefile) fmenu.add_command(label='Close', accelerator='Ctrl+Q', command=close) editmenu = Menu(menubar) menubar.add_cascade(label='Edit', menu=editmenu) editmenu.add_command(label='Cut', accelerator='Ctrl+X', command=cut) editmenu.add_command(label='Copy', accelerator='Ctrl+C', command=copy) editmenu.add_command(label='Paste', accelerator='Ctrl+V', command=paste) editmenu.add_command(label='Undo', accelerator='Ctrl+Z', command=undo) editmenu.add_command(label='Redo', accelerator='Shift+Ctrl+Z',command=redo) editmenu.add_command(label='Delete', accelerator='Del', command=delete) editmenu.add_command(label='Select All', accelerator='Ctrl+A', command=selectall) editmenu.add_command(label='Time and Date', accelerator='Ctrl+Tab',command=time_and_date) aboutmenu = Menu(menubar) menubar.add_cascade(label='About', menu=aboutmenu) aboutmenu.add_command(label='About the App', command=app) aboutmenu.add_command(label='About the Author', command=author) setingsmenu = Menu(menubar) menubar.add_cascade(label='Setings', menu=setingsmenu) field = Text(wn) field.pack() pmenu = Menu(field) pmenu.add_command(label='Cut', accelerator='Ctrl+X', command=cut) pmenu.add_command(label='Copy', accelerator='Ctrl+C', command=copy) pmenu.add_command(label='Paste', accelerator='Ctrl+V', command=paste) pmenu.add_command(label='Select All', accelerator='Ctrl+A', command=selectall) pmenu.add_command(label='Undo', accelerator='Ctrl+Z', command=undo) pmenu.add_command(label='Redo', accelerator='Shift+Ctrl+Z', command=redo) field.bind('<Button-3>', popup) field.bind('<Control-n>', newfile) field.bind('<Control-o>', openfile) field.bind('<Control-s>', savefile) field.bind('<Control-Z>', redo) field.bind('<Control-Tab>', time_and_date) field.bind('<Control-q>', close)
Отредактировано Bob1 (Янв. 6, 2018 17:24:49)
Офлайн