Чтение онлайн

на главную - закладки

Жанры

Язык программирования Python
Шрифт:

«"«Выход из программы»""

tk.quit

sys.exit(0)

# Прорисовка окна, основы для прямоугольников и самих прямоугольников,

# кнопок для пуска и выхода

tk = Tk

tk.title(«Соревнование потоков»)

c = Canvas(tk, width=distance, height=nrunners*h, bg=«White»)

c.pack

rects = [c.create_rectangle(0, i*h, 0, i*h+h2, fill=colors[i])

for i in range(nrunners)]

go_b = Button(text=«Go», command=tk.quit)

go_b.pack(side=LEFT)

quit_b = Button(text=«Quit», command=quit)

quit_b.pack(side=RIGHT)

# Замок, регулирующий доступ к функции пакета Tk

graph_lock = threading.Lock

# Цикл проведения соревнований

while 1:

go_b.config(state=NORMAL), quit_b.config(state=NORMAL)

tk.mainloop # Ожидание нажатия клавиш

champion = None

ready_steady_go

go_b.config(state=DISABLED), quit_b.config(state=DISABLED)

# Главный поток ждет финиша всех участников

while sum(positions) < distance*nrunners:

update_positions

update_positions

go_b.config(bg=champion) # Кнопка окрашивается в цвет победителя

tk.update_idletasks

Примечание:

Эта программа использует некоторые возможности языка Python 2.3 (встроенную функцию sum и списковые включения), поэтому для ее выполнения нужен Python версии не меньше 2.3.

Заключение

Навыки параллельного программирования необходимы любому профессиональному программисту. Одним из вариантов организации (псевдо) параллельного программирования является многопоточное программирование (другой вариант, более свойственный Unix–системам — многопроцессное программирование — здесь не рассматривается). В обычной (однопоточной) программе действует всего один поток управления, а в многопоточной одновременно могут работать несколько потоков.

Параллельное программирование требует тщательной отработки взаимодействия между потоками управления. Некоторые участки кода необходимо ограждать от одновременного использования двумя различными потоками, дабы не нарушить целостность изменяемых структур данных или логику работы с внешними ресурсами. Для ограждения участков кода используются замки и семафоры.

Стандартная библиотека Python предоставляет довольно неплохой набор возможностей для многопоточного программирования в модулях threading и thread, а также некоторые полезные вспомогательные модули (например, Queue).

12. Лекция: Создание приложений с графическим интерфейсом пользователя.

В этой лекции рассматривается создание простейшего приложения с графическим интерфейсом пользователя. Для построения интерфейса не применяются визуальные средства («построители интерфейса»), а используются возможности графической библиотеки виджетов (Tk).

Обзор графических библиотек

Строить графический интерфейс пользователя (GUI, Graphical User Interface) для программ на языке Python можно при помощи соответствующих библиотек компонентов графического интерфейса или, используя кальку с английского, библиотек виджетов.

Следующий список далеко не полон, но отражает многообразие существующих решений:

Tkinter Многоплатформенный пакет имеет хорошее управление расположением компонентов. Интерфейс выглядит одинаково на различных платформах (Unix, Windows, Macintosh). Входит в стандартную поставку Python. В качестве документации можно использовать руководство «An Introduction to Tkinter» («Введение в Tkinter»), написанное Фредриком Лундом: http://www.pythonware.com/library/tkinter/introduction/

wxPython Построен на многоплатформной библиотеке wxWidgets (раньше называлась wxWindows). Выглядит родным для всех платформ, активно совершенствуется, осуществлена поддержка GL. Имеется для всех основных платформ. Возможно, займет место Tkinter в будущих версиях Python. Сайт: http://www.wxpython.org/

PyGTK Набор визуальных компонентов для GTK+ и Gnome. Только для платформы GTK.

PyQT/PyKDE Хорошие пакеты для тех, кто использует Qt (под UNIX или Windows) или KDE.

Pythonwin Построен вокруг MFC, поставляется вместе с оболочкой в пакете win32all; только для Windows.

pyFLTK Аналог Xforms, поддержка OpenGL. Имеется для платформ Windows и Unix. Сайт: http://pyfltk.sourceforge.net/

AWT, JFC, Swing Поставляется вместе с Jython, а для Jython доступны средства, которые использует Java. Поддерживает платформу Java.

anygui Независимый от нижележащей платформы пакет для построения графического интерфейса для программ на Python. Сайт: http://anygui.sourceforge.net/

PythonCard Построитель графического интерфейса, сходный по идеологии с HyperCard/MetaCard. Разработан на базе wxPython. Сайт: http://pythoncard.sourceforge.net/

Список актуальных ссылок на различные графические библиотеки, доступные из Python, можно найти по следующему адресу: http://phaseit.net/claird/comp.lang.python/python_GUI.html

Библиотеки могут быть многоуровневыми. Например, PythonCard использует wxPython, который, скажем, на платформе Linux базируется на многоплатформной GUI–библиотеке wxWindows, которая, в свою очередь, базируется на GTK+ или на Motif, а те — тоже используют для вывода X Window. Кстати, для Motif в Python имеются свои привязки.

В лекции будет рассматриваться пакет Tkinter, который по сути является оберткой для Tcl/Tk — известного графического пакета для сценарного языка Tcl. На примере этого пакета легко изучить основные принципы построения графического интерфейса пользователя.

О графическом интерфейсе

Почти все современные графические интерфейсы общего назначения строятся по модели WIMP — Window, Icon, Menu, Pointer (окно, иконка, меню, указатель). Внутри окон рисуются элементы графического интерфейса, которые для краткости будут называться виджетами (widget — штучка). Меню могут располагаться в различных частях окна, но их поведение достаточно однотипно: они служат для выбора действия из набора предопределенных действий. Пользователь графического интерфейса «объясняет» компьютерной программе требуемые действия с помощью указателя. Обычно указателем служит курсор мыши или джойстика, однако есть и другие «указательные» устройства. С помощью иконок графический интерфейс приобретает независимость от языка и в некоторых случаях позволяет быстрее ориентироваться в интерфейсе.

Поделиться:
Популярные книги

Мы - истребители

Поселягин Владимир Геннадьевич
2. Я - истребитель
Фантастика:
альтернативная история
8.55
рейтинг книги
Мы - истребители

Старый, но крепкий

Крынов Макс
1. Культивация без насилия
Фантастика:
рпг
уся
попаданцы
5.00
рейтинг книги
Старый, но крепкий

Курсант: Назад в СССР 7

Дамиров Рафаэль
7. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: Назад в СССР 7

Страж Кодекса. Книга III

Романов Илья Николаевич
3. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Страж Кодекса. Книга III

Темная сторона. Том 1

Лисина Александра
9. Гибрид
Фантастика:
технофэнтези
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Темная сторона. Том 1

Печать Пожирателя 3

Соломенный Илья
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Печать Пожирателя 3

Как я строил магическую империю 11

Зубов Константин
11. Как я строил магическую империю
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Как я строил магическую империю 11

Кодекс Крови. Книга ХVIII

Борзых М.
18. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVIII

На границе империй. Том 9. Часть 4

INDIGO
17. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 4

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

Лекарь Империи 7

Карелин Сергей Витальевич
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Лекарь Империи 7

Я царь. Книга XXVIII

Дрейк Сириус
28. Дорогой барон!
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Я царь. Книга XXVIII

Локки 11. Потомок бога

Решетов Евгений Валерьевич
11. Локки
Фантастика:
героическая фантастика
боевая фантастика
фэнтези
юмористическое фэнтези
5.00
рейтинг книги
Локки 11. Потомок бога

Телохранитель Генсека. Том 4

Алмазный Петр
4. Медведев
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Телохранитель Генсека. Том 4