Инфоурок Другое ПрезентацииГрафический интерфейс пользователя

Графический интерфейс пользователя

Скачать материал
Скачать материал "Графический интерфейс пользователя"

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

Бухгалтер

за 6 месяцев

Пройти курс

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

Скачать

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

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

Инженер по автоматизации производства

Описание презентации по отдельным слайдам:

  • Лекция 11   Графический интерфейс пользователя1

    1 слайд

    Лекция 11
    Графический интерфейс пользователя
    1

  • Модуль tkinter2tkinter – графический модуль, который входит в стандартный ком...

    2 слайд

    Модуль tkinter
    2
    tkinter – графический модуль, который входит в стандартный комплект Питона и позволяет программировать не только в объектном, но и в процедурном стиле.

    >>> import tkinter
    >>> tk = tkinter.Tk()

    http://younglinux.info/tkinter.php - для начала
    http://ru.wikiversity.org/wiki/Курс_по_библиотеке_Tkinter_языка_Python
    >>> import tkinter
    >>> from tkinter import *
    >>> tk = Tk()

  • Tcl/Tk3Скриптовый язык Tcl (от англ. Tool Command Language) разработан в 1988...

    3 слайд

    Tcl/Tk
    3
    Скриптовый язык Tcl (от англ. Tool Command Language) разработан в 1988 году Джоном Оустерхаутом, который в то время работал в университете Бэркли.
    Язык состоит из команд и их параметров, разделенных пробелами. Все данные – текстовые. Ключевых слов нет.

    Tk – графическая библиотека, написанная для Tcl.
    Области применения языка:
    быстрое прототипирование,
    создание графических интерфейсов для консольных программ,
    встраивание в прикладные программы,
    тестирование,
    системная интеграция.
    «тикль-ток»

  • Главное окно4import tkinter
from tkinter import *
root = Tk()
root.mainloop()...

    4 слайд

    Главное окно
    4
    import tkinter
    from tkinter import *
    root = Tk()
    root.mainloop()
    Конструктор – функция, которая создает и возвращает объект.
    Объект – то, что имеет методы.

    tk – объект главного окна.

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

  • Окно с кнопкой5import tkinter
from tkinter import *
root = Tk()

btn1 = Butto...

    5 слайд

    Окно с кнопкой
    5
    import tkinter
    from tkinter import *
    root = Tk()

    btn1 = Button(root)
    btn1["text"] = 'Превед'
    btn1["bg"] = 'blue'
    btn1["fg"] = 'white'
    btn1.place(x = 100, y = 50)

    btn2 = Button(root, text='Медвед', bg='blue', fg='white')
    btn2.place(x = 200, y = 50)

    root.mainloop()

    >>> btn1.keys()

  • Задание свойств виджета6Задавать свойства виджета можно тремя способами.

1....

    6 слайд

    Задание свойств виджета
    6
    Задавать свойства виджета можно тремя способами.

    1. Во время создания объекта с помощью именованных параметров:

    btn1 = Button(root, text='Медвед', bg='blue', fg='white')

    2. После создания объекта, рассматривая объекты как словари, а название опции как ключ:

    btn1["text"] = 'Медвед'
    btn1["bg"] = 'blue'
    btn1["fg"] = 'white'

    3. После создания объекта при помощи его метода config():

    btn1.config(text='Медвед', bg='blue', fg='white')

  • Связывание действий7import tkinter
from tkinter import *
root = Tk()
btn1 = B...

    7 слайд

    Связывание действий
    7
    import tkinter
    from tkinter import *
    root = Tk()
    btn1 = Button(root, text='Привет', bg='blue', fg='white')
    btn2 = Button(root, text='Медвед', bg='blue', fg='white')
    btn1.place(x = 100, y = 50)
    btn2.place(x = 200, y = 50)

    def f1():
    root.title(btn1["text"])

    def f2():
    root.title(btn2["text"])

    btn1['command'] = f1 # здесь можно присвоить только
    btn2['command'] = f2 # ф-цию без параметров

    root.mainloop()

  • Правильное проектирование8Принцип проектирования "Разделение ответственности"...

    8 слайд

    Правильное проектирование
    8
    Принцип проектирования "Разделение ответственности":
    один модуль решает одну задачу.

    Есть две задачи:
    построение GUI,
    выполнение расчетов.

    Вывод: должно быть два модуля.

  • Ответственность разделена9def f(b, r):
    r.title(b["text"])
###############...

    9 слайд

    Ответственность разделена
    9
    def f(b, r):
    r.title(b["text"])
    #####################################################
    import tkinter
    from tkinter import *
    root = Tk()
    btn1 = Button(root, text='Привет', bg='blue', fg='white')
    btn2 = Button(root, text='Медвед', bg='blue', fg='white')
    btn1.place(x = 100, y = 50)
    btn2.place(x = 200, y = 50)

    btn1['command'] = lambda: f(btn1, root)
    btn2['command'] = lambda: f(btn2, root)

    root.mainloop()

  • Калькулятор101+2+4+3Вычислить=10Entry                       Button...

    10 слайд

    Калькулятор
    10
    1+2+4+3
    Вычислить
    =10
    Entry Button Label

  • 11def calc(s):
    lst = s.split('+')
    summa = 0
    for x in lst:...

    11 слайд

    11
    def calc(s):
    lst = s.split('+')
    summa = 0
    for x in lst:
    summa += int(x)
    return summa
    #--------------------------------------------
    import tkinter
    from tkinter import *
    root = Tk()

    root['width'] = 400
    root['height'] = 200

    entry = Entry(root, width = 25)
    entry.place(x = 20, y = 20)

    btn = Button(root, text='Вычислить')
    btn.place(x = 20, y = 50)

    lbl = Label(root)
    lbl.place(x = 200, y = 20)

    def btn_command():
    res = calc(entry.get())
    lbl['text'] = '= ' + str(res)

    btn['command'] = btn_command
    root.mainloop()
    Код калькулятора

  • Самостоятельно12В первой программе (Превед-Медвед) сделать так, чтобы при наж...

    12 слайд

    Самостоятельно
    12
    В первой программе (Превед-Медвед) сделать так, чтобы при нажатии на любую из двух кнопок надписи на них менялись местами. Разделение ответственности сохранить.

    Спроектировать пользовательский интерфейс и написать программу для перевода чисел в p-ичную систему счисления. Число и основание системы вводит пользователь.

  • Лекция 12   Виджеты и переменные13

    13 слайд

    Лекция 12
    Виджеты и переменные
    13

  • Метки14Метки (или надписи) — содержат строку (или несколько строк) текста и с...

    14 слайд

    Метки
    14
    Метки (или надписи) — содержат строку (или несколько строк) текста и служат для информирования пользователя.

    label1 = Label(root, text = "Это метка!\nИз двух строк.",
    font = "Arial 18")

    label1.place(x = 0, y = 0)

    Виджеты (управляющие элементы) – видимые объекты, воспринимающие действия пользователя, и передающие информацию ему.

  • Текстовое поле15В него пользователь может ввести только одну строку текста.
e...

    15 слайд

    Текстовое поле
    15
    В него пользователь может ввести только одну строку текста.

    entry = Entry(root, width=20, bd=3)

    width – ширина поля в символах
    bd – ширина границы

  • Многострочное текстовое поле16Позволяет ввести несколько строк текста.
text =...

    16 слайд

    Многострочное текстовое поле
    16
    Позволяет ввести несколько строк текста.

    text = Text(root, width=30, height=5,
    font="Verdana 12",
    wrap=WORD)

    Свойство wrap в зависимости от своего значения позволяет переносить текст, вводимый пользователем, либо по символам, либо по словам, либо вообще не переносить, пока пользователь не нажмет Enter.

  • "Переменные" библиотеки tkinter17Переменные – это объекты, которые дают допол...

    17 слайд

    "Переменные" библиотеки tkinter
    17
    Переменные – это объекты, которые дают дополнительные возможности для управления виджетами.
    Переменные бывают четырех типов:
    StringVar() – строковые;
    IntVar() – целые;
    DoubleVar() – вещественные;
    BooleanVar() – логические.
    Переменные имеют методы set() и get() для установки и получения их значений.
    Связываются переменные с виджетами через свойство виджета variable или textvariable.
    v = StringVar()
    v.set("Привет!")
    ent = Entry(root, width=20, bd=3, textvariable = v)
    Одну переменную можно связать с несколькими виджетами.

  • Радиокнопки (переключатели)18Радиокнопка никогда не используется в одиночку....

    18 слайд

    Радиокнопки (переключатели)
    18
    Радиокнопка никогда не используется в одиночку. Их используют группами, при этом в одной группе может быть «включена» лишь одна кнопка.
    var1 = IntVar()
    var1.set(1)

    var2 = IntVar()
    var2.set(0)

    # эти кнопоки объединяет в группу переменная var1
    r1 = Radiobutton(root,text="Первая", variable=var1,value=0)
    r2 = Radiobutton(root,text="Вторая", variable=var1,value=1)

    # эти кнопоки объединяет в группу переменная var2
    r3 = Radiobutton(root,text="Третья", variable=var2,value=0)
    r4 = Radiobutton(root,text="Четвертая",variable=var2,value=1)
    Сколько переменных, столько и групп. Внутри группы кнопки различаются по значению переменной.

  • Флажки19Объект checkbutton предназначен для выбора одного и более не взаимоис...

    19 слайд

    Флажки
    19
    Объект checkbutton предназначен для выбора одного и более не взаимоисключающих пунктов.
    В отличие от радиокнопок, каждый флажок привязывается к отдельной переменной, значение которой определяется свойствами onvalue (включено) и offvalue (выключено).
    v1 = IntVar()
    v2 = IntVar()

    check1 = Checkbutton(root, text="Первый флажок",
    variable=v1, onvalue=1, offvalue=0)

    check2 = Checkbutton(root, text="Второй флажок",
    variable=v2, onvalue=5, offvalue=0)

  • Списки20Listbox – это объект, в котором пользователь может выбрать один или н...

    20 слайд

    Списки
    20
    Listbox – это объект, в котором пользователь может выбрать один или несколько пунктов в зависимости от значения опции selectmode.
    Значение selectmode = SINGLE позволяет выбирать лишь один пункт из списка.
    words = ['Linux','Python','Tk','Tkinter']

    listbox = Listbox(root, selectmode=SINGLE, height=4)
    # заполнение списка пунктами
    for i in words:
    listbox.insert(END,i)
    Получить выбранную в списке строку можно методом listbox.selection_get()

  • Менеджеры расположения21При изменении размеров главного окна все его дочерние...

    21 слайд

    Менеджеры расположения
    21
    При изменении размеров главного окна все его дочерние виджеты должны подстроиться под новые размеры родителя.

    Объект, который меняет расстановку виджетов, называется менеджером расположения.

    В библиотеке tkinter их три: grid, pack и place.

    import tkinter
    from tkinter import *
    root = Tk()

    entry = Entry(root, width = 25)
    entry.place(x = 20, y = 20)

    lbl = Label(root, text= '= 1000')
    lbl.place(x = 200, y = 20)

    btn = Button(root, text='Вычислить')
    btn.place(x = 20, y = 50)

    root.mainloop()
    import tkinter
    from tkinter import *
    root = Tk()

    entry = Entry(root, width = 25)
    entry.pack()

    lbl = Label(root, text= '= 1000')
    lbl.pack()

    btn = Button(root, text='Вычислить')
    btn.pack()

    root.mainloop()

  • Менеджер pack22Aргументы:

side ("left" / "right" / "top" / "bottom") - к как...

    22 слайд

    Менеджер pack
    22
    Aргументы:

    side ("left" / "right" / "top" / "bottom") - к какой стороне должен примыкать размещаемый виджет. "top" – по умолчанию.
    import tkinter
    from tkinter import *
    root = Tk()
    entry = Entry(root, width = 25)
    S = TOP
    entry.pack(side=S)

    lbl = Label(root, text='= 1000', bg='gray')
    lbl.pack(side=S)

    btn = Button(root, text='Вычислить')
    btn.pack(side=S)
    root.mainloop()

  • pack + Frame23from tkinter import *
root = Tk()

f1=Frame(root,bg='gray', bd=...

    23 слайд

    pack + Frame
    23
    from tkinter import *
    root = Tk()

    f1=Frame(root,bg='gray', bd=5)
    f2=Frame(root,bg='gray', bd=5)
    f1.pack()
    f2.pack()

    entry = Entry(f1, width = 25)
    entry.pack(side=LEFT)

    lbl = Label(f1, text='= 1000', bg='gray')
    lbl.pack(side=LEFT)

    btn = Button(f2, text='Вычислить')
    btn.pack()

    root.mainloop()

  • Менеджер grid24row - номер строки, в который помещаем виджет.

row...

    24 слайд

    Менеджер grid
    24
    row - номер строки, в который помещаем виджет.

    rowspan - сколько строк занимает виджет

    column - номер столбца, в который помещаем виджет.

    columnspan - сколько столбцов занимает виджет.

    padx / pady - размер внешней границы (бордюра) по горизонтали и вертикали.

    ipadx / ipady - размер внутренней границы (бордюра) по горизонтали и вертикали. Разница между pad и ipad в том, что при указании pad расширяется свободное пространство, а при ipad расширяется помещаемый виджет.

    sticky ("n", "s", "e", "w" или их комбинация) - указывает к какой границе "приклеивать" виджет. Позволяет расширять виджет в указанном направлении.


  • Применение менеджера grid25import tkinter
from tkinter import *
root = Tk()...

    25 слайд

    Применение менеджера grid
    25
    import tkinter
    from tkinter import *
    root = Tk()

    entry = Entry(root, width = 25)
    entry.grid(row = 0, column = 0, padx=5, pady=5)

    lbl = Label(root, text='= 1000', bg='gray')
    lbl.grid(row = 0, column = 1, padx=5, pady=5)

    btn = Button(root, text='Вычислить')
    btn.grid(row = 1, column = 0, columnspan = 2)

    root.mainloop()
    btn
    entry
    lbl

  • Менеджер place26Аргументы:

anchor ("n", "s", "e", "w", "ne", "nw", "se", "sw...

    26 слайд

    Менеджер place
    26
    Аргументы:

    anchor ("n", "s", "e", "w", "ne", "nw", "se", "sw" или "center") – какой угол или сторона размещаемого виджета будет указана в аргументах x/y/relx/rely. По умолчанию "nw" - левый верхний угол.

    bordermode ("inside", "outside", "ignore") – определяет, каким образом будут учитываться границы при размещении виджета.

    x и y – абсолютные координаты виджета в пикселях.

    width и height  – абсолютные ширина и высота виджета.

    relx и rely  – относительные координаты (от 0.0 до 1.0) размещения виджета.

    relwidth и relheight  – относительные ширина и высота виджета.

  • place - резиновые координаты27import tkinter
from tkinter import *
root = Tk(...

    27 слайд

    place - резиновые координаты
    27
    import tkinter
    from tkinter import *
    root = Tk()

    entry = Entry(root, width = 25)
    entry.place(relx = 0.1, rely = 0.1)

    lbl = Label(root, text='= 1000', bg='gray')
    lbl.place(relx = 0.7, rely = 0.1)

    btn = Button(root, text='Вычислить')
    btn.place(relx = 0.4, rely = 0.5)

    root.mainloop()

  • Самостоятельно28Расположить в окне три кнопки с надписями "Красный", "Зеленый...

    28 слайд

    Самостоятельно
    28
    Расположить в окне три кнопки с надписями "Красный", "Зеленый", "Синий". При нажатии на кнопку окно должно окрашиваться в соответствующий цвет.

    Сделать игру "крестики-нолики" на поле 3x3. Использовать 9 кнопок. Два игрока ходят по очереди, программа объявляет победителя или ничью.

    Второй вариант того же – игра одного игрока против компьютера.

  • Три кнопки – вариант 129from tkinter import *
tk = Tk()

def paintRed():   tk...

    29 слайд

    Три кнопки – вариант 1
    29
    from tkinter import *
    tk = Tk()

    def paintRed(): tk.config(bg="red")
    def paintGreen(): tk.config(bg="green")
    def paintBlue(): tk.config(bg="blue")

    r = Button(tk, text="Red", command=paintRed)
    r.pack(side=LEFT)

    g = Button(tk, text="Green", command=paintGreen)
    g.pack(side=LEFT)

    b = Button(tk, text="Blue", command=paintBlue)
    b.pack(side=LEFT)

    tk.mainloop()

  • Три кнопки – вариант 230from tkinter import *
tk = Tk()

def paint(color): tk...

    30 слайд

    Три кнопки – вариант 2
    30
    from tkinter import *
    tk = Tk()

    def paint(color): tk.config(bg=color)

    buttons = [
    Button(tk, text="Red", command=lambda: paint("red")),
    Button(tk, text="Green", command=lambda: paint("green")),
    Button(tk, text="Blue", command=lambda: paint("blue")),]
    for b in buttons:
    b.pack(side=LEFT)

    tk.mainloop()

  • Крестики-нолики31send(r, c, back)back(r, c, what)Главный модуль – GUIМодель

    31 слайд

    Крестики-нолики
    31
    send(r, c, back)
    back(r, c, what)
    Главный модуль – GUI
    Модель

  • Крестики-нолики32from model import *
from tkinter import *
tk = Tk()
# квадра...

    32 слайд

    Крестики-нолики
    32
    from model import *
    from tkinter import *
    tk = Tk()
    # квадратный массив кнопок с индивидуальными командами
    b = [[ Button(tk, command=lambda: send(0, 0, back)),
    Button(tk, command=lambda: send(0, 1, back)),
    Button(tk, command=lambda: send(0, 2, back))],
    [ Button(tk, command=lambda: send(1, 0, back)),
    Button(tk, command=lambda: send(1, 1, back)),
    Button(tk, command=lambda: send(1, 2, back))],
    [ Button(tk, command=lambda: send(2, 0, back)),
    Button(tk, command=lambda: send(2, 1, back)),
    Button(tk, command=lambda: send(2, 2, back))],]

    # настройка внешнего вида кнопок
    for r in range(3):
    for c in range(3):
    b[r][c].config(font="Consolas 44", width=4, text=" ")
    b[r][c].grid(row=r, column=c)

    # функция обратного вызова - ставит значки на кнопках, сообщает о победе
    def back(r, c, what, winner):
    global b
    if winner != 2:
    tk.title("Победил " + ("нолик", "крестик")[winner])
    disableButtons()
    b[r][c]["text"] = "0X"[what]

    def disableButtons():
    for r in range(3):
    for c in range(3):
    b[r][c]["command"] = ''

    tk.mainloop()
    # Модель в виде числовой таблицы с числами: 0-нолик, 1-крестик, 2-пусто
    S = 2
    X = 1
    field = [ [S,S,S], [S,S,S], [S,S,S], ]

    # Что ставить на очередном ходе - крестик или нолик
    # Начинаем с крестика
    current = X

    # Команда, которую модуль main подает модели
    def send(r, c, back):
    global current, field
    if field[r][c] == S:
    field[r][c] = current
    current = (current + 1) % 2
    back(r, c, field[r][c], getWinner(field))

    def getWinner(m):
    # по гризонтали
    if m[0][0] == m[0][1] == m[0][2] != S: return m[0][0]
    if m[1][0] == m[1][1] == m[1][2] != S: return m[1][0]
    if m[2][0] == m[2][1] == m[2][2] != S: return m[2][0]
    # по вертикали
    if m[0][0] == m[1][0] == m[2][0] != S: return m[0][0]
    if m[0][1] == m[1][1] == m[2][1] != S: return m[0][1]
    if m[0][2] == m[1][2] == m[2][2] != S: return m[0][2]
    # по диагонали
    if m[0][0] == m[1][1] == m[2][2] != S: return m[0][0]
    if m[2][0] == m[1][1] == m[0][2] != S: return m[2][0]
    return 2


  • Лекция 13   События33

    33 слайд

    Лекция 13
    События
    33

  • Что такое событие34Типовой сценарий события

Пользователь совершил действие (...

    34 слайд

    Что такое событие
    34
    Типовой сценарий события

    Пользователь совершил действие (кликнул мышкой по кнопке).

    Операционная система получила информацию об этом.

    ОС вычислила программу и кнопку, по которой кликнул пользователь.

    ОС отправила сообщение программе с информацией о действии пользователя (т.е. вызвала какую-то закрытую функцию программы).

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

    Если функция есть, она вызывается и ей передается параметр –информация о событии.

  • Метод bind()35Метод bind() привязывает функцию к какому-либо действию пользов...

    35 слайд

    Метод bind()
    35
    Метод bind() привязывает функцию к какому-либо действию пользователя (нажатие кнопки мыши, нажатие клавиши на клавиатуре и т.д.).

    Метод bind() принимает три аргумента:
    название события
    функцию, которая будет вызвана при наступлении события
    третий аргумент необязательный – строка "+" - означает, что эта привязка добавляется к уже существующим.
    from tkinter import *
    root = Tk()
    frm = Frame(root, width=400, height=400, bg="pink")
    frm.pack()

    def my(e):
    b = Button(frm, text="XXX")
    b.place(x = e.x, y = e.y)

    frm.bind("<Button-1>", my)
    root.mainloop()

  • Виды событий36MouseWheel - прокрутка колесом мыши

KeyPress, KeyRelease - наж...

    36 слайд

    Виды событий
    36
    MouseWheel - прокрутка колесом мыши

    KeyPress, KeyRelease - нажатие и отпускание клавиши на клавиатуре

    ButtonPress, ButtonRelease, Motion - нажатие, отпускание клавиши мыши, движение мышью

    Configure - изменение положения или размера окна

    Map, Unmap - показывание или сокрытие окна (например, в случае сворачивания/разворачивания окна пользователем)

    Expose - событие генерируется, когда необходимо всё окно или его часть перерисовать

    FocusIn, FocusOut - получение или лишение фокуса ввода виджетом

    Enter, Leave - курсор мыши "входит" в виджет, или "уходит" из виджета

  • Пример: визуализация координат курсора37def show(ev):
    &quot;&quot;&quot;выводит координа...

    37 слайд

    Пример: визуализация координат курсора
    37
    def show(ev):
    """выводит координаты мыши в заголовок окна"""
    str = "x = {0} y = {1}".format(ev.x, ev.y)
    root = ev.widget.master
    root.title(str)

    from tkinter import *
    root = Tk()

    f1 = Frame(root, bg="yellow", width = 400, height = 400)
    f1.pack()
    f1.bind("<Motion>", show)

    root.mainloop()

  • Рисование на холсте38Сначала нужно создать холст (род виджета, как кнопка или...

    38 слайд

    Рисование на холсте
    38
    Сначала нужно создать холст (род виджета, как кнопка или окно)
    canvas = Canvas(root, width = 500, height = 500, bg = "lightblue", cursor = "pencil")

    На холсте можно рисовать линии
    canvas.create_line(200,50,300,50,width=3,fill="blue")
    canvas.create_line(0,0,100,100,width=2,arrow=LAST)
    прямоугольники
    x = 75
    y = 110
    canvas.create_rectangle(x,y,x+80,y+50,fill="white",
    outline="blue")
    многоугольники
    canvas.create_polygon([250,100],[200,150],[300,150],
    fill="yellow")
    canvas.create_polygon([300,80],[400,80],[450,75],[450,200],
    [300,180],[330,160],outline="white",smooth=1)
    эллипсы
    canvas.create_oval([20,200],[150,300],fill="gray50")

  • Самостоятельно39Решить задачу с тремя кнопками, используя обработку событий....

    39 слайд

    Самостоятельно
    39
    Решить задачу с тремя кнопками, используя обработку событий.

    Переписать игру в крестики нолики, используя обработку событий.

  • Три кнопки – вариант 340from tkinter import *
tk = Tk()

def click(e): 
    t...

    40 слайд

    Три кнопки – вариант 3
    40
    from tkinter import *
    tk = Tk()

    def click(e):
    tk.config(bg = e.widget.color)

    for color in ["Red", "Green", "Blue"]:
    b = Button(tk, text = color)
    b.bind("<Button-1>", click)
    b.color = color
    b.pack(side = LEFT)

    tk.mainloop()

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

Секретарь-администратор

за 6 месяцев

Пройти курс

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

Скачать

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

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

6 669 046 материалов в базе

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

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

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

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

  • Скачать материал
    • 09.10.2020 734
    • PPTX 402.5 кбайт
    • 16 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Капанова Натали Юрьевна. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

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

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

    Капанова Натали Юрьевна
    Капанова Натали Юрьевна
    • На сайте: 3 года и 4 месяца
    • Подписчики: 0
    • Всего просмотров: 91460
    • Всего материалов: 227

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

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

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

Няня

Няня

500/1000 ч.

Подать заявку О курсе

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

Руководство электронной службой архивов, библиотек и информационно-библиотечных центров

Начальник отдела (заведующий отделом) архива

600 ч.

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

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

Библиотечно-библиографические и информационные знания в педагогическом процессе

Педагог-библиотекарь

300/600 ч.

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

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

Организация деятельности библиотекаря в профессиональном образовании

Библиотекарь

300/600 ч.

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

Мини-курс

Маркетинг в сфере услуг: от управления до рекламы

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 30 человек из 14 регионов

Мини-курс

Основы искусствознания

5 ч.

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

Мини-курс

Психологические вызовы современного подростка: риски и профилактика

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 124 человека из 48 регионов
  • Этот курс уже прошли 38 человек