Файл: Методические указания по подготовке к практическим занятиям, в том числе в интерактивной форме, и самостоятельному изучению дисциплины для школьников 911 классов общеобразовательных средних учебных заведений.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.12.2023
Просмотров: 302
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
33
>>> d1.update(d2)
>>> d1
{'a': 10, 'b': 200, 'c': 30, 'd': 400}
В этом примере ключ ‗b‘ уже существует в d1, поэтому его значение обновляется до 200, значение для этого ключа из d2. Однако в d1 нет ключа ‗d‘, поэтому эта пара ―ключ- значение‖ добавляется из d2.
>>> d1 = {'a': 10, 'b': 20, 'c': 30}
>>> d1.update([('b', 200), ('d', 400)])
>>> d1
{'a': 10, 'b': 200, 'c': 30, 'd': 400}
Или значения для объединения можно указать в виде списка аргументов ключевого слова:
>>> d1 = {'a': 10, 'b': 20, 'c': 30}
>>> d1.update(b=200, d=400)
>>> d1
{'a': 10, 'b': 200, 'c': 30, 'd': 400}
Вывод
Списки и словари – два наиболее часто используемых типа Python. Доступ к элементам списков осуществляется по числовому индексу в зависимости от порядка, а к элементам словаря – по ключу. stoliza={'Russia':'Moskva','USA':'Vashington'} y=stoliza.get('Russia') print(y) x = stoliza['USA'] print(x)
Извлечение элементов словаря по ключу dict[key] в Python.
Справочник по языку Python3
Операции над словарями dict в Python.
Извлечение элементов словаря по ключу dict[key] в Python.
Синтаксис: dict[key]
Параметры: key - ключ словаря
Возвращаемое значение: элемент словаря, соответствующий ключу key
Описание:
Операция dict[key] вернет элемент словаря dict с ключом key. Операция вызывает исключение KeyError, если ключ key отсутствует в словаре.
Если подкласс dict определяет метод __missing__() и ключ отсутствует, операция d[key] вызывает этот метод с ключом key в качестве аргумента. Затем операция d[key] возвращает или вызывает все, что было возвращено или вызвано вызовом
__missing__(key). Никакие другие операции или методы не вызывают __missing__(). Если
__missing__() не определен, то возникает KeyError.
__missing__() должен быть методом, он не может быть переменной экземпляра.
>>> class Counter(dict):
... def __missing__(self, key):
... return 0
>>> c = Counter()
34
>>> c['red']
0
>>> c['red'] += 1
>>> c['red']
1
В приведенном выше примере показана часть реализации collections.Counter.
0>0>
1 2 3 4 5 6 7 8 9 10
Примеры использования:
ГОРОД
>>> x = {'Москва': 1, 'Питер': 2, 'Красноярск': 3, 'Новосибирск': 4}
>>> x['Питер']
# 2
>>> x['Новосибирск']
# 4
>>> x['Кемерово']
# Traceback (most recent call last):
# File "
# KeyError: 'Кемерово' d = {
1: '1',
'2': 2,
3: '3',
} def get_key(d, value): for k, v in d.items(): if v == value: return k print(get_key(d, '1')) print(get_key(d, 2)) print(get_key(d, 42)) когда нужно получать значение по ключу и ключ по значению, нужно завести два словаря. temp = {'response': [555, {'nomer': 750, 'name': 'Оля'},
{'nomer': 24, 'name': 'Петя'},
{'nomer': 741, 'name': 'Игорь'},
{'nomer': 11, 'name': 'Юля'},
{'nomer': 254, 'name': 'Лена'},]} for t in temp['response'][1:]: print("{:<4} {}".format(t['nomer'], t['name']))
35
from random import randint
A=25*[0]
K=0
for i in range(len(A)):
A[i]=randint(1,5)
if A[i]>3:K+=1
print(A)
print("K=",K)
Решение
одним из вариантов может быть
1 2 for t in temp['response'][1:]: print(("{:<6} "*len(t)).format(t.get('nomer'), t.get('name'), t.get('city')))
1 2 for t in temp['response'][1:]: print("{:<4} {:<6} {}".format(t.get('nomer'), t.get('name'), t.get('city', '')))
1 2
3 4
5 for t in temp['response'][1:]: print(('{{:<{}}} {{:<{}}} {{}}'.format(max([len(str(x.get('nomer'))) for x in temp['response'][1:]]) + 1, max([len(str(x.get('name'))) for x in temp['response'][1:]]) +
1)).format( t.get('nomer'), t.get('name'), t.get('city', '')
))
Практическая работа №4 к уроку 4 Массивы
Задание 1 Таблица умножения
Таблица 12 Таблица умножения
Программа+результат import math print('таблица умножения') s1 = 10 for i in range(1, s1+1): print(*range(i, i*s1+1, i), sep='\t')
36 n = int(input('Введите n (число элементов):')) d = int(input('Введите d (разность):') or -2) a = 2
# a - первый член последовательности,
# d - разность прогрессии,
# n - число элементов последовательности print(
(2 * a + d * (n - 1))/2 * n, list(range(a, a + d * (n - 1) , d))
)
УРОК 5 Методы сортировки переменных
Практическая работа №5 к уроку 5 Методы сортировки переменных for i in range(10,100,1): a1=i%10 a2=i//10 sum=a1+a2 rez=sum+(sum)**2 if rez==i: print(i) print('Ваша ФАМИЛИЯ')
37
Список литературы
1. https://pythonworld.ru/tipy-dannyx-v-python/vse-o-funkciyax-i-ix-argumentax.html
2. http://labs.org.ru/python-3/
3. http://www.4stud.info/add-ons/define-a-function-in-python.html
4. https://python-scripts.com/functions-python
УРОК 6 Подпрограммы, функции и процедуры в Python
Практическая работа 6 к уроку 6 Функции и процедуры в Python
Пример 1( ДЗ) ЗАПИСАТЬ РЕШЕНИЕ
Определите значение переменной а после выполнения данного алгоритма: а := 17 b := 23 b := a+b+1 а := b+a
В ответе укажите одно целое число — значение переменной а.
Решение: а := 17 b := 23 b := a+b+1=17+23+1=41 а := b+a=41+17=58
Ответ: 58
Пример 2 (решить самостоятельно)
Определите значение переменной b после выполнения данного алгоритма: а := 3 b := 5 а := 6+а*b b := b+а/3
В ответе укажите одно целое число — значение переменной b.
38
Урок 2 УРОК Графические объекты в Python. Модуль Turtle (черепашка)
Классная работа
1) Сделать в тетрадь конспект основных команд
2) Переписать в тетрадь коды программ
Практическая работа
3) Выполнить программы на сайте Мета школа черепашка https://metaschool.ru/pub/konkurs/python/turtle/index.p hp
Вместо слова фамилия писать свою фамилию
4) Прислать фотографии работ в элжур
Домашнее задание
Нарисовать на ваш выбор кораблик , самолет или
любое
транспортное
средство
на
сайте
https://metaschool.ru/pub/konkurs/python/turtle/index.p hp
и прислать скриншот программы и результата в
течение пяти дней
в элжур
Классная работа
Системы координат в Pascal и Python : отличия
program korablik; uses graphabc; begin moveto(
100
,
100
); lineto(
300
,
100
); lineto(
260
,
160
); lineto(
140
,
160
); lineto(
100
,
100
); end. import turtle t = turtle.Turtle() t.shape('turtle') t.up() t.goto(-100,20) t.down() t.goto(100,20) t.goto(60,-40) t.goto(-60,-40) t.goto(-100,20) t.screen.exitonclick() t.screen.mainloop()
39
Основные команды модуля Turtle (черепашка) в Python
Turtle модуль для Питон, позволяющий создавать графические объекты, рисунки в специальном окне.
Чтобы начать работу с модулем, нужно ввести объект Turtle() import turtle t = turtle.Turtle()
Чтобы программа с модулем turtle на Python работала корректно, в самом конце программы всегда нужно прописывать две команды. t.screen.exitonclick() t.screen.mainloop()
С помощью команды t.screen.exitonclick() программа на Python реагирует на нажатие кнопки мыши после исполнения программы. Если пользователь нажмѐт на левую кнопку мыши, пока курсор находится в окне для графики модуля turtle, то окно закроется. t.screen.mainloop() останавливает выполнение программы.
Черепаха умеет выполнять небольшой набор команд, а именно:
Таблица 13
Команда
Значение
forward(X)
Пройти вперѐд X пикселей backward(X)
Пройти назад X пикселей left(X)
Повернуться налево на X градусов right(X)
Повернуться направо на X градусов penup()
Не оставлять след при движении pendown()
Оставлять след при движении shape(X)
Изменить значок черепахи (―arrow‖, ―turtle‖, ―circle‖, ―square‖, ―triangle‖,
―classic‖) stamp()
Нарисовать копию черепахи в текущем месте color()
Установить цвет begin_fill()
Необходимо вызвать перед рисованием фигуры, которую надо закрасить end_fill()
Вызвать после окончания рисования фигуры width()
Установить толщину линии goto(x, y)
Переместить черепашку в точку (x, y)
Можно писать сокращенные команды t.fd(x)-вперед на х пикселей t.bk(x)-назад на х пикселей t.left(x) влево на х градусов
40 t.right(x) вправо t.goto(x, y) перемещение в заданную точку, где x и y – координаты точки, в которую должна переместиться черепашка t.up() без отображения t.down() с отображением t.begin_fill(), t.end_fill() t.up()
Поднять перо t.goto(-100,-30)
Переместиться на 100 пикселей влево и на
30 пикселей вниз t.down()
Опустить перо t.color('red')
Поменять цвет на красный t.circle(30)
Нарисовать окружность
Начать и остановить заливку. Например, нарисовать жѐлтый круг с красным контуром: t.color('red') t.fillcolor('yellow') t.begin_fill() t.circle(100) t.end_fill()
Или, например, нарисовать жѐлтый пятиугольник с красным контуром: t.color('red') t.fillcolor('yellow') t.begin_fill() t.circle(100, 360, 5) t.end_fill() t.color(c)
Изменить цвет на c. Рекомендуемые цвета:
-black,
-blue, -brown, -cyan, -gold,
-green, -grey, -magenta, -orange, -pink, -red, -violet, -yellow. Цвет ставится в кавычки. Например, изменим цвет на красный: t.color('red') t.forward(d)
Передвинуться вперѐд на d пикселей, например, на 50: t.forward(50) t.goto(x,y)
Перейти в точку с координатами (x,y), например, (100,15): t.goto(100, 150) t.left(angle)
Повернуть налево на угол angle, например, на 90 градусов: t.left(90) t.penup()
Поднять перо. Если перо поднято, черепашка не оставляет след при движении: t.penup() t.pendown()
Опустить перо. Если перо опущено, черепашка оставляет след при движении: t.pendown() t.right(angle)
Повернуть направо на угол angle, например, на 60 градусов: t.right(60) t.stamp()
Поставить отпечаток, эта команда без параметров:
41 t.stamp()
Практическая работа
Задание 1. Правильный треугольник
Рисуем правильный треугольник со стороной 100 пикселей
Код
Результат import turtle t = turtle.Turtle() t.shape('turtle') t.write("Фамилия",font=('arial',24)) t.fd(100) t.left(120) t.fd(100) t.left(120) t.fd(100) t.left(120) t.screen.exitonclick() t.screen.mainloop()
Задание 2. Квадрат
Рисуем квадрат со стороной 100 пикселей
Код
Результат import turtle t = turtle.Turtle() t.shape('turtle') t.write("Фамилия",font=('arial',24)) t.fd(100) t.left(90) t.fd(100) t.left(90) t.fd(100) t.left(90) t.fd(100) t.left(90) t.screen.exitonclick() t.screen.mainloop()
Задание 3. Цветок из окружностей
Рисуем окружности радиуса 30 пикселей с поворотом на 90 градусов
Код
Результат import turtle t = turtle.Turtle() t.shape('turtle') t.write("Фамилия",font=('arial',24)) t.circle(30) t.left(90) t.circle(30) t.left(90) t.circle(30) t.left(90) t.circle(30) t.screen.exitonclick()
42 t.screen.mainloop()
Задание 4. Домик разноцветный
Код
Результат import turtle t = turtle.Turtle() t.shape('turtle') t.color("yellow") t.begin_fill() def rectangle(n): for (i) in range(n): t.forward(200) t.right(90) rectangle(4) t.end_fill() t.color('orange') t.begin_fill() t.left(45) t.forward(140) t.right(90) t.forward(140) t.end_fill() t.penup() t.left(45) t.goto(100,-130) t.pendown() t.color('cyan') t.begin_fill() t.circle(40) t.end_fill() t.color('green') t.write("Фамилия",font=('arial',24)) t.end_fill()
Домашнее задание
Нарисовать на ваш выбор кораблик , самолет или любое транспортное средство на
сайте https://metaschool.ru/pub/konkurs/python/turtle/index.php
и прислать скриншот программы и результата в течение пяти дней
в элжур
43 import turtle t = turtle.Turtle() t.shape('turtle') t.circle(30) t.left(90) t.circle(30) t.left(90) t.circle(30) t.left(90) t.circle(30) t.screen.exitonclick() t.screen.mainloop()
Таблица 14
from turtle import * t = Turtle() t.screen.setup(800, 800) for i in range(20): t.fd(8) t.up() t.fd(8) t.down() t.screen.exitonclick() t.screen.mainloop()
Таблица 15
from turtle import * t = Turtle() t.screen.setup(800, 800) def rectangle(w, h): for i in range(2): t.left(90) t.fd(h) t.left(90) t.fd(w) rectangle(320, 200) t.screen.exitonclick() t.screen.mainloop()
Таблица 16
44 from turtle import * t = Turtle() t.screen.setup(800, 800) def sq_cr(side): for i in range(4): t.left(90) t.fd(side) t.bk(side / 2) t.circle(side / 2, 360) t.left(180) t.circle(side / 2, 360) sq_cr(250) t.screen.exitonclick() t.screen.mainloop()
from turtle import * t = Turtle() t.screen.setup(800, 800) def sq_cr(side): for i in range(6): t.left(60) t.fd(side) t.left(180) sq_cr(100) t.screen.exitonclick() t.screen.mainloop() https://metaschool.ru/pub/konkurs/python/turtle/index.php
45 import turtle t = turtle.Turtle() t.shape('turtle') def sq_cr(side): for i in range(3): t.fd(side) t.left(120) sq_cr(150) t.screen.exitonclick() t.screen.mainloop()
Таблица 17
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.circle(30)
t.circle(40)
t.circle(50)
t.circle(60)
t.circle(70)
t.circle(80)
t.screen.exitonclick()
t.screen.mainloop()
46
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.left(90)
t.circle(30)
t.circle(40)
t.circle(50)
t.circle(60)
t.circle(70)
t.circle(80)
t.screen.exitonclick()
t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') def rectangle(r): for i in range(4): t.fd(r) t.left(90) rectangle(30) rectangle(40) rectangle(50) rectangle(60) rectangle(70) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') def rectangle(r): for i in range(4): t.fd(r) t.left(90) rectangle(30) t.penup() t.goto(-10,-10) t.pendown() rectangle(50)
47 t.penup() t.goto(-20,-20) t.pendown() rectangle(70) t.penup() t.goto(-30,-30) t.pendown() rectangle(90) t.screen.exitonclick() t.screen.mainloop()
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.circle(30)
t.penup()
t.goto(0,-30)
t.pendown()
t.circle(60)
t.penup()
t.goto(0,-60)
t.pendown()
t.circle(90)
t.screen.exitonclick()
t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') t.color('red') t.circle(60) t.penup() t.goto(-100,0) t.pendown() t.color('orange') t.circle(60) t.penup() t.goto(+100,0) t.pendown()
48 t.color('blue') t.circle(60) t.penup() t.goto(-60,-80) t.pendown() t.color('green') t.circle(60) t.penup() t.goto(+60,-80) t.pendown() t.color('yellow') t.circle(60) t.screen.exitonclick() t.screen.mainloop() import turtle t=turtle.Turtle() t.shape('turtle') t.up() t.goto(-200,-100) t.down() def zabor(n): for i in range(n): t.fd(40) t.left(90) t.fd(200) t.left(30) t.fd(40) t.left(120) t.fd(40) t.left(30) t. fd(200) t.left(90) t.up() t.goto(-200+60*(i+1),-100) t.down() zabor(7) t.screen.exitonclick() t.screen.mainloop() import turtle t=turtle.Turtle() t.shape('turtle') t.up() t.goto(-320,0) t.down() def zabor(n): for i in range(n): t.fd(100)
49 t.left(90) t.fd(40) t.left(90) t.fd(100) t.left(90) t.fd(40) t.left(90) t.penup() t.fd(20) t.right(90) t.fd(40) t.left(90) t.pendown() t.circle(20) t.penup() t.fd(60) t.down() t.circle(20) t.up() t.goto(-320+140*(i+1),0) t.pendown() zabor(7) t.screen.exitonclick() t.screen.mainloop() import turtle t=turtle.Turtle() t.shape('turtle') t.up() t.goto(-120,0) t.down() def krug(n): for i in range(n): t.circle(20) t.up() t.fd(40) t.down() t.circle(20) t.up() t.fd(40) t.down() t.circle(20) t.up() t.fd(40) t.down() t.circle(20) t.up() t.fd(40) t.down()
50 t.up() t.goto(-120,0-40*(1+i)) t.down() krug(7) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') import random zwet=['red','green','blue','orange'] def krugi(n): for i in range(n): t.up() t.goto(-200+i*40,0) t.down() t.color(random.choice (zwet)) t.circle(20) krugi(7) t.screen.exitonclick() t.screen.mainloop()
51 import turtle t = turtle.Turtle() t.shape('turtle') import random t.up() t.goto(random.randint(-100,100), random.randint(-100,100)) t.down() t.color('red') t.circle(30) t.up() t.goto(random.randint(-20,50),-30) t.down() t.color('blue') t.circle(30) t.up() t.goto(-100,30) t.down() t.color('green') t.circle(30) t.up() t.goto(random.randint(-20,150),50) t.down() t.color('yellow') t.circle(30) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') t.color("yellow") t.begin_fill() def rectangle(n): for (i) in range(n): t.forward(200) t.right(90) rectangle(4) t.end_fill() t.color('orange') t.begin_fill() t.left(45) t.forward(140) t.right(90) t.forward(140) t.end_fill()
52 t.penup() t.left(45) t.goto(100,-130) t.pendown() t.color('cyan') t.begin_fill() t.circle(40) t.end_fill()
Красный прямоугольник зеленый круг
import turtle t = turtle.Turtle() t.shape('turtle') t.color("red") t.begin_fill() t.fd(100) t.left(90) t.fd(50) t.left(90) t.fd(100) t.left(90) t.fd(50) t.left(90) t.end_fill() t.color("green") t.begin_fill() t.circle(100) t.end_fill() t.screen.exitonclick() t.screen.mainloop()
53
Таблица 18 import turtle t = turtle.Turtle() t.shape('turtle') t.fd(100) t.right(90) t.fd(40) t.left(90) t.fd(60) t.right(90) t.fd(40) t.right(90) t.fd(160) t.right(90) t.fd(80) t.penup() t.goto(60,-110) t.pendown() t.circle(30) t.penup() t.goto(160,-110) t.pendown() t.circle(30) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') import random colors=['red','green','blue','orange'] t.color(random.choice (colors)) t.circle(30) t.up() t.goto(random.randint(-100,100),30) t.down() t.color(random.choice (colors)) t.circle(30) t.up() t.goto(random.randint(-100,100),30) t.down() t.color(random.choice (colors)) t.circle(30) t.up()
54 t.goto(random.randint(-100,100),30) t.down() t.color(random.choice (colors)) t.circle(30) t.screen.exitonclick() t.screen.mainloop()
Пункт Вставка текста исполнитель черепашка в питон
Python Turtle, нарисуйте текст на экране с большим шрифтом import turtle t = turtle.Turtle() t.shape('turtle') import turtle t = turtle.Turtle() t.shape('turtle') turtle.fillcolor("blue") turtle.write("ПРИВЕТ", font=('arial',16,)) t.screen.exitonclick() t.screen.mainloop()
Размер шрифта слишком мал. Как увеличить размер шрифта? метод записи python turtle для записи текста на экране следующим образом: turtle.write("messi fan")
Используйте необязательный аргумент font для turtle.write() из документов: turtle.write( arg, move = False, align = "left", font = ( "Arial", 8, "normal" ) )
Параметры:
arg - объект, который будет записан на TurtleScreen
move - True/False
align - одна из строк "влево", "в центре" или вправо "
font - тройной (fontname, fontsize, fonttype)
Итак, вы можете сделать что-то вроде turtle.write("messi fan", font=("Arial", 16, "normal")), чтобы изменить размер шрифта до 16 (по умолчанию 8).
Здесь вы также можете использовать "жирный" и "курсив" вместо "нормальный".
"Verdana" может использоваться для имени шрифта..
Но еще один вопрос: как вы устанавливаете цвет текста, который вы пишете?
Ответ. Вы используете метод turtle.color() или turtle.fillcolor(), например: turtle.fillcolor("blue") или просто: turtle.color("orange")
Цвет текста
Эти вызовы должны выполняться перед командой turtle.write().
55
Таблица 19
import turtle t = turtle.Turtle() t.shape('turtle') def risunok(d, r, rBig): for i in range(d): t.circle(rBig, 360 / d) t.dot(r, "red") risunok(45, 10, 50) t.screen.exitonclick() t.screen.mainloop()
Таблица 20
from turtle import * t = Turtle() t.screen.setup(800, 500) t.up() t.goto(-250, 0) t.down() t.setheading(270) for i in range(5): t.circle(50, 180) t.begin_fill() t.circle(-50, 180) t.end_fill() t.screen.exitonclick() t.screen.mainloop() from turtle import * t = Turtle() t.screen.setup(800, 800) t.shape("turtle") t.color("blue") t.stamp() t.color("black") t.up() t.fd(50) t.down() t.circle(200, 70) t.screen.exitonclick() t.screen.mainloop()
import turtle t = turtle.Turtle() t.shape('turtle')
56 import turtle t = turtle.Turtle() t.shape('turtle') t.fillcolor("blue") t.up() t.goto(-100,-30) t.down() t.circle(30) t.up() t.goto(100,-30) t.down() t.circle(70) t.goto(100,30) t.down() t.circle(30) t.write("ПРИВЕТ",font=('arial',24)) t.screen.exitonclick() t.screen.mainloop()
Таблица 21
import turtle t = turtle.Turtle() t.shape('turtle') import random def risunok(d, r, rBig): for i in range(d): t.fd(d) t.dot(r, "red") risunok(50, 10, random.randint(-50,50)) t.screen.exitonclick() t.screen.mainloop()
57
УРОК 6 Циклы с параметром и циклы с предусловием
Цикл это многократное повторение каких-то действий
Телом цикла называется та последовательность кода, которую нужно выполнить несколько раз.
Единоразовое выполнение – это итерация.
Цикл «while»
While с английского языка переводится, как «до тех пор, как». Это достаточно универсальный цикл, он немного похож на условие if, но его код выполняется не один раз.
Его условие записывается до тела цикла. После того, как оно выполнено первый раз, программа возвращается к заголовку и снова повторяет все действия. Этот процесс заканчивается тогда, когда условие цикла больше не может быть соблюдено, иными словами перестает быть истинным. Тем, что заранее неизвестно количество проверок, он отличается от предыдущего цикла for. Кстати, еще его называют циклом с
предусловием. for [элемент] in [последовательность]:
[сделать указанное] while [условие истинно]:
[сделать указанное]
Практическая работа №6 к уроку 6 Циклы с параметром и циклы с предусловием.
Гомотетия и движение
Задание 1 Написать программу, которая рисует из окружностей цветочный рисунок из окружностей
Рисунок 1
Программа без цикла
Программа с циклом с пр
58 import turtle t = turtle.Turtle() t.shape('turtle') t.circle(30) t.left(90) t.circle(30) t.left(90) t.circle(30) t.left(90) t.circle(30) t.left(90) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') def risunok(r,n): for i in range(n): t.circle(r) t.left(360/n) risunok(30,4) t.screen.exitonclick() t.screen.mainloop()
Таблица 22
import turtle t = turtle.Turtle() t.shape('turtle') def risunok(r,n): for i in range(n): t.circle(r) t.left(360/n) risunok(30,10) t.screen.exitonclick() t.screen.mainloop()
Задание 3 Написать программу, которая рисует множество окружностей с
увеличением размера окружностей в цикле
Без цикла import turtle t = turtle.Turtle() t.shape('turtle') t.circle(20) t.circle(40) t.circle(60) t.circle(80) t.circle(100) t.screen.exitonclick() t.screen.mainloop()
59
С циклом import turtle t = turtle.Turtle() t.shape('turtle') def risunok(n): for i in range(n): t.circle(20*n) risunok(5) t.screen.exitonclick() t.screen.mainloop()
60
Задание 4 Написать программу, которая рисует множество окружностей с поворотом и увеличением размера окружностей в цикле import turtle t = turtle.Turtle() t.shape('turtle') def risunok(n): for i in range(n): t.fd(10*i) t.left(120) t.fd(10*i) t.left(120) t.fd(10*i) t.left(120) risunok(10) t.screen.exitonclick() t.screen.mainloop()
Задание 5 Написать программу, которая рисует множество отрезков с
поворотом и увеличением размера отрезка в цикле
Таблица 23
import turtle t = turtle.Turtle() t.shape('turtle') t.fd(10) t.goto(0,0) t.left(10) t.fd(20) t.goto(0,0) t.left(10) t.fd(30) t.goto(0,0) t.left(10) t.fd(40) t.goto(0,0) t.left(10) t.fd(50) t.goto(0,0) t.left(10) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') def risunok(n): for i in range(n): t.fd(10*(i+1)) t.goto(0,0) t.left(10) risunok(5) t.screen.exitonclick() t.screen.mainloop()
61 import turtle t = turtle.Turtle() t.shape('turtle') def risunok(n): for i in range(n): t.fd(20*i) t.left(120) t.fd(20*i) t.left(120) t.fd(20*i) t.left(120) risunok(10) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') i = 1 while i <= 10: t.circle(int(10*i)) t.left(20) i += 1 t.screen.exitonclick() t.screen.mainloop() a = int(input()) while a != 0: if a < 0: print('Встретилось отрицательное число', a) break a = int(input()) else: print('Ни одного отрицательного числа не встретилось') n = int(input()) for i in range(n): a = int(input()) if a < 0: print('Встретилось отрицательное число', a) break else: print('Ни одного отрицательного числа не встретилось') import turtle t = turtle.Turtle()
62 t.shape('turtle') def tree(k): for j in range(k): t.up() t.goto(50*(j+1),-100) t.down() t.fd(10) t.left(90) t.fd(40) t.left(90) t.fd(10) t.left(90) t.fd(40) t.left(90) t.up() t.goto(5+50*(j+1),-60) t.down() t.circle(30) tree(4) t.screen.exitonclick() t.screen.mainloop()
УРОК 7 Вложенные циклы
Практическая работа №7 к уроку 7 Вложенные циклы
https://pythontutor.ru/lessons/while/
УРОК 8 Тексты и надписи в в Python
Пример вывода текста черепашкой в Python
63
УРОК 9 Модуль random и его применение в Python
Задание 1 Случайные круги import turtle t = turtle.Turtle() t.shape('turtle') turtle.write("Ваша фамилия", font=('arial',16,)) colors=['red','green','blue','orange'] import random t.up() t.goto(random.randint(-100,100), random.randint(-100,100)) t.down() t.color(random.choice (colors)) t.circle(20) t.screen.exitonclick() t.screen.mainloop()
64
Таблица 24 Случайные круги в цикле
import turtle t = turtle.Turtle() t.shape('turtle') import random def risunok(n): for i in range(n): t.up() t.goto(random.randint(-100,100),random.randint(-100,100)) t.down() t.circle(10) risunok(15) t.screen.exitonclick() t.screen.mainloop()
65
Задание Случайные треугольники в цикле
Таблица 25 Случайные треугольники в цикле
import turtle t = turtle.Turtle() t.shape('turtle') import random def risunok(n): for i in range(n): t.up() t.goto(random.randint(-100,100),random.randint(-100,100)) t.down() t.fd(10) t.left(120) t.fd(10) t.left(120) t.fd(10) t.left(120) risunok(10) t.screen.exitonclick() t.screen.mainloop()
66 import turtle t = turtle.Turtle() t.shape('turtle') import random def risunok(n): for i in range(n): t.goto(random.randint(-100,100),random.randint(-100,100)) t.goto(0,0) risunok(20) t.screen.exitonclick() t.screen.mainloop()
67 import turtle t = turtle.Turtle() t.shape('turtle') import random def risunok(n): for i in range(n): t.up() t.goto(random.randint(-100,100),random.randint(-100,100)) t.down() t.circle(15) risunok(10) t.screen.exitonclick() t.screen.mainloop()
68
Практическая работа Задание Движение по окружности будильник тайм время
import turtle t = turtle.Turtle() t.shape('turtle') t.left(180) t.up() t.goto(0,50) t.down() def time(R,n): for i in range(n): t.circle(R, -360/n) t.write(i+1,font=('arial',14)) t.dot(10,"red") time(100,12) t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') t.left(180) t.penup() t.goto(0,50) t.pendown() def time(R,n): for i in range(n): t.circle(R, -360/n) t.write(i+1, font=('arial', 14)) t.left(90) t.fd(20) t.left(180) t.fd(20) t.left(90)
69 time(100,12) t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') t.left(180) t.up() t.goto(0,50) t.down() def time(R,n): for i in range(n): t.circle(R,-360/n) t.write(i+1, font=('arial',14)) t.left(90) t.fd(10) t.right(180) t.fd(10) t.left(90) t.bk(10) time(100,12) t.screen.mainloop() t.screen.exitonclick()
ОЧИСТКА ЭКРАНА TURTLE.CLEAR()
Задание Стрелка часов со стиранием
Стрелка часов со стиранием import turtle t = turtle.Turtle() t.shape('turtle') t.left(90) def strelka (n):
70 for i in range(n): t.fd(80) t.bk(80) t.right(6) t.clear() strelka(60) t.sckeen.exitonclick() t.sckeen.exitonclick() import turtle t = turtle.Turtle() t.shape('turtle') def risunok(n): for i in range(n): t.clear() t.up() t.goto(-100+i*30,0) t.down() t.circle(15+i*5) risunok(10) t.screen.exitonclick() t.screen.mainloop()
Рисуем pendown()
Начать рисовать; penup()
Закончить рисовать; pensize(width)
Установить диаметр пера в width; pencolor(colorstring)
Установить цвет линии, которая рисует черепашка (например, 'brown' или '#32c18f'
); fillcolor(colorstring)
Установить цвет заполнения;
71 begin_fill()
Начать следить за черепашкой для заполнения области; end_fill()
Заполнить цветом fillcolor область, пройденную черепашкой начиная с begin_fill(); showturtle()
Показать черепашку; hideturtle()
Спрятать черепашку; write(text)
Вывести текст text;
Узнать про черепашку
position()
Получить текущие координаты черепашки; towards(x, y)
Получить угол между текущим направление черепашки и прямой от черепашки к точке
(x,y); xcor()
Получить x координату черепашки; ycor()
Получить y координату черепашки; heading()
Получить текущий угол к вертикали; distance(x, y)
Получить расстояние до точки (x,y); isdown()
Узнать, рисует ли сейчас черепашка; isvisible()
Узнать, видима ли сейчас черепашка;
Интерактив
onkey(function, key)
Выполнить функцию function (принимающей два аргумента, x и y — координаты черепашки) после нажатия кнопки key (например, 'a', 'Up', 'space'); listen()
Начать следить на нажатиями клавиш и кликами мыши; ontimer(function, time)
Выполнить функцию function через time миллисекунд; textinput(title, prompt)
Вывести окно с заголовком title и текстом prompt, вернуть введѐнное значение;
Задание ПОДПРОГРАММЫ ДОРОГА import turtle t = turtle.Turtle() t.shape('turtle') def kadr(x,y): t.fd(100) t.left(90) t.fd(40) t.left(90)
72 t.fd(60) t.right(90) t.fd(20) t.left(90) t.fd(40) t.left(90) t.fd(60) t.left(90) def doroga(n): for i in range(n): t.penup() t.goto(-300 + i*150, 0) t.pendown() kadr(-300 + i*150, 0) doroga(5) t.screen.exitonclick() import turtle t = turtle.Turtle() t.shape('turtle') def kadr(x,y): t.pencolor('green') t.fd(24) t.left(90) t.fd(60) t.right(90) t.fd(20) t.left(135) t.fd(45) t.left(90) t.fd(45) t.left(135) t.fd(20) t.right(90) t.fd(60) t.left(90) def doroga(n):
73 for i in range(n): t.penup() t.goto(-300 + i*100, 0) t.pendown() kadr(-300 + i*100, 0) doroga(5) t.screen.exitonclick()
Задание ПРИМЕР СТРЕЛКА ЧАСОВ с Очисткой экрана import turtle t = turtle.Turtle() t.shape('turtle') t.circle(80) t.up() t.goto(0,80) t.down() t.left(90) def strelka(n): for i in range(n): t.pencolor("red") t.fd(70) t.pencolor("white") t.bk(70) t.right(6) t.clear() strelka(60) t.screen.exitonclick() t.screen.mainloop() import turtle t = turtle.Turtle() t.shape('turtle') import random def risunok(n): for i in range(n):
74 t.up() t.goto(random.randint(-100,100),random.randint(-100,100)) t.down() t.write("УРА",font=('arial',24)) risunok(20) t.screen.exitonclick() t.screen.mainloop()
СЛУЧАЙНЫЙ import turtle t = turtle.Turtle() t.shape('turtle') import random city = ['Питер', 'Москва', 'Новосиб', 'Красноярск', 'Абакан'] def risunok(n): for i in range(n): t.up() t.goto(random.randint(-100,100),random.randint(-100,100)) t.down() t.write(random.choice(city),font=('arial',24)) risunok(15) t.screen.exitonclick() t.screen.mainloop()
75 import turtle t = turtle.Turtle() t.shape('turtle') import random city = ['Питер', 'Москва', 'Новосиб', 'Красноярск', 'Абакан'] zvet = ['red', 'blue', 'green', 'yellow'] def risunok(n): for i in range(n): t.up() t.goto(random.randint(-100,100),random.randint(-100,100)) t.down() t.color(random.choice(zvet)) t.write(random.choice(city),font=('arial',24)) risunok(15) t.screen.exitonclick() t.screen.mainloop()
УРОК 8 Имитация движения графических объектов по прямой
Практическая работа №8 к уроку 8 Имитация движения графических объектов по
прямой
УРОК 9 Имитация движения объектов при столкновении с препятствиями
УРОК 10 Процедуры и подпрограммы
Практическая работа №10 к уроку 10 Процедуры и подпрограммы
УРОК 11 Построение графиков функций
Практическая работа №11 к уроку 11 Построение графиков функций
УРОК 12 Имитация движения графических объектов по окружности
Практическая работа №12 к уроку 12 Имитация движения графических объектов по
окружности
УРОК 13 Имитация движения графических объектов по дуге и сложным
траекториям
Практическая работа №13 к уроку 13 Имитация движения графических объектов по
дуге и сложным траекториям
УРОК 14 События модуля GraphABC. Управление графическими объектами с
помощью клавиш и мыши
76
Практическая работа №14 к уроку 14 События модуля GraphABC. Управление
графическими объектами с помощью клавиш и мыши
УРОК 15 Звуковое сопровождение программ
https://pypi.org/project/pyttsx3/
Практическая работа №15 к уроку 15 Звуковое сопровождение программ
УРОК 16 Объектно-ориентированное программирование
Краткий обзор ооп python
Программа/скрипт/код, написанные с использованием парадигмы объектно- ориентированного программирования, должны состоять из объектов, классов (описания объектов), взаимодействий объектов между собой, в результате которых меняются их свойства.
Что такое класс в ооп python?
Класс
=
данные
+
методы
Класс
— это тип данных, состоящий из набора атрибутов (свойств) и методов — функций для работы с этими атрибутами.
Схематично класс можно представить следующим образом:
Для создания классов предусмотрена инструкция class. Тело класса состоит из блока различных инструкций. class ИмяКласса:
ПеременнаяКласса = Значение
… def ИмяМетода(self, ...): self.ПеременнаяКласса = Значение
Методы в классах — это те же функции, которые принимают один обязательный параметр — self (с англ. можно перевести как «собственная личность»). Он нужен для связи с конкретным объектом.
Атрибуты класса — это имена переменных вне функций и имена функций. Эти атрибуты наследуются всеми объектами, созданными на основе данного класса. Атрибуты обеспечивают свойства и поведение объекта. Объекты могут иметь атрибуты, которые создаются в теле метода, если данный метод будет вызван для конкретного объекта.
Пример класса (ООП) на Python 3: class Second: color = "red" form = "circle" def changecolor(self,newcolor): self.color = newcolor def changeform(self,newform): self.form = newform obj1 = Second() obj2 = Second() print (obj1.color, obj1.form) # вывод на экран "red circle" print (obj2.color, obj2.form) # вывод на экран "red circle" obj1.changecolor("green") # изменение цвета первого объекта obj2.changecolor("blue") # изменение цвет второго объекта obj2.changeform("oval") # изменение формы второго объекта print (obj1.color, obj1.form) # вывод на экран "green circle" print (obj2.color, obj2.form) # вывод на экран "blue oval"
Результат выполнения скрипта Python 3: red circle red circle green circle
77 blue oval
Конструктор класса — метод __init__
Большинство классов имеют специальный метод, который автоматически при создании объекта создает ему атрибуты. Т.е. вызывать данный метод не нужно, т.к. он сам запускается при вызове класса. (Вызов класса происходит, когда создается объект.)
Такой метод называется конструктором класса и в языке программирования Python носит имя __init__. (В начале и конце по два знака подчеркивания.)
Первым параметром, как и у любого другого метода, у __init__ является self, на место которого подставляется объект в момент его создания. Второй и последующие (если есть) параметры заменяются аргументами, переданными в конструктор при вызове класса.
Рассмотрим два класса: в одном будет использоваться конструктор, а в другом нет.
Требуется создать два атрибута объекта.
Рассмотрим два класса: в одном будет использоваться конструктор, а в другом нет.
Требуется создать два атрибута объекта.
Пример 1: class YesInit: def __init__(self,one,two): self.fname = one self.sname = two obj1 = YesInit("Peter","Ok") print (obj1.fname, obj1.sname)
Пример 2: class NoInit: def names(self,one,two): self.fname = one self.sname = two obj2 = NoInit() obj2.names("Peter","Ok") print (obj2.fname, obj2.sname)
Результат выполнения двух скриптов:
Peter Ok
Что значит аргумент self в Python 3 в методе класса
Аргумент self — это ссылка на создаваемый в памяти компьютера объект. from tkinter import * window = Tk() window.title("Добро пожаловать в приложение PythonRu") lbl = Label(window, text="Привет") lbl.grid(column=0, row=0) window.mainloop() print("Ноль в качестве знака операции"
"\nзавершит работу программы") while True: s = input("Знак (+,-,*,/): ") if s == '0': break if s in ('+', '-', '*', '/'): x = float(input("x=")) y = float(input("y=")) if s == '+': print("%.2f" % (x+y))
78 elif s == '-': print("%.2f" % (x-y)) elif s == '*': print("%.2f" % (x*y)) elif s == '/': if y != 0: print("%.2f" % (x/y)) else: print("Деление на ноль!") else: print("Неверный знак операции!")
1 2 3 4 5 6 7 8 9 10
ЧАСТЬ 2 МОДУЛЬ ТКИНТЕР, Объектно-ориентированное программирование
Порядок действий
1. Импорт библиотеки
2. Создание главного окна
3. Создание виджет
4. Установка их свойств
5. Определение событий
6. Определение обработчиков событий
7. Расположение виджет на главном окне
8. Отображение главного окна
1. импорт модуля tkinter
Как и любой модуль, tkinter в Python можно импортировать двумя способами: командами import tkinter или from tkinter import *. В дальнейшем мы будем пользоваться только вторым способом, т. к. это позволит не указывать каждый раз имя модуля при обращении к объектам, которые в нем содержатся. Следует обратить внимание, что в версии Python 3 имя модуля пишется со строчной буквы (tkinter), хотя в более ранних версиях использовалась прописная (Tkinter). Итак, первая строчка программы должна выглядеть так:
1.
from
tkinter
import
*
2. создание главного окна
В современных операционных сисУРОКх любое пользовательское приложение заключено в окно, которое можно назвать главным, т.к. в нем располагаются все остальные виджеты. Объект окна верхнего уровня создается при обращении к классу Tk модуля tkinter. Переменную связанную с объектом-окном принято называть root (хотя понятно, что можно назвать как угодно, но так уж принято). Вторая строчка кода:
1. root = Tk()
3. создание виджет
Допустим в окне будет располагаться всего одна кнопка. Кнопка создается при обращении к классу Button модуля tkinter. Объект кнопка связывается с какой-нибудь переменной. У класса Button (как и всех остальных классов, за исключением Tk) есть обязательный параметр — объект, которому кнопка принадлежит (кнопка не может "быть ничейной"). Пока у нас есть единственное окно (root), оно и будет аргументом, передаваемым в класс при создании объекта-кнопки:
1. but = Button(root)
4. установка свойств виджет
У кнопки много свойств: размер, цвет фона и надписи и др. Пока установим всего одно свойство — текст надписи (text):
79 1. but[
"text"
] =
"Печать"
5-6. определение событий и их обработчиков
Многообразие событий и способов их обработки будет рассмотрено на следующих уроках. Здесь же просто коснемся данного вопроса в связи с потребностью.
Что же будет делать кнопка и в какой момент она это будет делать? Предположим, что задача кнопки вывести какое-нибудь сообщение в поток вывода, используя функцию print. Делать она это будет при нажатии на нее левой кнопкой мыши.
Действия (алгоритм), которые происходят при том или ином событии, могут быть достаточно сложным. Поэтому часто их оформляют в виде функции, а затем вызывают, когда они понадобятся. Пусть у нас печать на экран будет оформлена в виде функции printer:
1.
def
printer(event):
2.
(
"Как всегда очередной 'Hello World!'"
)
Не забывайте, что функцию желательно (почти обязательно) размещать в начале кода.
Параметр event – это какое-либо событие.
Событие нажатия левой кнопкой мыши выглядит так: . Требуется связать это событие с обработчиком (функцией printer). Для связи предназначен метод bind. Синтаксис связывания события с обработчиком выглядит так:
1. but.bind(
"
,printer)
7. размещение виджет
Если вы заметите, то в любом приложении виджеты не разбросаны по окну как попало, а хорошо организованы, интерфейс продуман до мелочей и обычно подчинен определенным стандартам. До стандартов нам далеко, нужно просто кнопку как-то отобразить в окне. Самый простой способ — это использование метода pack.
1. but.pack()
Если не вставить эту строчку кода, то кнопка в окне так и не появится, хотя она есть в программе.
8. отображение главного окна
Ну и наконец, главное окно тоже не появится, пока не будет вызван специальный метод mainloop:
1. root.mainloop()
Данная строчка кода должна быть всегда в конце скрипта!
В итоге, код программы может выглядеть таким образом:
1.
from
tkinter
import
*
2.
3.
def
printer(event):__
4.
(
"Как всегда очередной 'Hello World!'"
)
5.
6. root = Tk()
7. but = Button(root)
8. but[
"text"
] =
"Печать"
9. but.bind(
"
,printer)
10.
11. but.pack()
12. root.mainloop()
При программировании графического интерфейса пользователя более эффективным оказывается объектно-ориентированный подход.
Поэтому многие «вещи» оформляются в виде классов. В нашем примере также можно использовать класс:
80 1.
from
tkinter
import
*
2.
3.
class
But_print:
4.
def
__init__
(
self
):
5. self
.but = Button(root)
6. self
.but[
"text"
] =
"Печать"
7. self
.but.bind(
"
,
self
.printer)
8. self
.but.pack()
9.
def
printer(
self
,event):
10.
(
"Как всегда очередной 'Hello World!'"
)
11.
12. root = Tk()
13. obj = But_print()
14. root.mainloop()
Python - Программирование GUI (Tkinter)
Python предоставляет различные варианты для разработки графических пользовательских интерфейсов (GUI). Наиболее важные из них перечислены ниже.
Tkinter - Tkinter - это интерфейс Python для инструментария Tk GUI, поставляемый с Python. Мы бы посмотрели этот вариант в этой главе.
wxPython - это интерфейс Python с открытым исходным кодом для wxWindows http://wxpython.org .
JPython - JPython - это порт Python для Java, который предоставляет сценариям
Python беспрепятственный доступ к библиотекам классов Java на локальной машине http://www.jython.org .
Есть много других доступных интерфейсов, которые вы можете найти в сети.
Tkinter Программирование
Tkinter - это стандартная библиотека GUI для Python. Python в сочетании с Tkinter обеспечивает быстрый и простой способ создания приложений с графическим интерфейсом. Tkinter предоставляет мощный объектно-ориентированный интерфейс для инструментария Tk GUI.
Создание приложения с графическим интерфейсом с помощью Tkinter - простая задача.
Все, что вам нужно сделать, это выполнить следующие шаги -
Импортируйте модуль Tkinter .
Создать главное окно приложения с графическим интерфейсом.
Добавьте один или несколько вышеупомянутых виджетов в приложение с графическим интерфейсом.
Введите основной цикл событий, чтобы принять меры против каждого события, инициированного пользователем.
пример
#!/usr/bin/python import Tkinter top = Tkinter.Tk()
# Code to add widgets will go here... top.mainloop()
Это создаст следующее окно -
81
Ткинтер Виджеты
Tkinter предоставляет различные элементы управления, такие как кнопки, метки и текстовые поля, используемые в приложении с графическим интерфейсом. Эти элементы управления обычно называются виджетами.
В настоящее время в Tkinter существует 15 типов виджетов. Мы представляем эти виджеты, а также краткое описание в следующей таблице -
Sr.No.
Оператор и описание
1 кнопка
Виджет «Кнопка» используется для отображения кнопок в вашем приложении.
2 холст
Виджет Canvas используется для рисования фигур, таких как линии, овалы, многоугольники и прямоугольники, в вашем приложении.
3
Checkbutton
Виджет Checkbutton используется для отображения ряда опций в виде флажков.
Пользователь может выбрать несколько вариантов одновременно.
4 запись
Виджет «Запись» используется для отображения однострочного текстового поля для приема значений от пользователя.
5
Рамка
Виджет Frame используется как контейнерный виджет для организации других виджетов.
6 метка
Виджет «Метка» используется для предоставления надписи в одну строку для других виджетов. Он также может содержать изображения.
7
Listbox
Виджет «Список» используется для предоставления пользователю списка параметров.
8 кнопку MENU
Виджет Menubutton используется для отображения меню в вашем приложении.
9
Меню
Виджет Меню используется для предоставления различных команд пользователю.
Эти команды содержатся внутри Menubutton.
10
Сообщение
Виджет Сообщение используется для отображения многострочных текстовых полей для принятия значений от пользователя.
11
Переключатель
Виджет Radiobutton используется для отображения ряда параметров в качестве
82 переключателей. Пользователь может выбрать только один вариант за один раз.
12
Масштаб
Виджет Масштаб используется для предоставления виджета слайдера.
13
Полоса прокрутки
Виджет полосы прокрутки используется для добавления возможности прокрутки к различным виджетам, таким как списки.
14
Текст
Виджет Текст используется для отображения текста в несколько строк.
15
Высший уровень
Виджет Toplevel используется для предоставления отдельного окна-контейнера.
16 со счѐтчиком
Виджет Spinbox - это вариант стандартного виджета Tkinter Entry, который можно использовать для выбора из фиксированного числа значений.
17
PanedWindow
PanedWindow - это контейнерный виджет, который может содержать любое количество панелей, расположенных горизонтально или вертикально.
18
LabelFrame
Метка - это простой контейнерный виджет. Его основная цель - выступать в качестве разделителя или контейнера для сложных оконных схем.
19 tkMessageBox
Этот модуль используется для отображения окон сообщений в ваших приложениях.
Давайте изучим эти виджеты подробно -
Стандартные атрибуты
Давайте посмотрим, как определяются некоторые из их общих атрибутов, таких как размеры, цвета и шрифты.
Габаритные размеры
Цвета
шрифты
Якоря
Рельефные стили
Bitmaps
курсоры
Давайте изучим их кратко -
Управление геометрией
Все виджеты Tkinter имеют доступ к определенным методам управления геометрией, целью которых является организация виджетов по всей родительской области виджетов.
Tkinter предоставляет следующие классы менеджера геометрии: pack, grid и place.
Метод pack ()
- этот менеджер геометрии организует виджеты в блоки перед размещением их в родительском виджете.
Метод grid ()
- этот менеджер геометрии организует виджеты в виде таблицы в родительском виджете.
Метод place ()
- этот менеджер геометрии организует виджеты, размещая их в определенной позиции в родительском виджете.
Давайте кратко изучим методы управления геометрией -
Практическая работа:
1. Импортируйте модуль tkinter, создайте объект главного окна, примените к нему метод mainloop. Затем выполните скрипт. Что вы видите?
2. Добавьте кнопку на главное окно с помощью такой команды:
83 but = Button(root, text="Печать")
В данном случае, при создании кнопки, в класс сразу передается и значение свойства text.
Это наиболее часто используемый способ установки свойств (по-сравнению с тем, который приводится в уроке: but["text"] =
"Печать").
3. Расположите виджету на главном окне с помощью метода pack. Запустите скрипт. Что вы видите? Нажмите левой кнопкой мыши на кнопку в окне. Что-нибудь происходит?
4. Создайте какую-нибудь функцию и свяжите ее с событием нажатия кнопки.
5. Снова запустите скрипт и нажмите кнопку. По идее, должно что-то произойти.
Кнопки
Объект-кнопка создается вызовом класса Button модуля tkinter. При этом обязательным аргументом является лишь родительский виджет
(например, окно верхнего уровня). Другие свойства могут указываться при создании кнопки или задаваться (изменяться) позже. Синтаксис:
переменная = Button (родит_виджет, *свойство=значение, … ….+)
У кнопки много свойств, в примере ниже указаны лишь некоторые из них.
1.
from
tkinter
import
*
2.
3. root = Tk()
4.
5. but = Button(root,
6. text=
"Это кнопка"
,
#надпись на кнопке
7. width=
30
,height=
5
,
#ширина и высота
8. bg=
"white"
,fg=
"blue"
)
#цвет фона и надписи
9.
10. but.pack()
11. root.mainloop() bg и fg – это сокращения от background (фон) и foreground (передний план). Ширина и высота измеряются в знакоместах (количество символов).
Метки
Метки (или надписи) — это достаточно простые виджеты, содержащие строку (или несколько строк) текста и служащие в основном для информирования пользователя.
1. lab = Label(root, text=
"Это метка!
\n
Из двух строк."
, font=
"Arial 18"
)
однострочное текстовое поле
Такое поле создается вызовом класса Entry модуля tkinter. В него пользователь может ввести только одну строку текста.
1. ent = Entry(root,width=
20
,bd=
3
) bd – это сокращение от borderwidth (ширина границы).
Многострочное текстовое поле
Text предназначен для предоставления пользователю возможности ввода не одной строки текста, а существенно больше.
1. tex = Text(root,width=
40
,
2. font=
"Verdana 12"
,
3. wrap=WORD)
Последнее свойство (wrap) в зависимости от своего значения позволяет переносить текст, вводимый пользователем либо по символам, либо по словам, либо вообще не переносить, пока пользователь не нажмет Enter.