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

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

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

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

Виджет ассса1АасипсЕаЬе1 также имеет ассоциированную переменную, благодаря этому позднее мы легко можем изменять отображаемый им текст. Кроме того, мы придали этой метке вид утопленного поля, чтобы визуально он гармонировал с движками. рг!пс!ра1саса1.дыз(гак=с. сс1пзп=д, расх=2, разу=2, аыску=!к!и!ег и) рг!пс!ра15са1а.дгы(гак=с, сс1напыц раах=2, разу=2, а!1ску=ск!и!аг.ЕИ) гага!аЬе1.дг!С(гак=1, СС1ппп=с, раах=2, раау=2, ас!Оку=!К!п!аг.и) га!адса1е.дг!0(гоп=1, сс1пап=1, рвах=2, раау=2, ас!сКуснкшсег.

ЕИ) уеагасаае1 дг!0(гак=2, сс1ипп=д, рапх=2, рапу=2, а!!СКустКьлсЕГ.И) уеагааса1а.дг!6(гак=2, сс1иап=1, рапх=2, рапу=2, аС!сКуктк!пгаг.ЕИ) авоппгсаае1.дг!С(гак=а, со1иип=д, расх=2, разу=2, аг!сКу=!К!псег.и) асюа1АпсппссаЬа1,дггп(гси=з, сс!ива=1, раах=2, рапу=2, аг!Ькукгк1псаг,ЕИ) После создания виджетов их нужно разместить. Мы будем использовать схему размещения типа «сетка», как показано на рис. 13.3.

Все виджеты поддерживают метод дг!г)() (и некоторые другие методы схемы размещения, такие как расК()). Вызовом метода дг!О() виджет 560 Глава 13. Введение в программирование графического интерфейса Рис. 13 3. Схема размещения виджетов а окне программы 1агегез1 помещается внутрь родительского виджета в ячейку сетки с указанным номером строки и столбца.

Имеется возможность заставить виджет занять несколько столбцов и несколько строк, используя дополнительные именованные аргументы (гонврап и со1оапврэп), а также имеется возможность добавить отступы вокруг виджета — с помощью именованных аргументов раск (отступы слева и справа) и расу (отступы сверху и снизу), определяя в них величину отступов в пикселях.

Если виджет занимает больше места, чем ему требуется, с помощью аргумента в11сКу можно указать, что он должен делать со свободным пространством; если аргумент не задан, виджет будет занимать середину выделенного пространства. Для всех меток в первом столбце в аргументе вт!сКу передается значение 1Ктптег. И(мевС вЂ” выравнивание по западному, то есть по левому краю), а для всех виджетов в правом столбце — значение СКтп1ег. ЕИ (еавС-тэевС вЂ” с востока на запад, то есть по ширине), что заставляет их растягиваться по всей ширине доступного пространства. Все виджеты сохраняются в локальных переменных, но они не будут утилизированы сборщиком мусора после выхода из метода инициализации благодаря отношениям родитель-потомок, потому что для всех виджетов определен родительский виджет — главное окно.

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

рг1по1ра15оа1е. Гасов вв1() ве!Г.орзв1еШ() рагепт.о!по("<А11-р>", 1аэьоа ° тцпоге. рг(по1ра1вса1в.гасов вот()) рвгеп1.ь(по("<А11-г>", 1аэьоа *тцпоге: га1еЯса1е.гасов ве1()) рвгепт.ь(по("<А11-у>", 1вэьов ° тцпоге: уввгвьсв1е.гасив вв1()) рагеп1.Ь(пз("<Соптго1-ц>", ве!т.цш1) рагепт.о!пп("<Евсвре>", ве11.ци11) В конце метода инициализации фокус ввода передается виджету рыпс!рз15са1е, чтобы сразу после запуска программы пользователь мог Программы в виде диалога Бб! установить начальную сумму вклада. Затем вызывается метод зе1(. вр- Сзге0!(), вычисляющий конечную общую сумму с учетом процентов. Затем выполняются привязки горячих клавиш. (К сожалению, термин привязка имеет три совершенно разных значения — привязка переменной, когда имя, то есть ссылка на объект, связывается с объектом; привязка горячей клавиши, когда событие нажатия или отпускания клавиши связывается с функцией или методом, вызываемым при появлении этого события; и привязка для библиотеки — это промежуточный программный код, обеспечивающий доступность библиотеки, написанной на другом языке программирования, в программах на языке РуФ)топ, посредством использования модулей РуФЬоп.) Привязка горячих клавиш особенно важна для пользователей с ограниченными возможностями, испытывающих сложности или вообще не способных использовать мышь, а также для тех, кто в совершенстве владеет клавиатурой и старается не пользоваться мышью, так как в их случае использование мыши замедляет темп работы.

Первые три привязки горячих клавиш используются для передачи фокуса ввода виджетам движков. Например, для виджета рг!лсдрз1СаЬе1 устанавливается отображаемый текст Рылсгра1 $:, в котором нулевой символ выводится с подчеркиванием, поэтому текст метки будет выглядеть, как Рплс!ра! э:, и первая привязка горячей клавиши переместит фокус ввода в виджет рг!лс! рз13са1е, когда пользователь нажмет комбинацию клавиш Ай+Р. То же относится и к другим двум привязкам.

Обратите внимание, что в привязках мы не указываем метод госсе эег() непосредственно, потому что при вызове функции или метода по событию в первом аргументе им передается само событие, которое нам не нужно. По этой причине мы используем лямбда-функции, которые принимают, но игнорируют объекты событий и вызывают методы без нежелательного аргумента.

Мы также создали две дополнительные горячие комбинации, то есть комбинации клавиш, которые вызывают определенное действие. Мы настроили комбинации клавиш С!г!+О и Езс, привязав их к методу зе1(. Сшг(), который вызывает завершение программы. Имеется возможность привязывать горячие клавиши непосредственно к самим виджетам, но мы предпочли выполнить все привязки в родительском виджете (в приложении), поэтому они будут действовать независимо от того, где находится фокус ввода. Метод Ьзлб() из библиотеки Т)г может использоваться для привязки нажатий клавиш и щелчков мышью„а также для привязки программных событий. Специальные клавиши, такие как Сбй и Езс, в библиотеке Т)с имеют собственные имена (Солгго1 и Евсаре)„а символьным клавишам соответствуют имена, состоящие из самих символов. Комбинации клавиш создаются посредством помещения имен, составляющих комбинацию клавиш, разделенных символом дефиса, в угловые скобки.

562 Глаэа 1Э. Введение з программирование графического интерфейса Создав и разместив виджеты и настроив горячие комбинации клавиш, мы определили основное поведение приложения. Теперь рассмотрим методы, отвечающие за реакцию на действия пользователя и дополняющие поведение приложения. се! ороатеОТ(ве1(, *!дпоге): ааоопТ = ве1(.рыпстра1.цет() * ( (1 ь (ве1(.гата.цет() / 100.0)) ** ве1т.уеагв.цет()) ве1т.ааоопт.вет("(О:.2()".Тогеат(ааоопт)) Этот метод вызывается всякий раз, когда пользователь изменяет сумму вклада, процент или интервал времени, поскольку этот метод связан с каждым из движков. Бее, что он делает, — извлекает значения движков из ассоциированных переменных, выполняет вычисление процентов и записывает результат (в виде строки) в переменной, ассоциированной с меткой, представляющей окончательную сумму вклада.

Благодаря этому метка всегда отображает актуальное значение. Сет цгДТ(ве1(, еоептт Иове): ве1т.рагепт.оевтгоу() Этот метод вызывается, когда пользователь завершает работу с программой (нажатием комбинации клавиш ЕТТ(+О или Евс, или щелчком мыши на кнопке закрытия окна). Поскольку в программе нет данных, которые требовалось бы сохранить, мы просто сообщаем родительскому виджету (который представляет само приложение), что он должен уничтожить себя. Родительский виджет уничтожит все дочерние виджеты— все окна, которые в свою очередь уничтожат все свои дочерние виджеты, благодаря чему приложение корректно завершит свою работу.

арр1!саттоп = ТК1птег.ТК() рать = ов.рать.)отп(ов.рать.стгпаае( ТТ1е ), "шацев/") тт вув.р1аттога.втагтви!ТЬ("и!п"): !сап = раТЬ е "тптегевт.тсо" е1ве Тсоп = "э" е рать а "1птагевт.кьа" арр1!саТ1оп.!сопштеар(троп) арр!тсаТ!оп.т!Т1е("1птегевт") тпсон = иатпмпоон(арр11сатюп) арр1тсат!оп.

рготосо1("ии Оетете и1ИООи", и!пеон оо!т) арр11саттоп эа!п1оор() За определением класса главного (и в данном случае — единственного) окна следует программный код, который запускает программу. Сначала создается объект, представляющий само приложение. Чтобы снабдить программу ярлыком, в операционной системе т)(т!пт)оуув используется файл .!со, имя которого (и полный путь) передается методу !сосо!Тзар(). Но в системах 1)Х1Х следует передавать файл с растровым изображением (то есть монохромное изображение). Б библиотеке Т)т имеется несколько встроенных растровых изображений, поэтому, что- 564 Глава 13.

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

Пользовательский интерфейс целиком создается в методе инициализации главного окна, который мы рассмотрим, разбив его на пять частей, так как он достаточно длинный. с1двз Матпйтпзокн Оет тптт (ве1Г, рагепт): ве1т.рагвпт = рагепт ве1Г,Г11епаее = Мопе ве1т.зтгту = Ра1ве ве1г.пата = 1) еепоьаг = тктптег.мепо(зе1г.рагепт) ве1т.рагепт("аепо") = аепоЬаг В этом примере, вместо того чтобы наследовать стандартный виджет, как это было сделано в предыдущем примере, мы создадим обычный класс.

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

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

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

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