Python. GUI
Продолжаю тему Python, начало см. Pyton. Начало
Сегодня я более подробно ознакомлю вас с GUI. Самая простая распространенная GUI-библиотека — это tkinter, она уже встроена во многие идеешки языка Python, в том числе в ту, на которой мы тренируемся. Для подключение этой библиотеки просто в начале программы нужно вставить вот такую строку:
from tkinter import *
Как вы поняли, этой строкой мы импортируем соответствующую библиотеку. Работать с этой библиотекой следует следующим образом:
- Создать корень (ядро нашего GUI-приложения).
- Задать параметры корня (ядра приложения).
- Создать рабочую область.
- Вставить в рабочую область элементы управления.
Вот так в GUI будет выглядеть программа «Hello, World!»:
from tkinter import *
# родительский элемент
root = Tk()
# устанавливаем название окна
root.title("Название окна")
# устанавливаем минимальный размер окна
root.minsize(325,230)
# выключаем возможность изменять окно
root.resizable(width=False, height=False)
# создаем рабочую область
frame = Frame(root)
frame.grid()
# вставляем текст
label = Label(frame, text="Hello, World!").grid(row=1,column=1)
И выдаст она вот такое окно с надпись «Hello, World!»:

Теперь разберемся с элементами графического диалога. С текстовой меткой Label вы только что познакомились:
# вставляем текст label = Label(frame, text="Hello, World!").grid(row=1,column=1)
Теперь познакомимся с кнопкой (Button):
# вставляем кнопку but = Button(frame, text="Кнопка").grid(row=2, column=1)

Но у нас получилась какая-то «куцая» кнопка, мы на нее нажимаем — и ничего не происходит. Давайте добавить обработчик ивента. Сначала его нужно объявить в виде функции:
def my_event_handler():
print("Hello, World!")
Затем надо прикрепить этот обработчик к кнопке. Это можно сделать прямо при создании кнопки:
# вставляем кнопку but = Button(frame, text="Кнопка", command=my_event_handler).grid(row=2, column=1)
Ну и все, теперь при нажатии на кнопочку у нас выходит в консоли «Hello, World!»:

Вот весь текст программы:
from tkinter import *
def my_event_handler():
print("Hello, World!")
# родительский элемент
root = Tk()
# устанавливаем название окна
root.title("Название окна")
# устанавливаем минимальный размер окна
root.minsize(325,230)
# выключаем возможность изменять окно
root.resizable(width=False, height=False)
# создаем рабочую область
frame = Frame(root)
frame.grid()
# вставляем текст
label = Label(frame, text="Hello, World!").grid(row=1,column=1)
# вставляем кнопку
but = Button(frame, text="Кнопка", command=my_event_handler).grid(row=2, column=1)
Но выводить в консоль «Hello, World» неинтересно. Попробуем изменить текст текстовой метки. Один из вариантов сделать это — связать текстовую метку со специальной переменой:
# вставляем текст
txt = StringVar()
txt.set("Hello, World!");
label = Label(frame,textvariable=txt).grid(row=1,column=1)
Теперь изменим обработчик события:
def my_event_handler():
txt.set('абракадабра')
И все, теперь при нажатии на копку меняется текстовая надпись.
Теперь разберемся с текстовым полем ввода (Entry):
# вставляем поле для ввода edit_field = Entry(frame, width=30) edit_field.grid(row=3,column=1)
Обратиться к тексту, введенному в это поле, можно методом get():
def my_event_handler():
txt.set(edit_field.get())
Флажок (Checkbutton). У его необходимо задать текст, переменную флажка, значения этой переменной для включенного и выключенного состояния:
# вставляем флажок
ch_var=StringVar()
ch = Checkbutton(root,text="Это пример флажка",variable=ch_var,
onvalue="on",offvalue="off")
ch.grid(row=4,column=1)
При изменении значения флажка в переменную, заданную в параметре variable, установиться соответственно onvalue или offvalue.
Пример обращения к переменной:
def my_event_handler():
txt.set(ch_var.get())
Ставим галочку, вызываем обработчик, например, если он у нас навешан на кнопочку, то жмем на нее:

мы видим, что в переменной «on», выключим и повторим:

теперь видим, что в переменной «off».
Теперь радиокнопки:
# вставляем радиокнопки sex = IntVar() sex.set(0) rad0 = Radiobutton(frame,text = "Мужской", variable = sex, value = 1) rad0.grid(row=5,column=1) rad1 = Radiobutton(frame,text = "Женский", variable = sex, value = 0) rad1.grid(row=6,column=1)
Значение связанной с флажком переменой, как вы поняли, задается параметром value. При включении соответствующей радиокнопки переменная примет соответствующее значение.

Поскольку цель статьи не заменить документацию по Python, а лишь рассказать основные моменты как вообще юзать GUI, то на этом статья подходит к концу. использования В заключении список:
# Вставляем визуальный список lb=Listbox() lb.grid(row=7,column=1) lb.insert(0,"Проба") lb.insert(0,"Hello, World!") lb.insert(0,"Еще один элемент")
Что видим? Вот что:

Как узнать выбранный элемент? Метод curselection, возвращает кортеж:
print(lb.curselection())
Кортеж — это такая структура данных, представляющая собой заключенный в круглые скобки список значений, например: (1, 2, 3, 4, «Какой-то элемент типа строки»)

Comments
So empty here ... leave a comment!