Программирование GUI на Python (Tkinter)

Python предоставляет несколько библиотек для разработки графического интерфейса. Ниже перечислены некоторые часто используемые библиотеки Python GUI:

  • Tkinter:Модуль Tkinter (Tk interface) — это интерфейс к стандартному набору инструментов Tk GUI Python. Tk и Tkinter можно использовать на большинстве Unix-платформ, а также в Windows и Macintosh. В более поздних версиях Tk8.0 можно реализовать нативные стили окон и хорошо работать на подавляющем большинстве платформ.

  • wxPython:wxPython — это программное обеспечение с открытым исходным кодом и превосходная библиотека графического интерфейса для языка Python, позволяющая Python-программистам легко создавать полноценные, полностью функциональные пользовательские интерфейсы GUI.

  • Jython:Программы Jython могут быть бесшовно интегрированы с Java. За исключением некоторых стандартных модулей, Jython использует модули Java. Jython имеет почти все модули стандартного Python, которые не зависят от языка C. Например, пользовательский интерфейс Jython будет использовать Swing, AWT или SWT. Jython можно динамически или статически компилировать в байт-код Java.


Программирование на Tkinter

Tkinter — это стандартная библиотека GUI для Python. Python может использовать Tkinter для быстрого создания GUI-приложений.

Поскольку Tkinter встроен в установочный пакет Python, при условии, что Python установлен, вы можете импортировать библиотеку Tkinter. Кроме того, IDLE также написан на Tkinter, и Tkinter по-прежнему легко справляется с простыми графическими интерфейсами.

Примечание: В версии Python3.x используется имя библиотеки tkinter, то есть первая буква T — строчная.

import tkinter

Создание GUI-программы

  • 1. Импортируйте модуль Tkinter
  • 2. Создайте виджет
  • 3. Укажите master этого виджета, т.е. к какому виджету относится этот виджет
  • 4. Сообщите GM (менеджеру геометрии), что виджет был создан

Пример (Python3.x)

#!/usr/bin/python3 import tkinter top = tkinter.Tk() # Войти в цикл обработки сообщений top.mainloop()

Пример (Python2.x)

#!/usr/bin/python # -*- coding: UTF-8 -*- import Tkinter top = Tkinter.Tk() # Войти в цикл обработки сообщений top.mainloop()

Результат выполнения приведённого выше кода показан на рисунке ниже:

tkwindow

Пример

#!/usr/bin/python # -*- coding: UTF-8 -*- # Способ импорта Python2.x from Tkinter import * # Импорт библиотеки Tkinter # Способ импорта Python3.x #from tkinter import * root = Tk() # Создать цвет фона объекта окна # Создать два списка li = ['C','python','php','html','SQL','java'] movie = ['CSS','jQuery','Bootstrap'] listb = Listbox(root) # Создать два виджета listbox listb2 = Listbox(root) for item in li: # Вставить данные в первый виджет listb.insert(0,item) for item in movie: # Вставить данные во второй виджет listb2.insert(0,item) listb.pack() # Поместите виджеты в главное окно listb2.pack() root.mainloop() # Войти в цикл обработки сообщений

Результат выполнения приведённого выше кода показан на рисунке ниже:


Виджеты Tkinter

Tkinter предоставляет различные элементы управления, такие как кнопки, метки и текстовые поля, используемые в GUI-приложении. Эти элементы управления часто называют виджетами или компонентами.

В настоящее время существует 15 виджетов Tkinter. Мы представляем эти виджеты и краткое введение в следующей таблице:

ВиджетОписание
КнопкаВиджет Button; отображает кнопку в программе.
CanvasВиджет Canvas; отображает графические элементы, такие как линии или текст
CheckbuttonВиджет Checkbutton; используется для создания полей множественного выбора в программе
EntryВиджет Entry; используется для отображения простого текстового содержимого
ФреймВиджет Frame; отображает прямоугольную область на экране, в основном используется как контейнер
LabelВиджет Label; может отображать текст и битовые карты
СписокВиджет Listbox; оконный виджет Listbox используется для отображения пользователю списка строк
Кнопка менюВиджет Menubutton; используется для отображения пунктов меню
МенюВиджет Menu; отображает панель меню, раскрывающиеся меню и всплывающие меню
СообщениеВиджет Message; используется для отображения многострочного текста, аналогично Label
РадиокнопкаВиджет Radiobutton; отображает состояние кнопки с одиночным выбором
МасштабВиджет Scale; отображает числовую шкалу, предоставляя числовой интервал с ограниченным диапазоном для вывода
ScrollbarВиджет Scrollbar; используется, когда содержимое превышает видимую область, например listbox.
ТекстВиджет Text; используется для отображения многострочного текста
ToplevelВиджет Toplevel; используется для создания отдельного диалога, аналогичного Frame
SpinboxВиджет Spinbox; похож на Entry, но позволяет задавать диапазон входных значений
PanedWindowPanedWindow — это плагин управления компоновкой окон, который может содержать один или несколько дочерних виджетов.
LabelFramelabelframe — это простой контейнерный виджет. Часто используется для сложных компоновок окон.
tkMessageBoxИспользуется для отображения окна сообщения для вашего приложения.

Стандартные атрибуты

Стандартные атрибуты — это общие атрибуты всех виджетов, такие как размер, шрифт, цвет и т. д.

Attribute Описание
Измерение Размер виджета;
Цвет Цвет виджета;
Font Шрифт виджета;
Якорь Якорь;
Рельеф Стиль виджета;
Битовая карта Битовая карта;
Cursor Курсор;

Управление геометрией

Виджеты Tkinter имеют специальные методы управления геометрическим состоянием, управляющие организацией всей области виджета. Ниже перечислены классы управления геометрией, предоставляемые Tkinter: pack, grid, place

Метод геометрии Описание
pack() Pack;
grid() Grid;
place() Place;
Другие расширения