Завдання. Створити простий текстовий редактор, що дозволяє створювати
текстові документи, зберігати та відкривати їх.
1. Імпортуй графічну бібліотеку tkinter.
from tkinter import *
2. Створи головне вікно root та розмісти команду для відображення вікна після
запуску програми.
root = Tk() # створення головного вікна (завжди називай головне вікно root!)
# команди
root.mainloop() # команда відображення вікна при запуску
3. Задай заголовок вікна «Мій блокнот»
root.title('Мій блокнот')
4. Встав текстове поле text з шириною 100.
text = Text(root, width=___)
text.pack()
5. Додай до поля смугу прокручування scroll.
scroll = Scrollbar(root)
scroll.pack(side=RIGHT, fill=Y)
text.pack(side=LEFT, fill=Y)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)
Створення меню
6. Задай змінну для головного меню і прикріпи його до вікна.
mainmenu = Menu(root)
root.config(menu=___)
7. Створи пункт меню «Файл» (змінна filemenu) та прикріпи його до головного
меню.
filemenu = Menu(mainmenu, tearoff=0)
mainmenu.add_cascade(label='Файл', menu=___)
8. Для пункту меню «Файл» створи підпункти-команди «Відкрити»,
«Зберегти», «Вийти».
filemenu.add_command(label='Відкрити')
…
9. Перед підпунктом «Вийти» задай лінію відділення.
filemenu.add_separator()
10. Оформи підпункт «Зберегти», який зберігатиме файл на комп’ютер чи
інший носій:
• підключи модуль роботи з діалоговими вікнами відкриття та
збереження файлів
from tkinter.filedialog import *
• запиши функцію save_file для підпункту
def save_file():
ask_save = asksaveasfilename()
letter = text.get(1.0, END)
f = open(ask_save, "w")
f.write(letter)
f.close()
Результат виконання функції – відкриття вікна для збереження файлу:
• зв’яжи функцію з підпунктом за допомогою властивості command
(command=save).
11. Оформи підпункт «Відкрити», який відкриватиме збережений файл:
• підключи модуль для роботи з файлами
import fileinput
• запиши функцію open_file для підпункту
def open_file():
___.delete(1.0, END)
ask_open = askopenfilename()
for let in fileinput.input(ask_open):
___.insert(END, let)
• зв’яжи функцію з підпунктом.
12. Оформи підпункт «Вийти»:
• підключи модуль для роботи зі стандартними діалоговими вікнами
from tkinter.messagebox import *
• запиши функцію ex для підпункту
def ex():
if askyesno("Вихід", "Ви справді хочете вийти?"):
root.destroy()
Результат виконання функції:
• зв’яжи функцію з підпунктом.
13. До головного меню прикріпи пункти-команди «Довідка» та «Фон».
mainmenu.add_command(label='Довідка', command=show)
mainmenu.add_command(label='Фон', command=color)
14. Задай функцію show для пункту «Довідка», яка викликає вікно showinfo, що
дозволяє виводити повідомлення для користувача з кнопкою OK. Перший
аргумент – це те, що виведеться в заголовку вікна, а другий – те, що буде
міститися в тексті повідомлення.
def show():
showinfo("Довідка", "Це програма Мій блокнот")
Результат виконання функції:
15. Оформи пункт «Фон» (за його допомогою можна буде змінювати колір фону
текстового поля):
• підключи модуль для вибору кольору
from tkinter.colorchooser import askcolor
• запиши функцію color для зміни кольору фону текстового поля
def color():
(triple, h) = askcolor()
if h:
text.config(bg=h)
• зв’яжи функцію з пунктом.
Результат виконання функції:
Answers & Comments
from tkinter import *
from tkinter.filedialog import *
import fileinput
from tkinter.messagebox import *
from tkinter.colorchooser import askcolor
def save_file():
ask_save = asksaveasfilename()
letter = text.get(1.0, END)
f = open(ask_save, "w")
f.write(letter)
f.close()
def open_file():
text.delete(1.0, END)
ask_open = askopenfilename()
for let in fileinput.input(ask_open):
text.insert(END, let)
def ex():
if askyesno("Вихід", "Ви справді хочете вийти?"):
root.destroy()
def show():
showinfo("Довідка", "Це програма Мій блокнот")
def color():
(triple, h) = askcolor()
if h:
text.config(bg=h)
root = Tk()
root.title('Мій блокнот')
text = Text(root, width=100)
text.pack(side=LEFT, fill=Y)
scroll = Scrollbar(root)
scroll.pack(side=RIGHT, fill=Y)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)
mainmenu = Menu(root)
root.config(menu=mainmenu)
filemenu = Menu(mainmenu, tearoff=0)
mainmenu.add_cascade(label='Файл', menu=filemenu)
filemenu.add_command(label='Відкрити', command=open_file)
filemenu.add_command(label='Зберегти', command=save_file)
filemenu.add_separator()
filemenu.add_command(label='Вийти', command=ex)
mainmenu.add_command(label='Довідка', command=show)
mainmenu.add_command(label='Фон', command=color)
root.mainloop()