Средняя
общеобразовательная школа № 14 г о Подольск МО
Методические рекомендации с примерами
программных кодов на языке Python GUI (уроки по Tkinter)
для учащихся 8-11 классов (часть 2)
Подготовил:
Учитель высшей категории
Глушков Николай Васильевич
Предмет : Информатика
Г
Подольск
2020 г
С
О Д Е Р Ж А Н И Е
Введение
Раздел 6. Примеры с использованием виджетов в графической библиотеке Tkinter-Tk
Раздел 7. Практикум с использованием интерактивного оконного
вычислительного модуля
Раздел 8. Практикум с классом Scale
Раздел 9. Практикум - графические примитивы с помощью
класса Canvas
Раздел 10. Используемые ссылки
Раздел 11 Заключение
Введение
В работе приведены теоретические и практические
приемы для решения прикладных задач, которые обучающиеся могут использовать в
практике, осваивая язык Питон. Освоение любого языка программирования проходит
безусловно легко, если есть путеводитель, справочник, практикум к которым можно
обращаться при создании своих приложений. Данная разработка является 2-ой частью
«Методических рекомендации с примерами программных кодов на
языке Python GUI (уроки по
Tkinter) для учащихся 8-11 классов (часть1).
Автор данной разработки в свое время на
учительском сайте «Инфоурок» подготовил две методические разработки используя
модуль tkinter для работы с графической библиотекой Tk, Задача данных
рекомендаций познакомить и облегчить обучающимся написание основных учебных
кодов (скриптов) для математических, физических и экономических задач в
интерактивной оболочке. Для обучающихся в школе эта справочная база примеров
поможет более углубленно и наглядно изучить библиотеку Tkinter и в дальнейшем
самостоятельно использовать данный материал в web-приложениях.
Используя
Виджеты, их свойства и методы из графической библиотеки Tk
Питона – как инструмент создания
графических приложений в этом курсе продолжаем строить новые
приложения и внедряем их в практику обучения.
Раздел
6. Примеры с
использованием виджетов
в графической библиотеке Tkinter
Пример 1 Считывание текста в кнопку при очередном нажатии кнопки
import
tkinter as tk
i = 0
def text_mod():
global i, btn # btn can be omitted but not sure if should be
txt = ("Vicariously", "I", "live",
"as", "the", "whole", "world",
"dies")
btn['text'] = txt[i] # the global object that is modified
i = (i + 1) % len(txt) # another global object that gets modified
root = tk.Tk()
btn = tk.Button(root, text="Start")
btn['command'] = text_mod
btn.pack(fill='both', expand=True)
root.mainloop()
Пример
2 Вывод текста в консоль программы при очередном нажатии кнопки from random import
choice
from tkinter import *
sy = ["A", "B", "C", "D",
"E", "F", "G", "H", "I",
"J", "K","L", "M", "N",
"O", "P", "Q", "R", "S",
"T" ,"U", "V","W", "X",
"Y","Z",
"a", "b", "c", "d", "e",
"f", "g", "h", "i", "j",
"k","l", "m", "n", "o",
"p", "q", "r", "s", "t"
,"u", "v","w", "x",
"y","z", "1" , "2","3"
,"4" ,"5" ,"6" ,"7","8"
,"9" ,"0","."]
root
= Tk()
root.title("Simple Password Generator")
root.geometry("400x300")
def Generate(event):
print(''.join(choice(sy) for i in range(10)))
btn = Button(root, text="Generate", width=20,height=2,
bg="grey",fg="black", font='arial 19')
btn.bind("<Button-1>", Generate)
btn.pack()
btn.pack(side='top')
root.mainloop()
Пример 3. Изменение цвета Progressbar
Изменение цвета Progressbar немного сложно. Сначала нужно создать стиль и задать цвет фона, а затем
настроить созданный стиль на Progressbar. Посмотрите следующий пример:
from
tkinter import *
from tkinter.ttk import Progressbar
from tkinter import ttk
window = Tk()
window.title("Изменение цвета Progressbar ")
window.geometry('400x250')
style = ttk.Style()
style.theme_use('default')
style.configure("red.Horizontal.TProgressbar",
background='red')
bar = Progressbar(window, length=200, style=
'red.Horizontal.TProgressbar')
bar['value'] = 70
bar.grid(column=0, row=0)
window.mainloop()
Пример 4 СУБ процесс Как с помощью ткинтера и subprocess по нажатию кнопки запустить другой питоновский скрипт. Главное указать правильно путь к документу.
Данная программа по ссылке открывает документы на языке Питон, текстовый документ, приложение Word, Excel, шаблоны Word , файлы mp3,web документы,фото.
from tkinter import *
import subprocess
root = Tk()
def
Hello(event):
cmd =
'.\text.txt '
PIPE =
subprocess.PIPE
p =
subprocess.Popen(cmd, shell = True)
p.wait()
print
("process finished")
btn =
Button(root, #roditelskoe okno
text="Открыть документ", #nadpis na knopke
width=30,height=5, #wirina i visota
bg="white",fg="black") #tsvet fona i nadpisi
btn.bind("<Button-1>",
Hello) #pri najatii LKM na knopku vizivaetsya funktsiya Hello
btn.pack()
#raspolojit knopku na glavnom okne
root.mainloop()
После второго клика кнопки открывается вызванный документ
Пример
5 Управление кнопками в окне
from tkinter import *
window
= Tk()
window.title("Мое
приложение")
window.geometry('350x200')
lbl
= Label(window, text="Метка",background="yellow",
foreground="red",
padx="20", pady="8", font="16")
lbl.grid(column=0,
row=0)
# текстовое
поле
txt
= Entry(window,width=10)
txt.grid(column=1,
row=0)
def
btnClicked():
lbl.configure(text="Вы
нажали на кнопку!!!",
background="red",
foreground="yellow",
padx="20", pady="8", font="16")
# window
- ссылка на окно
#
text - текст кнопки
#
command - ссылка на обработчик нажатия клавиши
btn
= Button(window, text="Нажмите
на кнопку закройте
окно",background="yellow",
foreground="blue",
padx="20", pady="8", font="16",
command=btnClicked)
btn.grid(column=1,
row=0)
window.mainloop()
root
= Tk()
root.title("2
окно")
root.geometry("300x250")
btn
= Button(text="Hello выход",
# текст кнопки
background="yellow", # фоновый
цвет кнопки
foreground="red", # цвет
текста
padx="40", # отступ от границ до содержимого
по горизонтали
pady="18", # отступ от границ до содержимого по
вертикали
font="16" # высота шрифта
)
btn.pack()
root.mainloop()
Раздел 7 . Практикум с использованием интерактивного
оконного
вычислительного модуля
В разделе ПРАКТИКУМ все программные коды
используют интерактивный оконный модуль ввода и вывода данных . Нумерация в
примерах локальная
Пример 1. Задача лыжник. В первый день лыжник прошел 10 км, а каждый
последующий день увеличивал дистанцию на 10%. Определить пройденную дистанцию
за каждый последующий день и общую за 11 дней
from tkinter import *
from math import sqrt
def solver(a):
""" Solves lignik and returns the result in formatted
string """
os=0 d=1 a=10 print(a)
s=a
while (d<=9):
s+=s*0.1
print(" %.2f" % (s))
os=os+s d=d+1 text="Пройден дистанция="
text="It's %s, Distanzij : %.2f" % (a, os+10)
return text def inserter(value):
""" Inserts specified value into text widget
"""
output.delete("0.0","end")
output.insert("0.0",value)
def clear(event):
""" Clears entry form """
caller = event.widget
caller.delete("0", "end")
def handler():
""" Get the content of entries and passes result to the
text """
try: # make sure that we entered correct values
a_val = float(a.get())
inserter(solver(a_val))
except ValueError:
inserter("Make sure you entered 1 numbers")
root = Tk()
root.title("lygnik")
root.minsize(325,230)
root.resizable(width=False, height=False)
frame = Frame(root)
frame.grid()
a = Entry(frame, width=3)
a.grid(row=1,column=1,padx=(10,0))
a.bind("<FocusIn>", clear)
a_lab = Label(frame, text="s=s+s*0.1").grid(row=1,column=2)
but = Button(frame, text="Start", command=handler).grid(row=1,
column=7, padx=(10,0))
output = Text(frame, bg="lightblue", font="Arial 12",
width=35, height=10)
output.grid(row=2, columnspan=8)
root.mainloop()
Пример 2. Квадратура круга При задании стороны квадрата, и равных площадях фигур,
вычислить радиус круга
Фрагмент программы для модуля оконной системы:
from tkinter import *
import math
def solver(a):
""" Solves Kwadratura kruga and returns the result in
formatted string """
skw=a*a
skr=skw
r=math.sqrt(skr/3.14)
text=("It's Радис круга : %.2f" % ( r))
return text
Далее ссылка
на раздел
7 пример1
- интерактивный оконный
модуль
Пример 3
Игра в
лото
Фрагмент программного кода:
from tkinter import *
import random
def solver(n):
a=sum((random.randint(500,10000))*i for i in range(n))
b=sum((random.randint(500,10000))*i for i in range(n))
if a>b:
text = "победитель пользователь --> oshki is: %s \n oshki PK is: %s \n" %
(a, b) else:
text = "победитель ПК ->>oshki is: %s \n пользователь-->>
oshki is: %s \n" % (b, a)
return text
Далее
ссылка на
раздел
7 пример
1 - интерактивный
оконный модуль
Пример 4
Нахождение экстремумов
функции
x3+12 на
отрезке
[-8,10]
Фрагмент кода:
from tkinter import *
from math import sqrt
def solver(a,b):
""" Solves ekstremum and returns the result in
formatted string """
#a=-10
#b=20
i=a
max=0
min=500
while i<=b:
y=i**3+12
if y>max:
max=y
elif y<min:
min=y
i+=(b-a)/100
t ext = "ecstremum func : max= %.2f \n , min= %.2f \n " % (
max, min)
return text
Далее ссылка на раздел 7 пример 1 -
интерактивный оконный модуль
Пример
5 Построение ряда
функции и
нахождение суммы
ряда в
интерактивной системе:
Коэффициенты
a , b вводятся в
окна
Фрагмент кода:
from tkinter import *
def solver(a,b):
""" Solves Function equation and returns the result in
formatted string """
s=0
for i in range(1,12):
y=(b+a*a*a)/(a*(b*b-a*a))
print("result: %.2f" % (y))
s+=y
text=("It's a= %s:, b= %s:, \n result: %.2f"
% (a,b, s))
return text
Далее
ссылка на раздел 7 пример 1 - интерактивный оконный модуль
Пример 6 Нахождение суммы членов ряда функции n=24
Фрагмент кода:
from tkinter import *
def solver(a,b):
""" Solves sum functii equation and returns the result in
formatted string """
#a=int(input("a="))
#b=int(input("b="))
s=sum((a/i)*(a/(1.0+b))**i for i in range (1,25))
text = " (a/i)*(a/(1.0+b))**i : a= %d \n , b= %d \n ,s= %.2f " %
( a, b,s)
return text ……..
Далее ссылка на раздел 7 пример 1 -
интерактивный оконный модуль
Пример 7 Интеграл функции (sinx+cosx) на отрезке [0,3.14)
Фрагмент кода:
from tkinter import *
import math
def solver(a,b):
""" Solves INTEGRAL equation and
returns the result in
formatted string """
i=a
s=0
while i<=b:
y=(math.sin(i)+math.cos(i))*(b-a)/100
s+=y
i+=(b-a)/100
text = "The Integral sin: %s a is : %s b is: %.2f s " %
(a, b, s)
return text
Далее ссылка на раздел 7
пример 1 - интерактивный оконный модуль
Пример
8 Вычисление интеграла
-
арки параболы
from tkinter import *
import math
def solver(a,b):
""" Solves INTEGRAL equation and
returns the result in
formatted string """
i=a
s=0
while i<=b:
y=(0.5*i*i-4*i+10)*(b-a)/100
s+=y
i+=(b-a)/100
text = ("The Integral parabola: %s a is : %s b is: %.2f s
" % (a, b, s))
return text
Далее
ссылка на
раздел
7 пример
1 - интерактивный
оконный модуль
Пример
9 Конвертор перевода
температуры по
Цельсию в
шкалу Фаренгейта
import tkinter # Вызывается в момент
нажатия на кнопку:
def click(): # Получаем строковое содержимое поля ввода с помощью метода get()
# C помощью config() можем изменить отображаемый текст
converter.set('{:.2f}'.format((9/5*(float(entry.get())+32))))
window = tkinter.Tk()
frame = tkinter.Frame(window)
frame.pack() # Модель: создаем объект класса
IntVar
converter = tkinter.IntVar() # Обнуляем созданный объект с помощью метода set()
#converter.set(0)
entry = tkinter.Entry(frame)
entry.pack()
label = tkinter.Label(frame, textvariable=converter)
label.pack()
# Привязываем обработчик нажатия на кнопку к функции
click()
button = tkinter.Button(frame, text='CONVERT', command=click)
button.pack()
window.mainloop()
С помощью этого конвертора можно построить
калькуляторы процентов или валютные калькуляторы
Пример 10 Перенос данных в окно
from tkinter import *
from tkinter import messagebox as mb
def check():
answer = mb.askyesno(title="Вопрос", message=
"Перенести данные?")
if answer == True:
s = entry.get()
entry.delete(0, END)
label['text'] = s
root = Tk()
entry = Entry()
entry.pack(pady=10)
Button(text='Передать', command=check).pack()
label = Label(height=3)
label.pack()
root.mainloop()
Пример 11 Светофор . Пример .Светофор. Режим Светофора: 0-3мин – зеленый; 1 мин – желтый;2
мин –красный. Определить цвет светофора при подъезде .Ввод времени в мин. От 0 до 60 мин
from
tkinter import *
def solver(t):
""" Solves swetofor and returns the result in formatted
string """
#t=int(input("t="))
if (( 0<t<=3) or (1<=t%6<=3)):
text=("green")
return text
if ((t==4) or (t%6==4)):
text=("yellow")
return text
if ((t==5) or(t==6) or (t%6==0) or (t%6==5)):
text("red")
return text
Далее ссылка
на раздел
7 пример
1 - интерактивный
оконный модуль
Пример 12 Двойной конвертор перевода температур : Цельсий- Фаренгейт
from tkinter import *
import math
def solver(a,b):
""" Solves Konvertor C or F equation and returs the result in
formatted string """
text=" wwod a: C_F wwod b: F_C"
temp=a
CF = (temp * 9/5 + 32)
temp=b
FC = (temp - 32) * 5/9
text=(" T F : %.2f, T C : %.2f " % (CF,FC))
return text
Далее ссылка на раздел 7 пример 1 -
интерактивный оконный модуль
Пример 13 Выбор блоков для модуля с помощью кода
Подпрограмма с функцией (код=1), вычисление
интеграла (код2), # Решение уравнения методом
итераций (код3) , # Решение уравнения методом
половинного деления (код 4)
from tkinter import *
import math
def solver(a,b,c):
""" Solves выбор equation and returs the result in
formatted string """
if a==1: # Подпрограмма с функцией
def fun(x):
y=(5*b*b*x)/(x*x+c*(c-b))
return (y)
for i in range(1,10):
print("%.2f " % fun(i))
if a==2: # Вычисление интеграла
#b=3.14/4 #c=3.14/2
i=b s=0
while i<=c:
y=(2*math.sin(i)+3*math.cos(i))*(c-b)/100
s+=y i+=(c-b)/100
text = ("The Integral parabola: b is: %s, c is : %s , s is
%.2f " % (b, c, s))
return text
if a==3: # Решение уравнения методом итераций
# b=0 # c=10 ep=0.001 x0=(b+c)/2
n=0 i=1
while i<=4:
x1=math.sqrt(x0+9)+2-math.sqrt(x0+1)
n=n+1 d=abs(x1-x0) x0=x1
if d>ep:
i=i+1
text="The b is %s , c is : %s , koren %.2f , n : %s “
% (b, c, x1,n)
if a==4: # Решение уравнения методом половинного
деления
#a=-5 #b=5
ep=0.0001
y1=(a*a-5)/((a-1)*(a-2)) -a/(2*a-2)+(5*a-9.5)/((a-1)*(a-2))
y2=(b*b-5)/((b-1)*(b-2)) -b/(2*b-2)+(5*b-9.5)/((b-1)*(b-2))
if y1*y2>0:
print("ошибка") i=1
if y1*y2<0:
while i<=15:
x=(a+b)/2
y=(x*x-5)/((x-1)*(x-2)) -x/(2*x-2)+(5*x-9.5)/((x-1)*(x-2))
if y1*y<0:
b=x
else :
a=x
y1=y
if abs(b-a)>ep:
i=i+1
text(" корень %.2f " %(x)) a=-5
Далее
ссылка на раздел 7 пример 1 - интерактивный оконный модуль
Пример
14 Рабочая кнопка с управлением на консоль
В модуле выполняются решения задач по выбору через код: 1- #Экстремум
функции ; 2- # Зарплата – начисление (модель;) 3- Работа с массивами Сумма-
по выбору 4 – Оптимальное планирование :Классическая Задача по закупке
транспорта:
Колхоз имеет возможность приобрести не
более 19 трехтонных автомашин и не более 17 пятитонных. Отпускная цена
трехтонного грузовика - 4000 руб., пятитонного - 5000 руб.
Колхоз может выделить для приобретения автомашин 141
тысяч рублей. Сколько нужно приобрести автомашин, чтобы их суммарная
грузоподъемность была максимальной?
import math
import random
from tkinter import *
clicks = 0
def click_button():
global clicks
k=int(input(" Введите код
к="))
if k==1:
#Экстремум
функции
min=10 i=-0.3
while i<=0.5:
y=i*(i-1)*(i-1)*(i-2)**3
if y<min:
min=y
i+=0.1
print("min : %.2f " % (min))
if k==2: # Зарплата
– начисление
id=[1,2,3,4,5,6,7,8] # Табельный
номер
fam=["s","g","w","h","p","t","b","z"]
# Фамилия
tar=1500 # Тариф
print (id)
print(fam)
nash=[random.randint(12,25)*tar for i in range(len(id))]
#Начислено
по
дням
for i in range(len(id)):
print(fam[i],nash[i])
print()
print(fam[1],nash[1])
if k==3: # Работа
с массивами
a=[12,34,6,8,21,45,25,87,33,50]
print(a)
b=[2,46,16,81,11,4,35,78,13,59]
print(b)
c=[i*random.randint(4,50) for i in range(len(a))]
print(c)
s=0
for i in range(len(a)):
if c[i]>a[i] and b[i]>a[i] and a[i]%2!=0:
s+=a[i]+b[i]+c[i]
print("Сумма по
выбору
: %d " % (s)) clicks += 1
if k==4: # Задача
на оптимальное
планирование
max=0
for i in range(1,20):
for j in range(1,18):
f=3*i+5*j
if 4000*i+5000*j<=141000 and f>=max:
max=f
print(" 3t : %s,5 t %s ,function :%f" %(i,j,
max))
print("Привет")
root.title("Clicks {}".format(clicks))
root = Tk()
root.title("GUI на Python")
root.geometry("300x250")
btn = Button(text="Ввод кода для решения
задач
1-2 -3-4", background="red", foreground="blue",
padx="20", pady="8",
font="16", command=click_button)
btn.pack()
root.mainloop()
Пример 15 Выполнить Задание аналогично
примеру 14 Рабочая кнопка с управлением на консоль
В модуле выполняются решения задач по выбору через код: 1. Нахождение высот
треугольника по введенным сторонам
2. Нахождение центра тяжести по координатам вершин треугольника
3.Заполнение двумерного массива
4. Задача на оптимальное планирование
Школьный кондитерский цех готовит пирожки и пирожные. В силу ограниченности
условий можно приготовить не более 700 штук изделий. Рабочий день длится 8
часов. За день можно произвести не более 250 пирожных, пирожков – 1000 (по
отдельности). Стоимость пирожного вдвое выше стоимости пирожка. Требуется
составить такой дневной план производства, чтобы обеспечить наибольшую
выручку.
5 Задача кредит
6. Построение степенного ряда с факториалом y=an/n!
В модуль (Пример 14) вставить готовые
скрипты задач:
1. import math
def wis(a,b,c):
p=(a+b+c)/2
# Полупериметр треугольника
s=math.sqrt(p*(p-a)*(p-b)*(p-c))# Площадь треугольника
ha=2*s/a
hb=2*s/b
hc=2*s/c
return print("
Ha
: %.2f,
Hb
: %.2f,Hc
: %.2f
" % (ha,hb,hc))
x=float(input(" Введите сторону a="))
y=float(input(" Введите сторону b="))
z=float(input(" Введите сторону c="))
wis(x,y,z)
2 def zentr(xa,ya
,xb,yb,xc,yc):
x0=(xa+xb+xc)/3
y0=(ya+yb+yc)/3
return print("
X0:
%.2f,
Y0
: %.2f
" % (x0,y0))
x1=int(input("
Введите xa="))
y1=int(input("
Введите ya="))
x2=int(input("
Введите xb="))
y2=int(input("
Введите yb="))
x3=int(input("
Введите xc="))
y3=int(input("
Введите yc="))
zentr(x1,y1
,x2,y2,x3,y3)
3 a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
for j in range(len(a[i])):
print(a[i][j], end=' ')
print()
4 max=0 # x-число
пирожков
#y число пирожных
for i in range(100,700,50):
for j in range(100,700,50):
f=20*(i+2*j)
if ((i+4*j)<=1000) and ((i+j)<=700) and
(f>=max): max=f
print(" x : %s,y : %s
,function :% s " %(i,j, max))
5 s=int(input("ввести сумму в кредит "))
p=int(input("ввести процентную ставку"))
m=int(input("Ежегодное погашение кредита"))
sum=s
n=0
while n<=4:
dolg=s+s*p/100
ost=dolg-m
s=ost
n=n+1
wp=m*n
print ("Result: %s " % (s))
print ("Выплаты: %s " % (wp+s))
print (" Число лет: %s " % (n))
6 Построение степенного ряда с факториалом y=an/n!
import math
def fak(n): f=1
a=2
for i in range(1,10):
for i in range(1,n):
f=f*i
y=(a**i)/f
print(" y= : %.2f " % (y))
return
for i in range(2,10):
fak(i)
Раздел 8
.Практикум с классом Scale
Пример 1 Формирование цвета в окне с помощью
виджета шкала
from tkinter import
*
def change_color(event):#событие
которые изменяет цвет
r
= hex(red.get())[2:4]
g
= hex(green.get())[2:4]
b
= hex(blue.get())[2:4]
if len(r)==1:
r
= '0' + r
if len(g)==1:
g
= '0' + g
if len(b)==1:
b
= '0' + b
clr
= '#'+r+g+b
fr1.configure(bg=clr)
root
= Tk()
fr1
= Frame(root,
width=200,
height=200,
bg='white'
)#устанавливаем размер и цвет рамки
red =
Scale(root,orient=HORIZONTAL,length=350,from_=0,to_=255,tickinterval=50,resolution=1,bg="red")#
выбираем
длину,цвет
и
другие
параметры
для
шкалы
green =
Scale(root,orient=HORIZONTAL,length=350,from_=0,to_=255,tickinterval=50,resolution=1,bg="green")
blue =
Scale(root,orient=HORIZONTAL,length=350,from_=0,to_=255,tickinterval=50,resolution=1,bg="blue")
but = Button(root,text="Set
color") # создает кнопку при нажатии на которой уст цвет
but.bind("<Button-1>",change_color)
fr1.pack()
red.pack()
green.pack()
blue.pack()
but.pack()
root.mainloop()
Пример 2 Вычислительный Модуль со шкалой
Выполняются задачи:
1.Нахождение высот треугольника по введенным сторонам
2. Расчеты по кредиту
3. Нахождение элементов ряда, содержащих факториал (Подпрограмма)
from
tkinter import *
from math import *
import random
root = Tk()
def getV(root):
kod=sca4.get()
if kod==1:
import math
print(" Определение
высот треугольника по сторонам")
def wis(a,b,c):
p=(a+b+c)/2 # Полупериметр
треугольника
s=math.sqrt(p*(p-a)*(p-b)*(p-c))# Площадь треугольника
ha=2*s/a
hb=2*s/b
hc=2*s/c
return print(" Ha : %.2f, Hb
: %.2f,Hc : %.2f " % (ha,hb,hc))
x=sca1.get()
y=sca2.get()
z=sca3.get()
wis(x,y,z)
elif kod ==2:
print("Задача -
Кредит")
#s=int(input("ввести
сумму в кредит "))
#p=int(input("ввести
процентную ставку"))
#m=int(input("Ежегодное
погашение кредита"))
s= sca1.get()
p =sca2.get()
m =sca3.get()
sum=s
n=0
while n<=4:
dolg=s+s*p/100
ost=dolg-m
s=ost
n=n+1
wp=m*n
print ("Result: %s " %
(s))
print ("Выплаты: %s " %
(wp+s))
print (" Число лет: %s " %
(n))
if kod==3:
def fak(n):
f=1
a=sca1.get()
for i in range(1,15):
for i in range(1,n):
f=f*i
y=(a**i)/f
print(" y= : %.2f " %
(y))
return
for i in range(2,15):
fak(i)
fra = Frame(root, width=200, height=200,
bg='yellow')
#lab1 = Label(root, text="Т.Пифагора значение гипотенузы
c*c=a*a+b*b", font="Arial 10")
#lab2 = Label(root, text="значение катета а",
font="Arial 10")
#lab3 = Label(root, text="значение катета b",
font="Arial 10")
sca1 = Scale(root,orient=HORIZONTAL,
length=300, from_=0, to=50, tickinterval=5, resolution=5,bg="red")
sca2 = Scale(root, orient=HORIZONTAL,
length=300, from_=0, to=32, tickinterval=2,
resolution=1,bg="lightblue")
sca3 = Scale(root, orient=HORIZONTAL,
length=300, from_=0, to=32, tickinterval=2, resolution=1,bg="yellow")
sca4 = Scale(root, orient=HORIZONTAL,
length=100, from_=1, to=5, tickinterval=1,
resolution=1,bg="lightgreen")
button1 = Button(text="Получить значение")
sca1.pack()
sca2.pack()
sca3.pack()
sca4.pack()
button1.pack()
#lab1.pack()
#lab2.pack()
#lab3.pack()
button1.bind("<Button-1>",getV)
fra.pack()
root.mainloop
Раздел 9 . Практикум . Графические примитивы с
помощью
класса Canvas
В tkinter от класса Canvas
создаются объекты-холсты, на которых можно "рисовать", размещая
различные фигуры и объекты. Делается это с помощью вызовов соответствующих
методов .При создании экземпляра Canvas необходимо указать его ширину и высоту.
При размещении геометрических примитивов и других объектов указываются их
координаты на холсте. Точкой отсчета является верхний левый угол.
Пример 1. Композиция Графический рисунок
с кнопкой (функция canvas)
from tkinter import *
clicks = 0
def click_button():
global clicks
root = Tk()
canvas = Canvas(root, width =
300, height = 300)
canvas.pack(fill=BOTH)
circle = canvas.create_oval(20,20,290,290,
fill="blue")
diamond =
canvas.create_polygon(150,10,10,150,150,290,290,150, fill="red")
square =
canvas.create_rectangle(80,80,220,220, fill="Yellow")
text =
canvas.create_text(150,150, text="GRAFICA PYTHON",
fill="purple", font=(" arial", "16"))
print("Привет")
root.title("Clicks
{}".format(clicks))
root = Tk()
root.title("GUI на Python")
root.geometry("300x250")
btn = Button(text=" Войти", background="red",
foreground="blue",
padx="20",
pady="8", font="16", command=click_button)
btn.pack()
root.mainloop()
root.mainloop()
Пример 2 Композиция Графический рисунок с кнопкой
from tkinter import *clicks = 0
def click_button():
global clicks
c = Canvas(root, width=200, height=200, bg='white')
c.pack()
c.create_line(10, 10, 190, 50,fill='red')
c.create_line(10, 10, 140, 20,fill='yellow')
c.create_line(10, 10, 120, 10,fill='blue')
c.create_line(100, 180, 100, 60, fill='green', width=5, arrow=LAST,
dash=(10,2),
activefill='lightgreen', arrowshape="10 20 10")
c.create_line(50, 90, 50, 30, fill='red', width=5, arrow=LAST,
dash=(10,2),
activefill='lightgreen', arrowshape="10 20 10")
c.create_line(150, 250, 150, 120, fill='green', width=5, arrow=LAST,
dash=(10,2),
activefill='lightgreen', arrowshape="10 20 10")
c.create_oval(50, 10, 150, 110, width=2)
c.create_oval(10, 120, 140, 140, fill='grey70', outline='white')
text = canvas.create_text(150,150, text="GRAFICA PYTHON",
fill="purple", font=(" arial",
"16"))
root.title("Clicks {}".format(clicks)
root = Tk()
root.title("GUI на Python")
root.geometry("300x250")
btn = Button(text=" Войти", background="red",
foreground="blue", padx="20", pady="8",
font="16", command=click_button)
btn.pack()
root.mainloop()
Пример 3 Графический
рисунок (функция canvas)
Домик в деревне
from tkinter
import *
root=Tk()
root.title('Графические примитивы')
# здесь будет будущий код
canv=Canvas(root,width=500,height=500,bg="lightblue",cursor="pencil")
canv.pack()
canv.create_rectangle(20,150,300,450,fill="green",outline="black")
canv.create_polygon([20,150],[160,30],[300,150],fill="purple",outline="purple")
canv.create_oval(400,10,480,80,fill="yellow",outline="yellow")
canv.create_rectangle(60,200,120,320,fill="yellow",outline="yellow")#
1 okno
canv.create_rectangle(200,200,260,320,fill="yellow",outline="yellow")
canv.create_line(160, 30, 200, 150,fill='red',width=4)
canv.create_line(160, 30, 150, 150,fill='red',width=4)
canv.create_line(160, 30, 100, 150,fill='red',width=4)
canv.create_line(160, 30, 50, 150,fill='red',width=4)
canv.create_line(160, 30, 250, 150,fill='red',width=4)
canv.create_line(160, 30, 300, 150,fill='red',width=4)
canv.create_line(90, 200, 90, 320,fill='purple',width=4)
canv.create_line(230, 200, 230, 320,fill='purple',width=4)
canv.create_rectangle(340,300,450,450,fill="purple",outline="black")
canv.create_rectangle(390,220,400,450,fill="green",outline="black")
canv.create_oval(360,200,430,280,fill="yellow",outline="yellow")
canv.create_line(395, 180, 395, 300,fill='purple',width=4)
canv.create_line(340, 240, 450 , 240,fill='purple',width=4)
canv.create_line(430, 250, 430 , 300,fill='purple',width=2)
canv.create_rectangle(20,400,300,450,fill="purple",outline="black")
canv.create_rectangle(70,130,110,50,fill="red",outline="black")
root.mainloop()
Пример 4 Астрономия
Рисование планет, фазы луны
from tkinter import *
c = Canvas(width=600,height=300,bg='grey80')
c.pack()
oval = c.create_oval(35,10,110,90,fill="yellow")
oval = c.create_oval(20,10,95,90,fill="black")
c.create_text(35,100,text="Растущая
луна",anchor="w")
oval = c.create_oval(135,10,210,90,fill="yellow")
oval = c.create_oval(150,10,225,90,fill="black")
c.create_text(135,100,text="Старая
луна",anchor="nw")
oval = c.create_oval(335,10,410,90,fill="yellow")
c.create_text(335,110,text=" Полная
луна",anchor="nw")
oval = c.create_oval(235,10,310,90,fill="black")
c.create_text(235,110,text="Новолуние",anchor="nw")
oval =
c.create_oval(450,10,550,130,fill="Yellow")
oval = c.create_oval(425,50,580,80,fill="grey70")
c.create_text(460,135,text="
Сатурн",anchor="nw")
oval = c.create_oval( 230,170,280,220,fill="red")
c.create_text(230,250,text="
Марс",anchor="nw")
oval = c.create_oval(
300,150,380,230,fill="green")
c.create_text(320,250,text="
Земля",anchor="nw")
oval = c.create_oval(
410,180,450,220,fill="Yellow")
c.create_text(410,250,text="
Венера",anchor="nw")
oval = c.create_oval(
490,200,510,220,fill="Yellow")
c.create_text(490,230,text="
Меркурий",anchor="nw")
oval = c.create_oval( 50,150,150,250,fill="yellow")
oval = c.create_oval( 20,190,25,195,fill="blue")
oval = c.create_oval(
170,190,175,195,fill="blue")
oval = c.create_oval(
200,190,205,195,fill="blue")
oval = c.create_oval( 75,190,80,195,fill="blue")
c.create_text(50,250 , text="Юпитер",anchor="nw")
mainloop()
Пример 5 Орнамент
from tkinter import *
root=Tk()
root.title('Графические примитивы')
# здесь будет будущий код
canv=Canvas(root,width=500,height=500,bg="lightblue",cursor="pencil")
canv.pack()
canv.create_oval(5,5,340,400,fill="yellow",outline="red")
canv.create_polygon([5,200],[57,57],[185,6],[300,70],[340,220],[290,345],[170,400],[50,340],
fill="purple",outline="red")
canv.create_oval(55,55,295,340,fill="yellow",outline="blue")
canv.create_polygon([180,55],[80,280],[273,279],fill="red",outline="red")
canv.create_oval(117,140,237,280,fill="blue",outline="blue")
canv.create_polygon([128,250],[180,140],[227,250],fill="green",outline="red")
canv.create_oval(147,180,210,250,fill="Yellow",outline="blue")
canv.create_oval(155,190,200,240,fill="blue",outline="blue")
canv.create_oval(160,195,195,235,fill="red",outline="blue")
root.mainloop()
Пример 6 Мозаика
Использование цикла
from tkinter import *
import math
root=Tk()
root.title('Графические примитивы')
# здесь будет будущий код
canv=Canvas(root,width=500,height=500,bg="lightblue",cursor="pencil")
canv.pack()
for i in range (5 ,400,30):
canv.create_oval(i+6,math.sin(i+7),i+7,(i+8),fill="blue",outline="blue")
for i in range (10 ,400,30):
canv.create_oval(i+4,math.sin(i+10),i+12,(i+16),fill="red",outline="blue")
for i in range (5 ,400,30):
canv.create_oval(i,math.sin(i+4),i+5,(i+3),fill="green",outline="green")
for i in range (5 ,500,30):
canv.create_oval(i,i+10,(i+10),i+25,fill="yellow",outline="yellow")
for i in range (5 ,500,40):
canv.create_oval(i,i,(i+30),i+30,fill="purple",outline="blue")
for i in range (45 ,500,40):
canv.create_oval(i+8,math.sin(i+2),i+3,(i+6),fill="yellow",outline="blue")
for i in range (2 ,500,20):
canv.create_rectangle(i,i,i+15,i+15,fill="red",outline="red")
for i in range (5 ,500,40):
canv.create_oval(i+25,(i+24),i+15,(i+15),fill="green",outline="blue")
for i in range (5 ,500,20):
canv.create_oval(i+5,i+5,i+10,i+10,fill="blue",outline="blue")
for i in range (5 ,500,20):
canv.create_oval(i+5,i+45,i+30,i+70,fill="red",outline="blue")
for i in range (5 ,500,20):
canv.create_oval(i+5,i+80,i+30,i+105,fill="blue",outline="blue")
for i in range (5 ,500,20):
canv.create_oval(i+5,i+115,i+30,i+140,fill="yellow",outline="blue")
for i in range (5 ,500,20):
canv.create_oval(i+5,i+150,i+30,i+175,fill="green",outline="blue")
root.mainloop()
10
Используемые ссылки
1. Примеры
разметки в Tkinter
https://python-scripts.com/tkinter-layout-example
https://ru.stackoverflow.com/questions/785731/Разметка-в-
tkinterp
4
Все о питон Программирование на Python
https://all-python.ru/primery/kalendar.html
5.
Графический калькулятор решения квадратных уравнений на Питоне Tkinter
http://pythonicway.com/python-examples/python-gui-examples/14-python-tkinter-quadratic- equations
6. Авторские методические разработки https://infourok.ru/user/glushkov-nikolay-vasilevich
1.Методические рекомендации с примерами
программных кодов на языке PYTHON
2.
Проект 1 Создание графических моделей в программе
Python с помощью
библиотеки Tkinter
3. Проект
2 Создание графических моделей в программе Python с помощью
библиотеки Tkinter.
7 Графические примитивы https://younglinux.info/tkinter/canvas.php
8 Создание графических примитивов
(рисование)
http://www.rassyhaev.ru/stati/python/tkinter-no4/
11
Заключение
В данной методической разработке (часть
2) представлен в основном практический материал по решению задач в
объектно-ориентированном аспекте на языке Питон с помощью
библиотеки Tkinter. Целью данной работы является систематизация материала
для практического и справочного его применения. В данной работе приведены
практические приемы решения задач на Питоне, представляющие интерес для
учащихся: решение задач в интерактивном режиме по заполнению одномерных и
двумерных массивов, вычисление рядов функций, решений уравнений методом
итераций и половинного деления, представлены отдельные задачи по геометрии, задачи
на кредит, задачи с подпрограммами, представлены примеры рисования примитивов с
помощью класса Canvas Начинающий программист найдет здесь нужный теоретический
материал, выберет практические примеры и ссылки на интернет источники. Задачей
автора является не только познакомить обучающихся школ с языком
программирования Питон, но и направить их на дальнейшее исследование в
программировании. Тем более этот материал с интерактивными примерами является
основой разработки web- приложений. В интернет ресурсах имеется богатый
теоретический материал для дальнейшего создания движков на языке Питон. Желаю
успехов в освоении и изучении языка Питон и его библиотек.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.