Инфоурок Информатика Другие методич. материалыМетодические рекомендации с примерами программных кодов на языке Python GUI (уроки по Tkinter) для учащихся 8-11 классов (часть 2)

Методические рекомендации с примерами программных кодов на языке Python GUI (уроки по Tkinter) для учащихся 8-11 классов (часть 2)

Скачать материал

Средняя общеобразовательная школа № 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  - интерактивный  оконный модуль       

Пример Игра в лото
Фрагмент программного кода:
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: %sc is : %ss is
               %.2
f  " % (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()

ПримерМозаика     Использование цикла

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/Разметка-в-
tkinter
p

2Позицирование элементов
https://metanit.com/python/tutorial/9.4.php

3 Создание GUI на Python с помощью библиотеки Tkinter. Программирование для начинающих
 
http://younglinux.info/tkinter.php
http://docplayer.ru/259428-Modul-tkinter-sozdanie-graficheskogo-interfeysa-polzovatelya-s-pomoshchyu-yazyka-programmirovaniya-python.html



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- приложений. В интернет ресурсах имеется богатый теоретический материал для дальнейшего создания движков на языке Питон. Желаю успехов в освоении и изучении языка Питон и его библиотек.



 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Методические рекомендации с примерами программных кодов на языке Python GUI (уроки по Tkinter) для учащихся 8-11 классов (часть 2)"

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Тьютор

Получите профессию

Экскурсовод (гид)

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 665 931 материал в базе

Материал подходит для УМК

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 19.05.2020 1452
    • DOCX 79.4 кбайт
    • 63 скачивания
    • Оцените материал:
  • Настоящий материал опубликован пользователем Глушков Николай Васильевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Глушков Николай Васильевич
    Глушков Николай Васильевич
    • На сайте: 8 лет и 10 месяцев
    • Подписчики: 0
    • Всего просмотров: 46829
    • Всего материалов: 22

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Методист-разработчик онлайн-курсов

Методист-разработчик онлайн-курсов

500/1000 ч.

Подать заявку О курсе
  • Сейчас обучается 142 человека из 46 регионов

Курс повышения квалификации

Методика преподавания информатики в начальных классах

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Этот курс уже прошли 67 человек

Курс профессиональной переподготовки

Информатика: теория и методика преподавания с применением дистанционных технологий

Учитель информатики

300 ч. — 1200 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 20 человек из 12 регионов
  • Этот курс уже прошли 18 человек

Курс повышения квалификации

Использование компьютерных технологий в процессе обучения информатике в условиях реализации ФГОС

36 ч. — 144 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 139 человек из 44 регионов
  • Этот курс уже прошли 1 298 человек

Мини-курс

Политическое проектирование и международные отношения"

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Судебные процессы и их особенности

8 ч.

1180 руб. 590 руб.
Подать заявку О курсе
  • Сейчас обучается 36 человек из 21 региона
  • Этот курс уже прошли 14 человек

Мини-курс

Искусственный интеллект: тексты и креативы

7 ч.

1180 руб. 590 руб.
Подать заявку О курсе
  • Сейчас обучается 245 человек из 63 регионов
  • Этот курс уже прошли 29 человек