0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Tkinter</strong>- графическая библиотека для Python, которая используется для разработки графического интерфейса на Python (начиная с Python 3.0, Tkinter переименована в tkinter). Tkinter является интерфейсом к tcl/tk и расшифровывается как Tk interface.</p>
1
<p><strong>Tkinter</strong>- графическая библиотека для Python, которая используется для разработки графического интерфейса на Python (начиная с Python 3.0, Tkinter переименована в tkinter). Tkinter является интерфейсом к tcl/tk и расшифровывается как Tk interface.</p>
2
<p>Эта библиотека кроссплатформенна и может применяться в многих распространённых ОС: Linux, Mac OS X, Windows. Кроме того, Tkinter включена в стандартный дистрибутив Python.</p>
2
<p>Эта библиотека кроссплатформенна и может применяться в многих распространённых ОС: Linux, Mac OS X, Windows. Кроме того, Tkinter включена в стандартный дистрибутив Python.</p>
3
<p>Так как библиотека Tkinter - это достаточно прозрачный интерфейс к tcl/tk, то основной источник информации для неё - man-страницы tcl/tk. Данные страницы есть в любой Unix-системе и доступны<a>онлайн</a>.</p>
3
<p>Так как библиотека Tkinter - это достаточно прозрачный интерфейс к tcl/tk, то основной источник информации для неё - man-страницы tcl/tk. Данные страницы есть в любой Unix-системе и доступны<a>онлайн</a>.</p>
4
<h2>Импорт</h2>
4
<h2>Импорт</h2>
5
<p>Импортируется Tkinter точно так же, как и любая другая библиотека на Python:</p>
5
<p>Импортируется Tkinter точно так же, как и любая другая библиотека на Python:</p>
6
# для python 2.7 и ниже import Tkinter # для python 3.0 и выше import tkinter<p>Либо так:</p>
6
# для python 2.7 и ниже import Tkinter # для python 3.0 и выше import tkinter<p>Либо так:</p>
7
# для python 2.7 и ниже from Tkinter import * # для python 3.0 и выше from tkinter import *<p>В Tkinter визуальные контроллы называют виджетами (<strong>widget</strong>- стандартизированный компонент графического интерфейса, с которым пользователь осуществляет взаимодействие).</p>
7
# для python 2.7 и ниже from Tkinter import * # для python 3.0 и выше from tkinter import *<p>В Tkinter визуальные контроллы называют виджетами (<strong>widget</strong>- стандартизированный компонент графического интерфейса, с которым пользователь осуществляет взаимодействие).</p>
8
<h2>Text в Tkinter</h2>
8
<h2>Text в Tkinter</h2>
9
<p>Text представляет собой виджет, позволяющий пользователю вводить любое количество текста. Text имеет дополнительное свойство wrap, которое отвечает за перенос (чтобы переносить по словам, используют значение WORD).</p>
9
<p>Text представляет собой виджет, позволяющий пользователю вводить любое количество текста. Text имеет дополнительное свойство wrap, которое отвечает за перенос (чтобы переносить по словам, используют значение WORD).</p>
10
<p>Пример:</p>
10
<p>Пример:</p>
11
from Tkinter import * root=Tk() text1=Text(root,height=7,width=7,font='Arial 14',wrap=WORD) text1.pack() root.mainloop()<p>В нашем случае методы insert, get и delete выполняют добавление, извлечение и удаление текcта. Первый аргумент является местом вставки в виде 'x.y', где x является строкой, а y - столбцом.</p>
11
from Tkinter import * root=Tk() text1=Text(root,height=7,width=7,font='Arial 14',wrap=WORD) text1.pack() root.mainloop()<p>В нашем случае методы insert, get и delete выполняют добавление, извлечение и удаление текcта. Первый аргумент является местом вставки в виде 'x.y', где x является строкой, а y - столбцом.</p>
12
<p>Пример:</p>
12
<p>Пример:</p>
13
text1.insert(1.0,'Добавим Текст\n\ в начало 1-й строки') text1.delete('1.0', END) # Удалим всё text1.get('1.0', END) # Извлечем всё<p>Таким образом, с помощью Text в Tkinter мы можем запрограммировать многострочное текстовое поле. К слову, такой виджет нередко используется при заполнении web-форм. По умолчанию его размер составляет 80 знакомест по горизонтали и 24 по вертикали.</p>
13
text1.insert(1.0,'Добавим Текст\n\ в начало 1-й строки') text1.delete('1.0', END) # Удалим всё text1.get('1.0', END) # Извлечем всё<p>Таким образом, с помощью Text в Tkinter мы можем запрограммировать многострочное текстовое поле. К слову, такой виджет нередко используется при заполнении web-форм. По умолчанию его размер составляет 80 знакомест по горизонтали и 24 по вертикали.</p>
14
<p>Но данные свойства мы можем поменять, используя опции width и height. Также можно конфигурировать шрифт, цвет и пр.</p>
14
<p>Но данные свойства мы можем поменять, используя опции width и height. Также можно конфигурировать шрифт, цвет и пр.</p>
15
from tkinter import * root = Tk() text = Text(width=25, height=5, bg="darkgreen", fg='white', wrap=WORD) text.pack() root.mainloop()<h2>Text и Scrollbar</h2>
15
from tkinter import * root = Tk() text = Text(width=25, height=5, bg="darkgreen", fg='white', wrap=WORD) text.pack() root.mainloop()<h2>Text и Scrollbar</h2>
16
<p>Когда в текстовое поле вводят больше линий текста, чем его высота, поле само будет прокручиваться вниз. Для прокрутки можно использовать колесико мышки, стрелки на клавиатуре или скроллер - полосу прокрутки.</p>
16
<p>Когда в текстовое поле вводят больше линий текста, чем его высота, поле само будет прокручиваться вниз. Для прокрутки можно использовать колесико мышки, стрелки на клавиатуре или скроллер - полосу прокрутки.</p>
17
<p>В Tkinter скроллеры производятся с помощью класса Scrollbar. В этом случае объект-скроллер связывается с виджетом, которому он нужен. И речь сейчас идёт не обязательно о многострочном текстовом поле. Нередко полосы прокрутки используются и в списках.</p>
17
<p>В Tkinter скроллеры производятся с помощью класса Scrollbar. В этом случае объект-скроллер связывается с виджетом, которому он нужен. И речь сейчас идёт не обязательно о многострочном текстовом поле. Нередко полосы прокрутки используются и в списках.</p>
18
from tkinter import * root = Tk() text = Text(width=20, height=7) text.pack(side=LEFT) scroll = Scrollbar(command=text.yview) scroll.pack(side=LEFT, fill=Y) text.config(yscrollcommand=scroll.set) root.mainloop()<p>В примере мы создаём скроллер, к которому через опцию command привязываем прокрутку текстового поля по оси y - text.yview. Далее, в свою очередь, текстовому полю устанавливаем ранее созданный скроллер - scroll.set, используя для этого опцию yscrollcommand.</p>
18
from tkinter import * root = Tk() text = Text(width=20, height=7) text.pack(side=LEFT) scroll = Scrollbar(command=text.yview) scroll.pack(side=LEFT, fill=Y) text.config(yscrollcommand=scroll.set) root.mainloop()<p>В примере мы создаём скроллер, к которому через опцию command привязываем прокрутку текстового поля по оси y - text.yview. Далее, в свою очередь, текстовому полю устанавливаем ранее созданный скроллер - scroll.set, используя для этого опцию yscrollcommand.</p>
19
<h2>Методы Text</h2>
19
<h2>Методы Text</h2>
20
<p>Главные методы у Text мы уже упоминали - get(), insert(), delete(). Но если в случае с однострочным текстовым полем достаточно указать один индекс элемента при его вставке либо удалении, то, когда речь идёт о многострочном поле, нужно указывать два - как номер строки, так и номер символа в данной строке (иными словами, номер столбца). Также стоит отметить, что нумерация строк здесь начинается с единицы, а нумерация столбцов - с нуля.</p>
20
<p>Главные методы у Text мы уже упоминали - get(), insert(), delete(). Но если в случае с однострочным текстовым полем достаточно указать один индекс элемента при его вставке либо удалении, то, когда речь идёт о многострочном поле, нужно указывать два - как номер строки, так и номер символа в данной строке (иными словами, номер столбца). Также стоит отметить, что нумерация строк здесь начинается с единицы, а нумерация столбцов - с нуля.</p>
21
from tkinter import * def insertText(): s = "Hello World" text.insert(1.0, s) def getText(): s = text.get(1.0, END) label['text'] = s def deleteText(): text.delete(1.0, END) root = Tk() text = Text(width=25, height=5) text.pack() frame = Frame() frame.pack() b_insert = Button(frame, text="Вставить", command=insertText) b_insert.pack(side=LEFT) b_get = Button(frame, text="Взять", command=getText) b_get.pack(side=LEFT) b_delete = Button(frame, text="Удалить", command=deleteText) b_delete.pack(side=LEFT) label = Label() label.pack() root.mainloop()<p>Собственно говоря, методы get() и delete() способны принимать не два, а лишь один аргумент. В данном случае обрабатывается лишь один символ в указанной позиции.</p>
21
from tkinter import * def insertText(): s = "Hello World" text.insert(1.0, s) def getText(): s = text.get(1.0, END) label['text'] = s def deleteText(): text.delete(1.0, END) root = Tk() text = Text(width=25, height=5) text.pack() frame = Frame() frame.pack() b_insert = Button(frame, text="Вставить", command=insertText) b_insert.pack(side=LEFT) b_get = Button(frame, text="Взять", command=getText) b_get.pack(side=LEFT) b_delete = Button(frame, text="Удалить", command=deleteText) b_delete.pack(side=LEFT) label = Label() label.pack() root.mainloop()<p>Собственно говоря, методы get() и delete() способны принимать не два, а лишь один аргумент. В данном случае обрабатывается лишь один символ в указанной позиции.</p>
22
<h2>Теги</h2>
22
<h2>Теги</h2>
23
<p>Особенность текстового поля библиотеки Tkinter - возможность форматировать текст непосредственно в нём, придавая разным его частям различное оформление. Реализуется это посредством методов tag_add() и tag_config(). Первый указанный метод добавляет тег, но нужно указывать его произвольное имя и отрезок текста, для которого он будет применяться. Что касается второго метода tag_config(), то он настраивает тегу стили оформления.</p>
23
<p>Особенность текстового поля библиотеки Tkinter - возможность форматировать текст непосредственно в нём, придавая разным его частям различное оформление. Реализуется это посредством методов tag_add() и tag_config(). Первый указанный метод добавляет тег, но нужно указывать его произвольное имя и отрезок текста, для которого он будет применяться. Что касается второго метода tag_config(), то он настраивает тегу стили оформления.</p>
24
from tkinter import * root = Tk() text = Text(width=50, height=10) text.pack() text.insert(1.0, "Hello world!\nline two") text.tag_add('title', 1.0, '1.end') text.tag_config('title', font=("Verdana", 24, 'bold'), justify=CENTER) root.mainloop()<h2>Вставка виджетов в текстовое поле</h2>
24
from tkinter import * root = Tk() text = Text(width=50, height=10) text.pack() text.insert(1.0, "Hello world!\nline two") text.tag_add('title', 1.0, '1.end') text.tag_config('title', font=("Verdana", 24, 'bold'), justify=CENTER) root.mainloop()<h2>Вставка виджетов в текстовое поле</h2>
25
<p>В Text мы можем вставлять и другие виджеты, используя метод window_creat(). Потребности особой в этом нет, но иногда может пригодиться с объектами типа Canvas. В нижеследующем примере мы вставляем метку в текущую (INSERT) позицию курсора:</p>
25
<p>В Text мы можем вставлять и другие виджеты, используя метод window_creat(). Потребности особой в этом нет, но иногда может пригодиться с объектами типа Canvas. В нижеследующем примере мы вставляем метку в текущую (INSERT) позицию курсора:</p>
26
from tkinter import * def smile(): label = Label(text=":)", bg="yellow") text.window_create(INSERT, window=label) root = Tk() text = Text(width=50, height=10) text.pack() button = Button(text=":)", command=smile) button.pack() root.mainloop()<p>Разместив метку в функции, мы сможем каждый раз при вызове функции создавать новую метку. В обратном случае, если бы метка находилась в основной ветке нашей программы, предыдущая бы исчезала.</p>
26
from tkinter import * def smile(): label = Label(text=":)", bg="yellow") text.window_create(INSERT, window=label) root = Tk() text = Text(width=50, height=10) text.pack() button = Button(text=":)", command=smile) button.pack() root.mainloop()<p>Разместив метку в функции, мы сможем каждый раз при вызове функции создавать новую метку. В обратном случае, если бы метка находилась в основной ветке нашей программы, предыдущая бы исчезала.</p>
27
<p>Подробнее о Tkinter и программировании GUI на Python читайте в официальной документации или на обучающих<a>сайтах</a>. Также мы рекомендуем пройти углубленный курс Python-разработки от опытных IT-специалистов:</p>
27
<p>Подробнее о Tkinter и программировании GUI на Python читайте в официальной документации или на обучающих<a>сайтах</a>. Также мы рекомендуем пройти углубленный курс Python-разработки от опытных IT-специалистов:</p>
28
28