Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и программирование. Язык Python. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
root.title("GUI на Python") name = StringVar() surname = StringVar() name_label = Label(text="Введите имя:") surname_label = Label(text="Введите фамилию:") name_label.grid(row=0, column=0, sticky="w") surname_label.grid(row=1, column=0, sticky="w") name_entry = Entry(textvariable=name) surname_entry = Entry(textvariable=surname) name_entry.grid(row=0,column=1, padx=5, pady=5) surname_entry.grid(row=1,column=1, padx=5, pady=5) message_button = Button(text="Click Me", command=display_full_name) message_button.grid(row=2,column=1, padx=5, pady=5, sticky="e") root.mainloop()
На рис. 15 представлено окно, являющееся результатом выполнения про­граммного кода.
Элемент Entry имеет ряд методов. Основными из которых представлены в
табл. 11.
Рис. 15. Окно с областями для ввода данных и окном,
отображающим введенные значения
101
Параметр
Назначение
insert(index, str):
Вставляет в текстовое поле строку по определенному ин-
дексу
get():
Возвращает введенный в текстовое поле текст
delete(first, last=None):
Удаляет символ по индексу first. Если указан параметр last, то удаление производится до индекса last. Чтобы уда-
лить до конца, в качестве второго параметра можно ис-
пользовать значение END
Т а б л и ц а 11. Основные методы элемента Entry
Пример
from tkinter import * from tkinter import messagebox def clear(): name_entry.delete(0, END) # кнопка Clear очищает поле, вызывая метод de- lete surname_entry.delete(0, END) # кнопка Clear очищает поле, вызывая метод
delete
def display(): messagebox.showinfo("GUI Python", name_entry.get() + " " + sur­name_entry.get()) # кнопка, используя метод get, получает введенный текст root = Tk() root.title("GUI на Python") name_label = Label(text="Введите имя:") surname_label = Label(text="Введите фамилию:") name_label.grid(row=0, column=0, sticky="w") surname_label.grid(row=1, column=0, sticky="w") name_entry = Entry() surname_entry = Entry() name_entry.grid(row=0,column=1, padx=5, pady=5) surname_entry.grid(row=1,column=1, padx=5, pady=5) # вставка начальных данных name_entry.insert(0, "Tom") # добавление в текстовое поле текста по умолча- нию surname_entry.insert(0, "Soyer") # добавление в текстовое поле текста по умол-
чанию
display_button = Button(text="Display", command=display) clear_button = Button(text="Clear", command=clear) display_button.grid(row=2, column=0, padx=5, pady=5, sticky="e") clear_button.grid(row=2, column=1, padx=5, pady=5, sticky="e") root.mainloop()
102
9.6. Элемент Checkbutton
Элемент Checkbutton представляет собой флажок, который может нахо­диться в двух состояниях: отмеченном и неотмеченном.
Пример
from tkinter import * root = Tk() root.title("GUI на Python") root.geometry("300x250") ismarried = IntVar() ismarried_checkbutton = Checkbutton(text="Женат/Замужем", variable=ismarried) ismarried_checkbutton.pack() ismarried_label = Label(textvariable=ismarried) ismarried_label.place(relx=.5, rely=.5, anchor="c") root.mainloop()
Отличительной чертой Checkbutton является возможность привязки к компоненту IntVar через параметр variable. В отмеченном состоянии привязан­ный компонент IntVar имеет значение 1, а в неотмеченном – 0. В итоге через IntVar мы можем получать значение, указанное пользователем.
На рис. 16 представлено окно, являющееся результатом выполнения про­граммного кода.
Рис. 16. Окно с флажком
Конструктор Checkbutton принимает ряд параметров, с помощью которо­го можно настроить отображение флажков:
Checkbutton(master, options)
103
Параметр
Назначение
activebackground:
Фоновый цвет флажка в нажатом состоянии
activeforeground:
Цвет текста флажка в нажатом состоянии
bg:
Фоновый цвет флажка
bitmap:
Монохромное изображение для флажка
bd:
Граница вокруг флажка
command:
Ссылка на функцию, которая вызывается при нажатии на
флажок
cursor:
Курсор при наведении на элемент
disabledforeground:
Цвет текста в состоянии DISABLED
font:
Шрифт
fg:
Цвет текста
height:
Высота элемента
image:
Графическое изображение, отображаемое на элементе
justify:
выравнивание текста, принимает значения CENTER,
LEFT, RIGHT
offvalue:
Значение ассоциированной с флажком переменной IntVar в неотмеченном состоянии, по умолчанию равно 0
onvalue:
Значение ассоциированной с флажком переменной IntVar в отмеченном состоянии, по умолчанию равно 1
padx:
Отступы справа и слева от текста до границы флажка
pady:
Отступы сверху и снизу от текста до границы флажка
relief:
Стиль флажка, по умолчанию имеет значение FLAT
selectcolor:
Цвет квадратика флажка
selectimage:
Изображение на флажке, когда он находится в отмеченном
состоянии
state:
Состояние элемента, может принимать значения
NORMAL (по умолчанию), DISABLED и ACTIVE
text:
Текст элемента
underline:
Индекс подчеркнутого символа в тексте флажка
variable:
Ссылка на переменную, как правило, типа IntVar, которая хранит состояние флажка
width:
Ширина элемента
wraplength:
Устанавливает перенос символов на другую строку в тек-
сте элемента
Параметр master представляет ссылку на родительское окно, а параметр options представляет набор параметров. В табл. 12 представлен набор парамет- ров options.
Т а б л и ц а 12. Набор параметров параметра options конструктора
Checkbutton
Пример from tkinter import *
root = Tk()
104
root.title("GUI на Python") root.geometry("300x250") python_lang = IntVar() python_checkbutton = Checkbutton(text="Python", variable=python_lang, onvalue=1, offvalue=0, padx=15, pady=10) python_checkbutton.grid(row=0, column=0, sticky=W) javascript_lang = IntVar() javascript_checkbutton = Checkbutton(text="JavaScript", variable=javascript_lang, onvalue=1, offvalue=0, padx=15, pady=10) javascript_checkbutton.grid(row=1, column=0, sticky=W) root.mainloop()
На рис. 17 представлено окно, являющееся результатом выполнения про­граммного кода.
Рис. 17. Окно с двумя флажками
9.7. Элемент Radiobutton
Элемент Radiobutton представляет переключатель, который может нахо­диться в двух состояниях: отмеченном или неотмеченном, но в отличие от Checkbutton переключатели могут создавать группу, из которой одномоментно можно выбрать только один переключатель.
Пример
from tkinter import * root = Tk() root.title("GUI на Python") root.geometry("300x250")
105
header = Label(text="Выберите курс", padx=15, pady=10) header.grid(row=0, column=0, sticky=W) lang = IntVar() python_checkbutton = Radiobutton(text="Python", value=1, variable=lang, padx=15, pady=10) python_checkbutton.grid(row=1, column=0, sticky=W) javascript_checkbutton = Radiobutton(text="JavaScript", value=2, variable=lang, padx=15, pady=10) javascript_checkbutton.grid(row=2, column=0, sticky=W) selection = Label(textvariable=lang, padx=15, pady=10) selection.grid(row=3, column=0, sticky=W) root.mainloop()
В представленном примере определены два переключателя, привязанные к одной переменной IntVar. При этом они имеют разные значения, устанавлива­емые через параметр value. Поэтому при включении одного переключателя другой автоматически перейдет в неотмеченное состояние.
На рис. 18 представлено окно, являющееся результатом выполнения про­граммного кода.
Рис. 18. Окно с двумя переключателями
Для настройки переключателя конструктор Radiobutton, как и других кон­структоров, используются два параметра:
Radiobutton (master, options)
Первый параметр master представляет ссылку на родительское окно, а второй параметр options объединяет набор параметров. В табл. 13 представлен набор параметров options.
106
Т а б л и ц а 13. Набор параметров параметра options конструктора
Параметр
Назначение
activebackground:
Фоновый цвет переключателя в нажатом состоянии
activeforeground:
Цвет текста переключателя в нажатом состоянии
bg:
Фоновый цвет переключателя
bitmap:
Монохромное изображение для переключателя
borderwidth:
Граница вокруг переключателя
command:
Ссылка на функцию, которая вызывается при нажатии на пере-
ключатель
cursor:
Курсор при наведении на элемент
font:
Шрифт
fg:
Цвет текста
height:
Высота элемента в строках текста. По умолчанию равно 1
image:
Графическое изображение, отображаемое на элементе
justify:
выравнивание текста, принимает значения CENTER, LEFT,
RIGHT
padx:
Отступы справа и слева от текста до границы переключателя
pady:
Отступы сверху и снизу от текста до границы переключателя
relief:
Стиль переключателя, по умолчанию имеет значение FLAT
selectcolor:
Цвет кружка переключателя
selectimage:
Изображение на переключателе, когда он находится в отмечен-
ном состоянии
state:
Состояние элемента, может принимать значения NORMAL (по
умолчанию), DISABLED и ACTIVE
text:
Текст элемента
textvariable:
Устанавливает привязку к переменной StringVar, которая задает текст переключателя
underline:
Индекс подчеркнутого символа в тексте элемента
variable:
Ссылка на переменную, как правило, типа IntVar, которая хранит состояние переключателя
value:
Значение переключателя
width:
Ширина элемента
wraplength:
Устанавливает перенос символов на другую строку в тексте эле-
мента
Radiobutton
Пример from tkinter import *
languages = [("Python", 1), ("JavaScript", 2), ("C#", 3), ("Java", 4)] def select(): l = language.get() if l == 1: sel.config(text="Выбран Python") elif l == 2:
107
sel.config(text="Выбран JavaScript") elif l == 3: sel.config(text="Выбран C#") elif l == 4: sel.config(text="Выбран Java") root = Tk() root.title("GUI на Python") root.geometry("300x280") header = Label(text="Выберите курс", padx=15, pady=10) header.grid(row=0, column=0, sticky=W) language = IntVar() row = 1 for txt, val in languages: Radiobutton(text=txt, value=val, variable=language, padx=15, pady=10, com­mand=select)\ .grid(row=row, sticky=W) row += 1 sel = Label(padx=15, pady=10) sel.grid(row=row, sticky=W) root.mainloop()
На рис. 19 представлено окно, являющееся результатом выполнения про­граммного кода.
108
Рис. 19. Окно с четырьмя переключателями
9.8. Элемент Listbox
Элемент Listbox в tkinter представляет список объектов. Пример
from tkinter import * languages = ["Python", "JavaScript", "C#", "Java"] root = Tk() root.title("GUI на Python") root.geometry("300x280") languages_listbox = Listbox() for language in languages: languages_listbox.insert(END, language) languages_listbox.pack() root.mainloop()
Для наполнения listboxa элементами в цикле for проходим по всем эле­ментам списка languages и добавляем каждый элемент в listbox с помощью ме­тода insert(). В качестве первого аргумента в insert передается индекс вставки элемента, но для последовательного добавление элементов следует вместо ин­декса использовать значение END.
На рис. 20 представлено окно, являющееся результатом выполнения про­граммного кода.
Для настройки элемента Listbox можно указать в его конструкторе пара­метры:
Рис. 20. Окно со списком из четрых значений
Listbox (master, options)
109
Параметр
Назначение
bg:
Фоновый цвет
bd:
Толщина границы вокруг элемента
cursor:
Курсор при наведении на Listbox
font:
Настройки шрифта
fg:
Цвет текст
height:
Высота элемента в строках. По умолчанию отображает 10 строк
highlightcolor:
Цвет элемента, когда он получает фокус
highlightthickness:
Толщина границы элемента, когда он находится в фокусе
relief:
Устанавливает стиль элемента, по умолчанию имеет значение
SUNKEN
selectbackground:
Фоновый цвет для выделенного элемента
selectmode:
Определяет, сколько элементов могут быть выделены. Может принимать следующие значения: BROWSE, SINGLE, MULTIPLE, EXTENDED. Например, если необходимо вклю­чить множественное выделение элементов, то можно использо-
вать значения MULTIPLE или EXTENDED
width:
Устанавливает ширину элемента в символах. По умолчанию ширина – 20 символов
xscrollcommand:
Задает горизонтальную прокрутку
yscrollcommand:
Устанавливает вертикальную прокрутку
В табл. 14 представлен набор параметров options. Т а б л и ц а 14. Набор параметров параметра options конструктора Listbox
Пример
from tkinter import * languages = ["Python", "JavaScript", "C#", "Java", "C/C++", "Swift", "PHP", "Visual Basic.NET", "F#", "Ruby", "Rust", "R", "Go", "T-SQL", "PL-SQL", "Typescript"] root = Tk() root.title("GUI на Python") scrollbar = Scrollbar(root) # создание прокрутки scrollbar.pack(side=RIGHT, fill=Y)
# организация прокрутки по вертикали
languages_listbox = Listbox(yscrollcommand=scrollbar.set, width=40) for language in languages: languages_listbox.insert(END, language) languages_listbox.pack(side=LEFT, fill=BOTH) scrollbar.config(command=languages_listbox.yview) root.mainloop()
На рис. 21 представлено окно, являющееся результатом выполнения про­граммного кода.
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]