Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 127

Файл №1077331 Саммерфилд - Программирование на Python 3 (Саммерфилд - Программирование на Python 3) 127 страницаСаммерфилд - Программирование на Python 3 (1077331) страница 1272018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 127)

В случае наследования мы можем переопределять методы наследуемого класса, но когда в этом нет необходимости, мы можем просто использовать прием композиции, как сделано в данном примере. Визуальное представление приложения создается за счет создания переменных экземпляра, содержащих виджеты, которые помещаются внутрь виджета 1к1пте г. Е газе, как будет показано чуть ниже. Нам необходимо сохранить следующие данные: ссылку на родительский объект (приложение), имя текущего файла с закладками, флаг наличия изменений (если имеет значение Т гсе, это свидетельствует о том, что в данных имеются изменения, которые не были сохранены на диск) и сами закладки — словарь, ключами которого служат имена закладок, а значениями — адреса ПВВ.

Чтобы создать полосу меню, необходимо создать объект тКтптег. Мело, родителем которого является объект-родитель окна, и сообщить родителю, что у него имеется меню. (Может показаться странным, что полоса меню является пунктом меню, но библиотека Т)с прошла очень длинный путь развития, и в ней еще остались некоторые пережитки прошлого.) Полосы меню, создаваемые таким способом, не требуют специального размещения — библиотека Т)с сделает это самостоятельно.

Гт)енепс = тх!птег.Мело(аепоЬаг) Гог 1аЬе1, соааапз, зпогтсот техт, звогтсот ш ( Программы с глазным окном 565 ("йеи...", ве1(. ТТ1ейеи, "С!г1+й", "<Сопгго1-и>"), ("Ореп...", ве!Т.Т!1едреп, "С!г1+О", "<Сопгго1-о>"), ("даче", ве1(.г!1едаче, "с!<1ч8", "<сопгго1-в>"), (йопе, йопе, йопе, попе), ("Оо!!", ве1г.т!1еОо>1, "сгг1ч0", "<соп!го1-с>")); !Т 1аое1 Тв йопе; Г!1ейепо.асс верагагог() е1ве. Т!1ейепо.асс соааапс( 1аое1=1аЬе1, опсег1>ее=О, соввапо=соааапо, ассе1егагог=вьог!со! !ех!) ве1(.рагеп!.ыпо(вьог!счг, соааапо) аепчоаг.асс савсасе(1аое1="РТ1е", аепо=(!!ейепч, чпсег1>пе=д) Таким способом создаются все полосы меню. Сначала создается объект тйап!ег, йепо, который является дочерним по отношению к полосе меню, а затем в меню добавляются команды и разделители. (Обратите внимание, что акселератором в терминологии библиотеки Т)< называется горячая комбинация клавиш и что в параметре ассе1е<а(о г задается текст, обозначающий комбинацию клавиш, а вовсе не привязку клавиш.) Параметр опзег1!пе определяет, какой символ должен выводиться с подчеркиванием; в данном случае с подчеркиванием будут выводиться первые символы всех пунктов меню, и они же будут играть роль акселераторов.

При добавлении пункта меню (названного командой) мы также определяем горячую комбинацию клавиш, привязывая ее к той же команде, которая будет выполняться при выборе соответствующего пункта меню. В самом конце меню добавляется в полосу меню вызовом метода аОС савсаде().

Мы опустили определение меню Еб(1, так как программный код, создающий его, по своей структуре идентичен программному коду, создающему меню Гйе. !газе = !к>пгег.ргаае(ве1(.рагеп!) ве1(.гоо1ьаг !задев = () !ос!Ьаг = гй!и!ег.ргаае((газе) Гог гааце, созаапс !и ( ("!задев/Т!1епеи.д>Т", ве1а.т!1ейеи), ("!задев/Т!1еореп,д!Т", ве1(.Г>1едреп), ("!задев/Г!1еваче.д>Г', ве1(.Г!1едаче), ("!задев/ес!!асс.ц!Т, ве!Г.ес!ЬАОО), ( !задев/ео!!еоТ!.ОТГ, ве!т.ео!!ео!!), ("!задев/ео!!Ье1е!е,д!г", ве1(.ес>!Ое1е!е), ("Таацев/ео>!впоииеьраце.ц!г", ве1(.ео!18поийеьраде)); !ваде = ов.ра!Ь.)сап(оз.ра!Ь.О1гпаае( т!1е ), лаце) !гу: Таа9е = !кап!а<.Рпого1ааце(т!1е=Тааце) ве1(.!ЬЬ1оаг лацез.аррепе(!заде) ьо!!оп = !к!пгег.Вомоп(!оо1ьаг, лаце=>ааце, соааапо=соааапо) ьо!!Ьп.цг!Ь(гои=с, со1оап=1еп(зе1(.!Ьо1ьаг !задев) -1) ехсер! !к!пгег.ТЬ1Еггог ав егг: $66 Глава 1Э.

Введение в программирование графического интерфейса рггпг(егг) ССС1ЬаГ,Отв(Грамс, Со!Пав=О, СС1ОВПВраП=2, ВГ1СКутК(ПГЕГ.ВН) Затем создается рабочее пространство„в котором будут размещаться все виджеты окна. Затем создается еще одна область, гоо1Ьа г, содержащая горизонтальную полосу с кнопками с изображениями вместо текстовых надписей, которые будут играть роль инструментальных кнопок. Все кнопки располагаются друг за другом в ячейках сетки, содержащей одну строку и столько столбцов, сколько требуется кнопок. В конце пространство с панелью инструментов помещается в первую строку сетки рабочего пространства окна, с выравниванием по северо-западу, благодаря чему панель всегда будет находиться в верхнем левом углу окна.

(Библиотека Т)с автоматически помещает полосу меню выше всех виджетов окна.) Схема расположения виджетов в главном окне показана на рис. 13.6, где полоса меню, размещаемая самой библиотекой 'Пс, выделена белым цветом, а виджеты, размещаемые нами, — серым. Когда изображение добавляется в кнопку, оно добавляется как слабая ссылка, поэтому сразу после выхода из области видимости эти изображения будут запланированы к утилизации. Нам следует избежать этого эффекта, потому что нам необходимо, чтобы изображения оставались на кнопках после выхода из метода инициализации, поэтому мы создаем переменную экземпляра ве11,(оо1Ьаг (азцез, которая будет хранить ссылки на изображения, предохраняя их от исчезновения на протяжении всего времени жизни программы.

По умолчанию библиотека Т)с имеет возможность читать файлы изображений только определенных форматов, поэтому мы вынуждены использовать изображения в формате .у(Г.' Если какой-то файл с изображением не будет найден, будет возбуждено исключение (кгпгег.ТО1- Еггсг, которое необходимо перехватить и обработать, чтобы избежать завершения программы из-за нехватки какого-нибудь изображения. Рис. 13,б. Схема расположения виджетсв в главном окне програмлгм Ввоптагвг Если для библиотеки ТЬ установлено расширение Руьйоп 1пий(вб 1лбгагу, появляется возможность использовать все современные форматы графических изображений. Подробности можно найти на сайте ипвгвругпспигаге.сот/ргодисгг/рд/. Программы с главным окном 567 Обратите внимание, что не все действия, предусматриваемые системой меню, мы сделали доступными в виде кнопок панели инструментов— это распространенная практика. вого11Ьаг = !К!п!ег, ЗсгоПЬаг(!гаво, ог!оп!=!Кгп!ег.уЕВТ1САК) ва1Г.

11в!Вох = !К!пгаг. Е!в!Ьах( !газе, увсго11соввапо=всго11ьаг.ве!) ва1г. 1!вгВох,цг!о(гав=), со1авп=О, в!!скукткгпгаг.взел) ве1г. 1!в!Вах.гасов вв!() вого11ьаг( "совпала" ] = ве1!. 1!в!Вох, ух!ав вого11ьаг.цыа(гав=1, оо1авп=1, вг!скуктк!и!ег.из) ве1п в!а!авьаг = гк!и!аг.саьа1((газе, !ах!к'Веаау...

апопог=!к!и!ег.й) вв1П в!агавЬаг.а(гег(5000, ве1П о1еагЗ!а!ЬвВаг) ве1П в!агавоаг,дг!О(гав=2, со1авп=О, со1авпврап=2, в!!оКу=!К!псег.ЕИ) (газа.цг!О(гав=О, со1авп=ц, в!!скукткап!ег.кзей) Центральную область окна (область между панелью инструментов и строкой состояния) занимает виджет списка и ассоциированная с ним полоса прокрутки. Виджет списка размещается с выравниванием по всем направлениям, а полоса прокрутки — только с выравниванием по северу и югу (погФ)у-вои!)а, то есть вертикально). Оба виджета добавляются в сетку центральной области окна бок о бок.

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

Метод а(!ег() запускает таймер однократного срабатывания (таймер, который срабатывает всего один раз через указанный интервал времени). В первом аргументе методу передается интервал времени в миллисекундах, а во втором аргументе— функция или метод, который должен быть вызван по истечении указанного времени. Это означает, что сразу после запуска программы, в течение пяти секунд, в строке состояния будет отображаться текст «Везиру... «, после чего строка состояния будет очищена.

Строка состояния размещается в самой последней строке, с выравниванием с запада на восток (хвев(-еав1, горизонтально). В самом конце в окно добавляется сама рабочая область. На этом мы завершили создание главного окна и размещение виджетов в нем, но при такой реализации все виджеты по умолчанию будут иметь фикси- 568 Глава 13. Введение а программирование графического интерфейса рованный размер и изменение размеров окна не будет приводить к изменениям размеров виджетов. Следующий фрагмент программного кода решает эту проблему и завершает метод инициализации.

(газе.со1ошпсопт!цоге(0, ые!цж=999) (газе,со1ошпсоптвциге(1, нетцы=!) !газе.гоысопттцогв(0, ые!цШ=Т) (газе.гонсопттцогв(1, ыетцж=999) !газе.гоысопттдоге(2, не!ды=1) ытпооы = ве1(.рагеп!.ытпто тор1вхв1() ывпсоы.со1пшпсопттцоге(0, ыетдог=)) и!попы,гоысопттцоге(0, на!дат=т) вв1( рагепт.цеошетгу("(0)х(1)+(2)ш(3)".Тогшат(400, 500, О, 50)) ве1(.рагепт.т!11е("Воокшагкв - дппашео") Методы со1ошпсопт!доге() и гонора(!доге() позволяют определять вес столбцов и строк сетки. Сначала определяется вес для сетки рабочей области окна, первому столбцу и второй строке (где находится виджет списка) придается максимальный вес, поэтому при изменении размеров рабочей области весь избыток пространства будет отдан виджету списка.

Характеристики

Тип файла
DJVU-файл
Размер
6,88 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее