Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
В лекции будет рассматриваться пакетtkinter,который по сути является оберткой дляtcl/tk - известного графического пакета для сценарного языка tcl. На примере этого
Содержание книги
- Вызвать удаленную функцию print req.add(1, 3)
- from SimpleXMLRPCServer import SimpleXMLRPCServer
- Лекция#10:Работа с базой данных
- Работа с базой данных из python-приложения
- Поддерживаетdb-api 2. 0,а значит,переход на любую другую субд потребует минимальных изменений в вызове функции connect() и,возможно,использования более
- Следующий сценарий создаст таблицу в базе данных(в случае сsqliteзаботиться о создании базы данных не нужно:файл создастся автоматически. Для других баз данных
- c = db.connect(database="tvprogram") cu = c.cursor()
- ОРТ|Новости|Новости|9.15 10.02.2003 9.15|ОРТ|"НЕЖНЫЙ ЯД"|Сериал|10.15
- c = db.connect(database="tvprogram") cu = c.cursor()
- Для СУБДPostgreSQLнужно взять неPyGreSQL,аpsycopg,так как в первом есть
- Лекция#11:Многопоточные вычисления
- Поддержка многопоточности в языкеPythonдоступна через использование ряда модулей.В
- Пример многопоточной программы
- Thread(group, target, name, args, kwargs)
- print "Hello, world!"
- Замки позволяют ограничивать вход в некоторую область программы одним потоком. Замки могут потребоваться для обеспечения целостности структуры данных. Например,если для
- print "Процесс %s запрашивает ресурс %s" % (n, r)
- from threading import BoundedSemaphore maxconnections = 5
- Еще одним способом коммуникации между объектами являются события.Экземпляры
- notify() и notifyAll() другими потоками.Необязательный аргумент timeout
- quot;""Занесение нового элемента в контейнер и оповещение потоков"""
- quot;""Занесение нового элемента в контейнер и оповещение потоков"""
- Следующий пример иллюстрирует параллельность выполнения потоков,используя возможности библиотеки графических примитивов Tkinter(она входит в стандартную
- quot;""Выход из программы"""
- Параллельное программирование требует тщательной отработки взаимодействия между потоками управления.Некоторые участки кода необходимо ограждать от одновременного
- В лекции будет рассматриваться пакетtkinter,который по сути является оберткой дляtcl/tk - известного графического пакета для сценарного языка tcl. На примере этого
- Вхождение курсора в пределы виджета
- Focusin. Получение фокуса окном. Focusout. Keypress. Нажатие клавиши на клавиатуре. Keyrelease. Отжатие клавиши на клавиатуре. Выход курсора за пределы виджета. Motion. Движение мыши в пределах виджета. Mousewheel. Прокрутка колесика мыши. Reparent. Измен
- tk = Tk() # основное окно приложения
- Создание и конфигурирование виджета
- from Tkinter import * tk = Tk()
- При желании можно задать стилевые опции для всех виджетов сразу:с помощью метода tk_setpalette(). Помимо использованных выше свойств в этом методе можно
- from Tkinter import * import urllib
- from Tkinter import * tk = Tk()
- b[1, 3].pack(side=BOTTOM, fill=Y) b[1, 4].pack(side=BOTTOM, fill=BOTH)
- import Tkinter, Image, ImageTk
- start=0, extent=150, fill="blue")
- c.itemconfigure(CURRENT, fill=choice(colors))
- c = Canvas(tk, height=300, bg="white")
- Виджеты располагаются внутри другого виджета(например,рамки)в соответствии с набором правил.Этот набор правил реализуют менеджеры расположения,которых в
- Лекция#13:ИнтеграцияPythonс другими языками
- Py_Finalize(),Py_NewInterpreter(),Py_EndInterpreter(),Py_SetProgramName() и
- include "Python.h" #include "md5.h"
- number of bits, modulo 2^64 (lsb
- return PyString_FromStringAndSize((char *)aDigest, 16);
- MD5_new(PyObject *self, PyObject *args)
- Пример встраивания интерпретатора в программу на C
- Здесь же следует сделать Еще одно замечание:программа,встраивающаяpython,не должна много раз выполнять py_initialize() и py_finalize(),так как это может
- File : freq.i */ %module freq. typemap(out) int * { int i;. result = PyTuple_New(256); for(i=0; i<256; i++). PyTuple_SetItem($result, i, PyLong_FromLong($1[i])); free($1);. extern int * frequency(char s[]);. swig -python freq.i. I/usr/local/lib/python2
- PyLong_FromLong(result[i])); free(result);
В лекции будет рассматриваться пакетTkinter,который по сути является оберткой дляTcl/Tk - известного графического пакета для сценарного языка Tcl. На примере этого
пакета легко изучить основные принципы построения графического интерфейса пользователя.
О графическом интерфейсе
Почти все современные графические интерфейсы общего назначения строятся по моделиWIMP - Window, Icon, Menu, Pointer (окно, иконка, меню, указатель). Внутри окон рисуются
элементы графического интерфейса,которые для краткости будут называться виджетами(widget -штучка).Меню могут располагаться в различных частях окна,но их поведение достаточно однотипно:они служат для выбора действия из набора предопределенных действий.Пользователь графического интерфейса"объясняет"компьютерной программе требуемые действия с помощью указателя.Обычно указателем служит курсор мыши или джойстика,однако есть и другие"указательные"устройства.С
помощью иконок графический интерфейс приобретает независимость от языка и в некоторых случаях позволяет быстрее ориентироваться в интерфейсе.
Основной задачей графического интерфейса является упрощение коммуникации между пользователем и компьютером.Об этом следует постоянно помнить при проектировании интерфейса.Применение имеющихся в наличии у программиста(или дизайнера)средств при создании графического интерфейса нужно свести до минимума,выбирая наиболее удобные пользователю виджеты в каждом конкретном случае.Кроме того,полезно следовать принципу наименьшего удивления:из формы интерфейса должно быть понятно его поведение.Плохо продуманный интерфейс портит ощущения пользователя от программы,даже если за фасадом интерфейса скрывается эффективный алгоритм.Интерфейс должен быть удобен для типичных действий пользователя.Для многих приложений такие действия выделены в отдельные серии экранов,называемые"мастерами" (wizards). Однако если приложение - скорее конструктор, из которого пользователь может строить нужные ему решения,типичным действием является именно построение решения.Определить типичные действия не всегда легко,поэтому компромиссом может быть гибрид,в котором есть"мастера"и хорошие возможности для собственных построений.Тем не менее,графический интерфейс не является самым эффективным интерфейсом во всех случаях.Для многих предметных областей решение
проще выразить с помощью деклараций на некотором формальном языке или алгоритма на сценарном языке.
Основы Tk
Основная черта любой программы с графическим интерфейсом-интерактивность.Программа не просто что-то считает(в пакетном режиме)от начала своего запуска до конца:ее действия зависят от вмешательства пользователя.Фактически,графическое приложение выполняет бесконечный цикл обработки событий.Программа,реализующая графический интерфейс,событийно-ориентирована.Она ждет от интерфейса событий,которые и обрабатывает сообразно своему внутреннему состоянию.
Эти события возникают в элементах графического интерфейса(виджетах)и обрабатываются прикрепленными к этим виджетам обработчиками.Сами виджеты имеют многочисленные свойства(цвет,размер,расположение),выстраиваются в иерархию принадлежности(один виджет может быть хозяином другого),имеют методы для доступа к своему состоянию.
Расположением виджетов(внутри других виджетов)ведают так называемые менеджеры расположения.Виджет устанавливается на место по правилам менеджера расположения.Эти правила могут определять не только координаты виджета,но и его размеры.ВTkимеются три типа менеджеров расположения:простой упаковщик(pack),сетка(grid)и произвольное расположение(place).
Но этого для работы графической программы недостаточно.Дело в том,что некоторые виджеты в графической программе должны быть взаимосвязаны определенным образом.Например,полоска прокрутки может быть взаимосвязана с текстовым виджетом:при использовании полоски текст в виджете должен двигаться,и наоборот,при перемещении по тексту полоска должна показывать текущее положение.Для связи между виджетами вTk используются переменные, через которые виджеты и передают друг другу параметры.
|