Библиотека Tkinter: Диалоговые окна.

Библиотека Tkinter содержит несколько модулей, предоставляющих доступ к уже готовым диалоговым окнам. Это окна различных сообщений, выбора по принципу “да-нет”, открытия и сохранения файлов.

В этой статье мы рассмотрим примеры окон из модулей messagebox и filedialog пакета tkinter.

Для вызова диалоговых окон открытия и сохранения файлов и работу с ними необходимо импортировать “подмодуль” Tkinter – tkinter.filedialog, в котором описаны классы для окон данного типа. Рассмотрим пример:

from tkinter import *
from tkinter.filedialog import *
    
root = Tk()
root.title("Пример работы диалоговых окон")
root.minsize(width=500, height=400)

op = askopenfilename()
sa = asksaveasfilename()

root.mainloop()

Здесь создаются два объекта (op и sa): один вызывает диалоговое окно “Открыть”, а другой “Сохранить как…”. При выполнении программы, они друг за другом выводятся на экран после появления главного окна.

Диалоговые окна мы научились создавать, однако если мы попытаемся открыть какой-нибудь текстовый файл, то в лучшем случае ничего не произойдет. Поэтому нужен модуль, который может нам помочь.

Метод input модуля fileinput может принимать в качестве аргумента адрес файла, читать его содержимое, формируя список строк.

Далее с помощью цикла for можно извлекать строки последовательно и помещать их, например, в текстовое поле. Пример:

from tkinter import *
from tkinter.filedialog import *
import fileinput
    
root = Tk()
root.title("Пример работы диалоговых окон")
root.minsize(width=500, height=400)

txt = Text(root, width=40, height=15, font="14")
txt.pack()

op = askopenfilename()

for i in fileinput.input(op):
   txt.insert(END, i)

root.mainloop()

Программа “Редактор файлов”

Для закрепления теории создадим небольшую программу. Полный листинг:

from tkinter import *
from tkinter.filedialog import *
import fileinput

# открытие файла
def _open():
  op = askopenfilename()
  print(op)
  f = open(op, "r", encoding='utf-8')
  content = f.read()
  txt.delete(1.0,END)
  txt.insert(END, content)

# сохранение файла  
def _save():
  sa = asksaveasfilename()
  content = txt.get(1.0,END)
  f = open(sa, "w", encoding='utf-8')
  f.write(content)
  f.close()
    
root = Tk()
root.title("Текстовый редактор")
root.minsize(width=500, height=400)
m = Menu(root)
root.config(menu=m)

fm = Menu(m)
m.add_cascade(label="Файл", menu=fm)
fm.add_command(label="Открыть...", command=_open)
fm.add_command(label="Сохранить как...", command=_save)

txt = Text(root, width=40, height=15, font=" Courier 14")
txt.pack()

root.mainloop()

Программа напоминает простейший редактор файлов. В программе есть небольшое меню. Загрузка и сохранение файла осуществляется с вызовом диалога открытия файла. Для открытия и сохранения мы создали две функции.

Вывод программы:


Библиотека Tkinter: Диалоговые окна.

MessageBox – вывод различных сообщений

Еще одна группа диалоговых окон описана в модуле tkinter.messagebox. Это окна различных сообщений, выбора по принципу “да-нет”. Дополним нашу программу: “Редактор файлов”. Листинг:

from tkinter import *
from tkinter.filedialog import *
from tkinter.messagebox import *
import fileinput

# открытие файла
def _open():
  op = askopenfilename()
  print(op)
  f = open(op, "r", encoding='utf-8')
  content = f.read()
  txt.delete(1.0,END)
  txt.insert(END, content)

# закрытие файла  
def _save():
  sa = asksaveasfilename()
  content = txt.get(1.0,END)
  f = open(sa, "w", encoding='utf-8')
  f.write(content)
  f.close()

# выход из программы  
def close_win():
  if askyesno("Выход", "Вы уверены?"):
    root.destroy()

# вывод справки    
def about():
  showinfo("Редактор", "Простейший текстовый редактор от сайта: https://it-black.ru")
    
root = Tk()
root.title("Текстовый редактор v 2.0")
root.minsize(width=500, height=400)
m = Menu(root)
root.config(menu=m)

fm = Menu(m)
m.add_cascade(label="Файл", menu=fm)
fm.add_command(label="Открыть...", command=_open)
fm.add_command(label="Сохранить как...", command=_save)
fm.add_command(label="Выход", command=close_win)

hm = Menu(m)
m.add_cascade(label="Справка", menu=hm)
hm.add_command(label="О программе", command=about)

txt = Text(root, width=40, height=15, font=" Courier 14")
txt.pack()

root.mainloop()

Мы создали две дополнительные функции и пункты меню. В функции about происходит вызов окна showinfo, позволяющее выводить сообщение для пользователя с кнопкой ОК. Первый аргумент – это то, что выведется в заголовке окна, а второй – то, что будет содержаться в теле сообщения.

В функции close_win вызывается окно askyenso, которое позволяет получить от пользователя два ответа (true и false). При положительном ответе сработает ветка if и главное окно будет закрыто. В случае нажатия пользователем кнопки “Нет” окно просто закроется.

Вывод программы:


Библиотека Tkinter: Диалоговые окна.

В данной статье мы создали неплохой текстовый редактор и теперь вы можете самостоятельно его улучшать. Пишите в комментариях свои варианты нашей программы.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Библиотека Tkinter: ttk.

Библиотека Tkinter: ttk.

ttk (themed tk) – это расширение tcl/tk с новым набором виджетов. В ttk используется новый движок для создания виджетов. Этот движок обладает поддержкой тем и

 
Библиотека Tkinter: Изображения.

Библиотека Tkinter: Изображения.

Для работы с изображениями в Tkinter имеется два класса BitmapImage и PhotoImage. BitmapImage представляет собой простое двухцветное изображение, PhotoImage – полноцветное изображение. BitmapImage Конструктор класса

 
Библиотека Tkinter: Упаковщики.

Библиотека Tkinter: Упаковщики.

Упаковщик (менеджер геометрии, менеджер расположения) это специальный механизм, который размещает (упаковывает) виджеты на окне. В Tkinter есть три упаковщика: pack, place, grid. В одном виджете

 
Библиотека Tkinter: Методы виджетов.

Библиотека Tkinter: Методы виджетов.

Все виджеты в Tkinter обладают некоторыми общими методами. В этой статье мы познакомимся с такими методами. Список всех виджетов можно изучить в статье “Библиотека Tkinter:

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: