Создание оконных приложений на языке программирования Python

Создание приложений с графическим интерфейсом с использованием различных графических библиотек с помощью языка Python. Рассмотрение стандартной графической библиотеки tkinter. Изменение цвета текста и фона у Button. Анализ добавления виджета Combobox.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 14.11.2023
Размер файла 230,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КАЗАХСКИЙ АГРОТЕХНИЧЕСКИЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ им. С.СЕЙФУЛЛИНА

ЛАБОРАТОРНАЯ РАБОТА № 9

ПО ДИСЦИПЛИНЕ: «АЛГОРИТМЫ, СТРУКТУРЫ ДАННЫХ И ПРОГРАММИРОВАНИЕ»

ТЕМА: Cоздание оконных приложений на языке программирования Python

АСТАНА 2023

Язык Python позволяет создавать приложения с графическим интерфейсом, для этого используются различные графические библиотеки. Остановимся на рассмотрении стандартной (входит в стандартный комплект Python) графической библиотеки tkinter. Первым делом при работе с tkinter необходимо создать главное (корневое) окно, в котором размещаются остальные графические элементы - виджеты. Некоторые виджеты (фреймы) используются для группировки других виджетов внутри себя. Есть специальный виджет кнопка, при нажатии на который происходят некоторые события (события можно обрабатывать).

Пример 1

В отдельном файле (mytk1.py, но не с именем tkinter.py!) выполним следующую простейшую программу для отображения ГЛАВНОГО ОКНА:

# Подключаем модуль, содержащий методы для работы с графикой

import tkinter

# Создаем главное (корневое) окно,

# в переменную window записываем ссылку на объект класса Tk

window = tkinter.Tk()

# Задаем обработчик событий для корневого окна

window.mainloop()

Результат выполнения программы:

Появилось полноценное окно, которое можно свернуть, растянуть или закрыть! И это только три строчки кода!

В оконных приложениях важно нажатие мыши, т.к. от этого зависит, например, какой пункт меню выберет пользователь

Пример 2

Следующий пример демонстрирует создание ВИДЖЕТА LABEL:

import tkinter

window = tkinter.Tk()

# Создаем объект-виджет класса Label в корневом окне window

# text - параметр для задания отображаемого текста

label = tkinter.Label (window, text = "Это текст в окне!")

# Отображаем виджет с помощью менеджера pack

label.pack()

window.mainloop()

Результат работы программы:

Пример 3

Следующий пример демонстрирует размещение ВИДЖЕТОВ ВО ФРЕЙМЕ:

import tkinter

window = tkinter.Tk()

# Создаем фрейм в главном окне

frame = tkinter.Frame(window)

frame.pack()

# Создаем виджеты и помещаем их во фрейме

frame first = tkinter.Label (frame, text='First label')

# Отображаем виджет с помощью менеджера pack

first.pack()

second = tkinter.Label (frame, text='Second label')

second.pack()

third = tkinter.Label (frame, text='Third label')

third.pack()

window.mainloop()

Пример выполнения программы:

Пример 4

Можно изменять ПАРАМЕТРЫ ФРЕЙМА в момент создания объекта

import tkinter

window = tkinter.Tk()

frame = tkinter.Frame(window)

frame.pack()

# Можем изменять параметры фрейма:

frame2 = tkinter.Frame(window, borderwidth=4, relief=tkinter.GROOVE)

frame2.pack()

# Размещаем виджет в первом фрейме

(frame) first = tkinter.Label (frame, text='First label')

first.pack()

# Размещаем виджеты во втором фрейме (frame2)

second = tkinter.Label (frame2, text='Second label')

second.pack()

third = tkinter.Label (frame2, text='Third label')

third.pack()

window.mainloop()

Результат работы программы:

Пример 5

В следующем примере для отображения в ВИДЖЕТЕ LABEL содержимого переменной, используется переменная data класса StringVar (из модуля tkinter). В дальнейшем из примеров станет понятнее, почему в tkinter используются переменные собственного класса.

import tkinter

window = tkinter.Tk()

# Создаем объект класса StringVar и присваиваем указатель на него data

# (создаем строковую переменную, с которой умеет работать tkinter)

data = tkinter.StringVar()

# Метод set класса StringVar позволяет изменить содержимое переменной:

data.set ('Данные в окне')

# textvariable присваиваем ссылку на строковый объект из переменной data

label = tkinter.Label (window, textvariable = data)

label.pack()

window.mainloop()

Результат работы программы:

Пример 6

Шаблон «Модель-вид-контроллер» на примере модуля tkinter

Следующий пример показывает, каким образом использовать виджет (Entry) для ввода данных: графический интерфейс виджет

import tkinter

window = tkinter.Tk()

frame = tkinter.Frame(window) frame.pack()

var = tkinter.StringVar()

# Обновление содержимого переменной происходит в режиме реального времени label = tkinter.Label(frame, textvariable=var)

label.pack()

# Пробуем набрать текст в появившемся поле для ввода entry = tkinter.Entry(frame, textvariable=var) entry.pack()

window.mainloop()

Запустим программу и попробуем набрать произвольный текст:

Пример 6

(Следующий пример демонстрирует возможности обработки событий при нажатии на кнопку (ВИДЖЕТ BUTTON)):

import tkinter

# Контроллер: функция вызывается в момент нажатия на кнопку

def click():

# метод get() возвращает текущее значение counter

# метод set() - устанавливает новое значение

counter counter.set (counter.get() + 1)

window = tkinter.Tk()

# Модель: создаем объект класса IntVar

counter = tkinter.IntVar()

# Обнуляем созданный объект с помощью метода set()

counter.set (0) frame = tkinter.

Frame (window)

frame.pack()

# Создаем кнопку и указываем обработчик (функция click) при нажатии на нее

button = tkinter.Button (frame, text='Click', command=click)

button.pack()

# Вид: в реальном времени обновляется содержимое виджета Label

label = tkinter.Label (frame, textvariable=counter)

label.pack()

window.mainloop()

Результат работы программы:

Пример 7

Более сложный пример с двумя кнопками и двумя обработчиками событий (click_up, click_down):

import tkinter

window = tkinter.Tk()

# Модель:

counter = tkinter.IntVar()

counter.set(0)

# Два контроллера:

def click_up():

counter.set (counter.get() + 1)

def click_down():

counter.set (counter.get() - 1)

# Вид:

frame = tkinter.Frame (window)

frame.pack()

button = tkinter.Button (frame, text='Up', command=click_up)

button.pack()

button = tkinter.Button (frame, text='Down', command=click_down)

button.pack()

label = tkinter.Label (frame, textvariable=counter)

label.pack()

window.mainloop()

Пример 8

Tkinter позволяет изменять параметры виджетов в момент их создания:

import tkinter

window = tkinter.Tk()

# Создаем кнопку, изменяем шрифт с помощью кортежа button = tkinter.Button(window, text='Hello',

font=('Courier', 14, 'bold italic'))

button.pack() window.mainlo)

Результат выполнения программы:

В следующем примере изменяются параметры виджета Label:

import tkinter

window = tkinter.Tk()

# Изменяем фон, цвет текста:

button = tkinter.Label(window, text='Hello', bg='green', fg='white') button.pack()

window.mainloop()

Результат выполнения программы:

Пример 9

Менеджер расположения (геометрии) pack тоже имеет параметры:

import tkinter

window = tkinter.Tk()

frame = tkinter.Frame (window) frame.pack()

label = tkinter.Label(frame,text='Name')

# Выравнивание по левому краю

label.pack (side='left') entry = tkinter.Entry (frame) entry.pack (side='left') window.mainloop()

Результат выполнения программы:

Настройка размеров окна приложения

Мы можем установить размер окна по умолчанию, используя функцию geometry следующим образом:

window.geometry('400x250')

В приведенной выше строке устанавливается окно шириной до 400 пикселей и высотой до 250 пикселей.

Изменение цвета текста и фона у Button

Вы можете поменять цвет текста кнопки или любого другого виджета, используя свойство fg. Кроме того, вы можете поменять цвет фона любого виджета, используя свойство bg.

btn = Button(window, text="Не нажимать!", bg="black", fg="red")

Добавление виджета Combobox

Чтобы добавить виджет поля с выпадающем списком, используйте класс Combobox из ttk следующим образом:

from tkinter.ttk import Combobox

combo = Combobox(window)

Затем добавьте свои значения в поле со списком.

from tkinter import *

from tkinter.ttk import Combobox

window = Tk()

window.title("Добро пожаловать в приложение PythonRu")

window.geometry('400x250')

combo = Combobox(window)

combo['values'] = (1, 2, 3, 4, 5, "Текст")

combo.current(1) # установите вариант по умолчанию

combo.grid(column=0, row=0)

window.mainloop()

Мы добавляем элементы combobox, используя значения tuple.

Чтобы установить выбранный элемент, вы можете передать индекс нужного элемента текущей функции.

Чтобы получить элемент select, вы можете использовать функцию get вот таким образом:

combo.get()

Добавление виджета Checkbutton (чекбокса)

С целью создания виджета checkbutton, используйте класс Checkbutton:

from tkinter.ttk import Checkbutton

chk = Checkbutton(window, text='Выбрать')

Кроме того, вы можете задать значение по умолчанию, передав его в параметр var в Checkbutton:

from tkinter import *

from tkinter.ttk import Checkbutton

window = Tk()

window.title("Добро пожаловать в приложение PythonRu")

window.geometry('400x250')

chk_state = BooleanVar()

chk_state.set(True) # задайте проверку состояния чекбокса

chk = Checkbutton(window, text='Выбрать', var=chk_state)

chk.grid(column=0, row=0)

window.mainloop()

Самостоятельная работа 1

Напишите программу, переводящую градусы по Фаренгейту в градусы по Цельсию.

Интерфейс работы с программой представлен ниже. TF = 9/5 * TC + 32

Размещено на http://www.allbest.ru/

Самостоятельная работа 2

Напишите программу, которая отображает случайное слово на русском языке (тип данных dict). Пользователь пытается угадать его на английском (или другом языке).

Дополнительно ограничить работу программы по числу неправильно угаданных слов.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.