HTML Diff
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