Пример 1.

def output(event):

s = ent.get()

if s == "1":

tex.delete(1.0,END)

tex.insert(END,"Обслуживание клиентов на втором этаже")

elif s == "2":

tex.delete(1.0,END)

tex.insert(END,"Пластиковые карты выдают в соседнем здании")

else:

tex.delete(1.0,END)

tex.insert(END,"Введите 1 или 2 в поле слева")

 

from tkinter import *

root = Tk()

 

ent = Entry(root,width=1)

but = Button(root,text="Вывести")

tex = Text(root,width=20,height=3,font="12",wrap=WORD)

 

ent.grid(row=0,column=0,padx=20)

but.grid(row=0,column=1)

tex.grid(row=0,column=2,padx=20,pady=10)

 

but.bind("<Button-1>",output)

 

root.mainloop()

Рассмотрим код, начиная с 16-й строки.

В строках 16-18 создаются три виджета: однострочное текстовое поле, кнопка и многострочное текстовое поле. В первое поле пользователь должен что-то ввести, затем нажать кнопку и получить ответ во втором поле.

В строках 20-22 используется менеджер grid для размещения виджетов. Свойства padx и pady определяют количество пикселей от виджета до края рамки (или ячейки) по осям x и y соответственно.

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

Итак, если вдруг пользователь щелкнет левой кнопкой мыши по кнопке, то выполнится функция output (ни в каком другом случае она выполняться не будет). Данная функция (строки 1-11) выводит информацию во второе текстовое поле. Какую именно информацию, зависит от того, что пользователь ввел в первое текстовое поле. В качестве аргумента функции передается событие (в данном случае ).

Внутри веток if-elif-else используются методы delete и insert. Первый из них удаляет символы из текстового поля, второй — вставляет. 1.0 — обозначает первую строку, первый символ (нумерация символов начинается с нуля).