Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow ТЕХНОЛОГИИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ
Посмотреть оригинал

Разработка приложений с графическим интерфейсом

Основы работы с модулем tkinter

Язык Python позволяет создавать приложения с графическим интерфейсом, для этого применяются различные графические библиотеки1. Остановимся на рассмотрении стандартной графической библиотеки tkinter[1] [2] (входит в стандартную поставку Python, доступную с официального сайта python.org).

Первым делом при работе с tkinter необходимо создать главное (корневое) окно (рис. 4.44), в котором размещаются остальные графические элементы — виджеты. Существует большой набор виджетов[3] на все случаи жизни: для ввода текста, вывода текста, выпадающие меню и т.д. Среди виджетов есть кнопка, при нажатии на которую происходит заданное событие. Некоторые виджеты (фреймы) используются для группировки других виджетов внутри себя.

Приведем пример простейшей программы для отображения главного окна:

Схема главного окна в tkinter

Рис. 4.44. Схема главного окна в tkinter

# mytkl.py

# Подключаем модуль, содержащий методы для работы

# с графикой import tkinter

# Создаем главное (корневое) окно,

# в переменную window записываем ссылку на объект

# класса Тк

window = tkinter.Тк()

# Задаем обработчик событий для корневого окна window.mainloop()

Результат выполнения программы показан на рис. 4.45.

Главное окно

Рис. 4.45. Главное окно

С помощью трех строчек кода на языке Python удалось вывести на экран полноценное окно, которое можно свернуть, растянуть или закрыть.

Графические (оконные) приложения отличаются от консольных (без оконных) наличием обработки событий. Для консольных (скорее, интерактивных) приложений, с которыми мы работали ранее, не требовалось определять, какую кнопку мыши и в какой момент времени нажал пользователь программы. В оконных приложениях важны все манипуляции с мышью и клавиатурой, так как от этого зависит, например, какой пункт меню выберет пользователь.

Слева на рис. 4.46 показан алгоритм работы консольной программы, справа — программы с графическим интерфейсом.

Схема работы консольной программы и программы с графическим интерфейсом

Рис. 4.46. Схема работы консольной программы и программы с графическим интерфейсом

Следующий пример демонстрирует создание виджета Label:

# mytk2.py import tkinter window = tkinter.Tk()

# Создаем объект-виджет класса Label в корневом окне window

# text - параметр для задания отображаемого текста label = tkinter.Label(window, text = "Это текст в окне!")

# Отображаем виджет с помощью менеджера pack label.pack()

window.mainloop()

В результате работы программы отображается графическое окно с текстом внутри (рис. 4.47).

Текст в окне

Рис. 4.47. Текст в окне

Далее представлен пример размещения виджетов во фрейме:

# mytk3.py import tkinter window = tkinter.Tk()

# Создаем фрейм в главном окне frame = tkinter.Frame(window) frame.pack()

# Создаем виджеты и помещаем их во фрейме frame first = tkinter.Label(frame, text='First label')

# Отображаем виджет с помощью менеджера pack first.pack()

second = tkinter.Label(frame, text='Second label') second.pack()

third = tkinter.Label(frame, text='Third label') third.pack() window.mainloop()

Пример выполнения программы показан на рис. 4.48.

Размещение виджетов во фрейме

Рис. 4.48. Размещение виджетов во фрейме

Можно изменять параметры фрейма в момент создания объекта[4]:

# mytk4.py import tkinter window = tkinter.Tk()

frame = tkinter.Frame(window) frame.pack()

# Можем изменять параметры фрейма:

frame2 = tkinter.Frame(window, borderwidth=4, relief=tkinter.GROOVE) frame2.pack()

# Размещаем виджет в первом фрейме (frame) first = tkinter.Label(frame, text='First label') first.pack()

# Размещаем виджеты во втором фрейме (frame2) second = tkinter.Label(frame2, text='Second label') second.pack()

third = tkinter.Label(frame2, text='Third label') third.pack() window.mainloop()

Результат выполнения программы показан на рис. 4.49.

Изменение параметров фрейма при создании объекта

Рис. 4.49. Изменение параметров фрейма при создании объекта

В следующем примере для отображения в виджете Label содержимого переменной используется переменная data класса StringVar (из модуля tkinter). В дальнейшем из примеров станет понятнее, почему в tkinter используются переменные собственного класса[5].

# mytk5.py import tkinter window = tkinter.Tk{)

# Создаем объект класса StringVar

# (создаем строковую переменную, с которой умеет

# работать tkinter):

data = tkinter.StringVar()

# Метод set позволяет изменить содержимое переменной: data.set{'Данные в окне')

# связываем текст для виджета Label с переменной data label = tkinter.Label(window, textvariable = data) label.pack()

window.mainloop()

Результат выполнения программы показан на рис. 4.50.

Отображение переменной в окне

Рис. 4.50. Отображение переменной в окне

  • [1] ' Подробнее см.: https://wiki.python.org/moin/GuiProgramming.
  • [2] Подробнее см.: https://docs.python.Org/3/library/tkinter.html.
  • [3] Подробнее см.: http://effbot.org/tkinterbook/tkinter-index.htm.
  • [4] Подробнее см.: http://effbot.org/tkinterbook/frame.htm.
  • [5] Tkinter поддерживает работу с переменными классов: Boolean Var, DoubleVar,IntVar, StringVar.
 
Посмотреть оригинал
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 

Популярные страницы