Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 6, 2018 17:19:00

Bob1
Зарегистрирован: 2017-10-31
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Текстовый редактор. Библиотека tkinter

Добрый вечер, уважаемые форумчане! Создаю текстовый редактор. Столкнулся с небольшой проблемой. У меня есть 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version