/
Text
Создание
настольных
Ру1Ьоп
приложений
с графическим интерфейсом
пользователя
Тимур Машнин
Создание
настольных
Ру1Ьоп
приложений
с графическим интерфейсом
пользователя
Тимур Машнин
Создание настольных РуПюп приложений
с графическим интерфейсом пользователя
Исходный код
Исходный код к примерам можно скачать по
Ьйр8://§1ШиЬ.сот/поу(8/ру±оп-§иЕ
адресу
Введение
&
ТесН ЗоЮИопэ
Создание настольных Ру1йоп
приложений с 6111
Введение
Де факто Руйюп является наиболее популярным объектно-
ориентированным языком программирования, который используется для
веб-разработки и анализа больших данных.
И конечно, РуНюп - это интерактивный язык программирования,
который предоставляет широкий спектр возможностей для создания
графического интерфейса пользователя.
С ) К|УегЬапк Со1При11Пд Меууз 5о(1\уагет 01Нег 81иЯт Зиррог!’ Соттегсю!^ АЬои!
\Л/Ка115 РуО1?
РуО1 15 а зе! о! Ру1Ноп у2 апс! уЗ ЫпсЗюдз к)г ТНе 01 Сотрапу'з 01 аррНсаИоп Ггатеиуогк апс! гипз оп а11 р!а1(огтз зиррог!ес! Ьу 01
тс1исПпд \Мпс1о\л/5, тасОЗ, 1_!пих, ЮЗ апс! Апс!го1с1. РуО15 зиррог!з 01 у5. РуО14 зиррог15 01 у4 апс! ууИ1 Ьи!1с! адатз! 01 у5. ТНе Ыпсйпдз
аге 1тр1етеп1ес! аз а зе! о{ Ру1Ьоп тосШез апс! соп!а!п оуег 1,000 сЗаззез.
РуО14 апс! 01 у4 аге по 1опдег зиррог1ес! апд по пеии геказез \лл11 Ье таек. РуО15 апс! 01 у5 аге з!гопд1у гесоттепс!ес! 1ог а11 пе\л/
сЗеуе1ортеп1.
Ысепзе
РуО115 с!иа1 Нсепзес! оп а11 зирроПес! р1а1(отпз ипскг 1Ие ОМС СР1_ уЗ апс! 1Не Р|уегЬапк Соттегаа! Ысепзе. ОпНке 01, РуО115 по!
ауаИаЫе ипскПНе 1_СРС Уои сап ригсИазе 1Ье соттегаа! уегзюп о! РуО1 Неге. Моге !пТогта11оп аЬои! 1|сепз!пд сап Ье 1оипс1 т 1Ие
Ысепзе РАО.
РуО1 с!оез по! 1пс1иск а сору о! 01. Уои тиз! оЫат а соггесИу Нсепзес! сору о! 01 уоигзеИ. Номеуег, Ыпагу ууНее1з о? 1Не СР1_ уегзюп о(
РуО15 аге ргоу|с!ес! апс! 1Незе 1пс1ис!е а сору о! 1Не ЮРЬ уегзюп оР 01.
Ру ОТ СотропепТз
А с!езспр1юп оИНе сотропеп!з о! РуО15 сап Ье Тоипс! !п 1Ие РуО15 РеГегепсе Си!с1е.
А скзспрИоп оПНе сотропепк о! РуО14 сап Ье Гоипс! 1п 1Не РуО14 Кекгепсе 6и!с1е.
Ру01 - это библиотека графического фреймворка 01 для языка
программирования РуШоп.
А 01 кью-ти - это кроссплатформенный инструментарий для разработки
программного обеспечения на языке программирования С++, такого как
графические интерфейсы, работа с сетью, базами данных и ХМЬ.
РуО1 работает на всех платформах, поддерживаемых 01 - Ыпих и другие
ЬГМХ-подобные ОС, Мас 08 и \Утбоу/з.
И существуют 2 версии: Ру015, поддерживающий 01 5, и Ру014,
поддерживающий 014.
РуО1 практически полностью реализует возможности 01, включая набор
виджетов графического интерфейса, доступ к базам данных с помощью
80Ь, парсер ХМЬ и так далее.
Ру01 также включает в себя 01 Оез1§пег— дизайнер графического
интерфейса пользователя с генерацией Руйюп кода из файлов, созданных в
01 Безщпег.
=1 Рго)ес(с1е8спрйоп
"Э Кеказе Ы&Гогу
Д 0омп1оасШе$
Рго]ес( Упкв
•Л Нотера^е
О Оомпкай
$СаЙ $ЙС5
Укм 5ГаП5Г1С5 (ог ГЫз рго]есГ VI а
1Лэгагк51оЕ?, о г Ьу из(п§ оигрнЫк
баГазеС оп 6эо%1е В>§риегу &
Ру5|с1е2
1п1гойисНоп
Ру51с1е215 (Ке о(йааI РуСИоп той и к (гот ГИе ф (ог РуСНоп ргс]ес(, мйкК ргоиИез ассезз Ю С1пе сотркк ф 5.12+
(гатемогк.
ТЬе рс Тог руГИоп рго]ес11з йеуекрей1п гЬе ореп, мкН а1! (асПШез уои'д ехресГ (гот апу гпоскгп 058 рго]есСзисй
аз аН сойе т а ^кгерозкогу апй ап орепйезщп ргосезз. УУе мекотеапу сопГпЬиГюп соп(огт1п^ГоГНе21
СопЕпЬийоп Аегеетеп*.
1п$и11а1юп
51псе1:Ье геказе оИЬе ТесИнка! Ргеу1еуу к Ь розз|Ые (о 1пзГа!1 VIа р1р , Ьо1Ь (гот зегуегз апс! РуРк
ртр 1П5^а11 Ру51йе2
Ру8к1е - это также библиотека графического фреймворка Ос для языка
программирования Руйюп.
Основное отличие Ру81бе от РуОС - это лицензии под которыми
распространяются эти две обёртки
РуСНБ распространяется под СРЬ и коммерческой лицензией.
А Ру8Ие2 распространяется как ОС под СРЬ, ЬСРЬ и коммерческой
лицензией.
То есть если вы пишите открытое ПО - можно использовать как РуОс5,
так и Ру81с1е2.
Но если вы пишите закрытое/коммерческое ПО - бесплатно можно
использовать только Ру81бе2, а для использования РуО(5 потребуется
покупать коммерческую лицензию.
•• Ру11юп » ЕпдНэк)
2] | 3.9.1гс1 Я ОосиптепГайоп » ТЬе РуШоп 5(апс1агс1 иЬгагу » СгарП1са1 Озег Небасез юПЬ Тк »
ргеуюие | пех11 гтюсМез [ «пбех
[смскееагсп [[ 6о ]|
ТаЫе оГ Соп1еп(5
1Ып1ег — РуИтап 1п1ег(асв
(о Тс1Лк
• Тк!п1ег Мос1и1е5
• Тк1п(ег 1_Ие Ргеэегуег
• Ною То Кее ТЫз
8ес1юп
• А 81гпр1е Не11о
УУогИ Ргодгат
- А (Уегу) Сшск Ьоок а!
Тс!Лк
Марр, ид Вазю Тк 1п1о
ТИгйег
Ною Тк апс! Тк1п1ег аге
Яе1а1ей
Нап(]у РеГвгепсе
- ЗеЦ|пдОр1юпз
• ТКеРаскег
- Раскег ОрТюга
Со и р кпд УУнЗде!
УапаЫез
УктпУег — Руйлоп 1п1егТасе (о Тс1/Тк
Зоигсе собе: 1_1ЬЛк1п(ег/________тК_____.ру
ТОе ±к!п±ег раскаде (“Тк 1п1егГасе”) 1з №е зГапбагб Ру(Поп 1п1егТасе Ю (Не Тк <Э1Л (оо1Кй. Во11т Тк апР
ткхп^ег аге ауаЛаЫе оп тоз( Мгнх р1а(Тогтз. аз \д/е11 аз оп зузГетз. (Тк ИзеН 1з по( раП оГ РуИлоп; К
15 та1п1а!пес1 а! Ас(п/е8(а(е.)
Кипптд руСКоп -т -Ькхп-Ьег Ггот 1Ре соттанс! Нпе з^оиМ ореп а бетопзиайпд а з[тр1е Тк
1п1егТасе, 1еН1пд уои кпсм Плат 1к1гЯ:ег 13 ргореПу 1пз1а11еб оп уоиг зуз1епп, апб а1зо зПоуутд мПа! уегзюп оГ
Тс1Як 181пз1а11еск зо уои сап геаб (Ре Тс1/Тк ОоситепГайоп зресгПс (о (ПаГ уегзюп.
5ее а1зо: Тк1п(ег боситепййоп:
РуЙюп Тк1п(ег Резоигсез
ТРе РуИтоп Тк1п(ег Тор1с Си1Ре ргсмбез а дгеаГ 0еа1 оТ ИТогтайоп оп из1пд Тк Тгот РуГМоп апб Нпкз (о
о(Ъег зоигсез оГ 1пГогта(гоп оп Тк.
ТктСег - это самая популярная библиотека для создания графического
интерфейса пользователя или настольных приложений.
ТктСег - это комбинация стандартного графического интерфейса
пользователя Тк и РуСНоп.
А Тк - это кроссплатформенная библиотека графического интерфейса с
открытым исходным кодом.
ТктСег входит в стандартную библиотеку Руйюп.
И ТктСег - это свободное программное обеспечение, распространяемое
под РуШоп-лицензией.
ТКийег поставляется с хорошей документацией, что является основным
ее достоинством.
И получить ответы на свои вопросы здесь легко, так как у Ткпйег тысячи
пользователей, потому что эта библиотека используется в течение очень
долгого времени.
КиЫкЧ сиЬе$
р| апд К|уу
НоШе ССУ/
Оом/п1оас1 баИегу Не1р Оосиплеп1а1юп ОолаТе АЬоиТ В1о§
С1озе
уепюа!
ногате СУ/
Ногате ССУ/
Ореп
С1озе
О 18 ореп ед ГюпгопТа!
РоТаТе СУ/
НоТаТе ССУ/
Ореп
С1озе
ТаЫе !з гакзес!
КК/у- Ореп зоигсе РугНоп НЬгагу Гог гар1с! с1е7е1ортепГ оГаррПсайопз
К1уу - это бесплатная среда РугЬоп с открытым исходным кодом для
разработки кросс-платформенных приложений с поддержкой мультитач с
пользовательским интерфейсом.
Ктуу создана поверх ОрепСЬ и для создания пользовательских
интерфейсов дает возможность один раз написать код и запустить его на
разных платформах \Утс1о\У5, МасОЗХ, Ыппх, Апс1го1с1,108 и КазрЪепу.
4Й ТЬе 601 ТооТкТТ Тог РуТЬоп
АЬоиТ - Не«з Ооу|/п1оас15 ОоситепТайоп - Зиррог! -г Оеуе1ореге - В од
\Л/е1соте 1о \л/хРу1Ноп!
ТТ118 у/еЬеКе (з а11 аЬоиТ уухРуТНоп, ТЬе сго53-р1аТТогт С1И Тоо1кй Тог (Не РуТТюп
1апдиаде. \Л/ИН дахРуСНоп зоШаге йеуе1орегз сап сгеаСе Тги1у паТме изег
1п1егТасез Тог 1Ье1г РуТТюп аррНсаТюпэ, ТЬаТ гип мТ11 НИ1е ог по тосИТюаТюпз оп
М1п(1оуу8, Масе апс! Ыпих ог оТНег ип!х-||ке зузТетз.
1_еагп тоге
\УхРу[Ьоп - это обёртка библиотеки кроссплатформенного графического
интерфейса пользователя \ух\Ук1§еТ5, написанной на языке
программирования С++.
Это еще одна из альтернатив Ткийег, которая поставляется вместе с
РуТЬоп.
И ХУхРуТНоп реализована в виде модуля расширения РуТНоп.
)Оеаг
РуБкП
(ТНб ИЬгагу 15 ауаПаЫе ипс1ег а {гее апб регт1551Уе Псепзе Ьо\л/еуегг К уои Еп|оу Оеаг Ру(3и1 р!еазе соп5к1ег Ьесогтипд а 5ропзог)
руПтоп 3.6 | 3.7 | 3.8 | 3.9 I рур! у0.6.403 I боууп1оас15 364к
ЕгпЬе<к1ес1 ВиИ<1 раззтд IС 1 зкаПс-апаГузга цазыпд I ЬиНс! репсКпд
Оеаг Руби 15 а 51тр[е 1о изе (Ьи1 ромегйЛ) РуЖоп 01Л (гатемогк. Оеаг Руби!15 МОТ а лл/гарр|пд о( Оеаг
1тСи1 1п погта! 5еп5е. И 15 а КЬгагу Ьи।Н ууйИ Оеаг 1т0и1 шНгсН 51ти1а1:е5 а 1гаск1зопа1 ге^атес! плоде С1Л
(э5 орро5ед 1о Оеаг 1тСи?5 [ттед!а1е плоде рагад|дт).
Веаг
РуС1Л - это простая и легкая библиотека графического интерфейса
пользователя, так как она полностью связана с языком программирования
Руйюп.
Оеаг РуСш предоставляет оболочку библиотеки С++ Оеаг 1тОш, которая
имитирует традиционный графический интерфейс.
Это кроссплатформенная среда приложений с графическим интерфейсом
пользователя, которая отображает естественный графический интерфейс
платформы.
Здесь мы перечислили наиболее широко используемые и лучшие
доступные фреймворки графического пользовательского интерфейса
Руйюп.
И вы можете выбрать наиболее подходящую вам среду для разработки
графического интерфейса Руйюп.
Далее мы более подробно разберем каждую библиотеку.
Библиотека РуСН
ТвсП гоШНопг
Создание настольных Ру11топ
приложений с 6111
Библиотека Ру СК
РуСН - это библиотека, которая позволяет использовать библиотеку
графического интерфейса в Руйюп.
Сама библиотека С^1: написана на С ++.
Самая последняя версия библиотеки - это РуС^СБ, и она поддерживает
последнюю версию
РутНоп
Р5Е
□ОСБ
рур|
-1оЬ$
Соттигнгу
е* руСНоп
5еагсГ«
СО
ЗоЬа1гге
АЬои!
Оошгйоайв
ОоситепГабоп
Соглтипку Зиссезз ЗГопез Мегоз ЕуепТз
РуИпоп 3.6.0
Пе1еазе Ва1е: Пес. 23, 2016
Рус Коп 3.6.0и/аз сЬе 1п1г1а1 Теагиге ге1еаае с! РусЬоп 3.6.
Для работы с библиотекой РуС^ТБ, установим питон 3.6.
ЗЕТ
ВЯДГМЬ
Инструменты Решения Языки Компания Поддержка Магазин О.
РуСЬагт
Что нового Возможности С чего начать Купить
Скачать
РС
РуСЬагт
ЮЕ для
профессиональной
разработки
Для разработки приложений питон с графическим интерфейсом
пользователя мы будем пользоваться средой разработки
РуСНагт
& №и/ РгсуесГ
Риге РуЖоп
ЕЗ Орпдо
С Пазк
О 6оод1е Арр Епд1пе
< л РугатИ
Ё2 №Ь2Ру
= ЗаепНйс
О Апди1агСЫ
О Апди1ас15
□ ВооШгар
© НТМ13 ВоПегр1аЕе
КеасЕ Арр
РеасЕ МаЬуе
X
ХосаЕюп: С:\изег5\и5ег\РусИагтРго]еси\РуО1:Еха тр1е
▼ РгсуесЕ 1пЕегргеЕег: Меч? У|г1иа1епу егмгоптепЕ
О Мету егмгоптепЕ из1пд ’1 У|гЕиа1епу ▼
|_осаЕ1 о п: С :\115 егз\и д ег\ РусЬ агт Р го] ес1$\Ру 01 Еха т р 1е\у е п V
Вазе юНегргеГес С:\115егя\и5ег\АррОаГа\Еоса1\Ргодгатз\Ру111оп\Ру1Ноп36\руГЪоп.ехе ▼
! 1пЬегИ д1оЬа1 зйе-раскадез
Маке ауаПаЫе Ео а11 рго]ес!з
Ех13Йпд 1пЕегрге!ег
1пЕегргеЕег; <Ыо |’пЕегргеЕег>
СгеаЕе
Создадим питон проект. При этом будет автоматически создана
виртуальная среда.
Виртуальная среда - это просто локальный каталог, содержащий
библиотеки для конкретного проекта.
р!р 1П51а11 РуСКБ
Теггтйпа1: 1_оса1 +
Оепу) С:\Изегз\11зег\Рус1пагтРго } ес1з\РуЦ1:5Рго } ес1>р1р 1пз1а1Л Ру(]15
СоПесИпд РуЦ15
Озхпд сасНес! РуЦ15-5.15.2-5.15.2-ср35.ср36.ср37.ср38.ср39-попе-ш1п_атс164.ш11'1 С56.9 МВ)
СоПесИпд Ру()15-З1р<13/> = 12.8
Озхпд сасКес! РуЦ15_з1р-12.8.1-ср38-ср38-и/1п_атс164 .шЫ СбЗ кВ)
1пз1аШпд со!1ес1ес1 раскадез: РуЦ15-з1р, РуЦ±5
Биссезз'ГиНу 1пз1а11ес1 Ру()±5-5.15.2 Ру015-з1р-12.8.1
(\епу) С:\изег5\изег\Рус11агтРго]ес15\Ру()15Рго]ес1>
;= 6: ТО ОО ► 4: Кип В Теитта! Ф Руйтоп Соп5о1е
И для установки библиотеки Ру<Л просто наберите в окне терминала, в
командной строке ртр 1п8(а11 Ру С} 1:5.
в Н1е ЕсШ Ве(асК>г Кщп 1оо1$ УС5 Це1р РуО(5Ргс)₽с1 - дт-ру - РуСЬагт
Ру<115Ргсуес1 дойру
Рго)ес1 ▼ © -г Ф — до! -ру
РуО«5Рг<уес1 С:\05ег5\и5ег\РусЬагтРго]ес1АРу 1
I уепу ПЬгагу гоо!
1пс1ис1е
► и нь
ЗспрГе
рууепухГд
д1л.ру
Тгот Рур-15 .(ЛИп.йдеТЕ 1трог* ()Арр1ТеаТ1оп, ОЬаЬеТ
арр = ЧАррНса11оп([])
ТаЬеТ = ОЬаЬеК ' Не11с ИогТй ! ')
ТаРеТ.5Ьои()
арр.ехес_()
I Ех№гпа1 [Лзтапез
О 5сга(сЬе^ ап4 Соп5.о1е5
Тегт1па1: Ьсса1 +
(уепи) С:\и5ег5\е5ег\РусГ1агтРг'Озес'Г5\Ру(1*5Рг'О}есГ>р1р хпбГйП. РурТБ
СоПесИпд РуЕ}1:5
1)51пд сасРей РуЦ±5^5.15.2-5.15.2-ср35 .срЗб.ср37.ср38.ср39-поге-й±п_атс164 (56.9 МВ)
Со1Лес11пд Ру(}1:5-Е1р<13, >=12.8
11з1пд сасРей РуЦ15_51р-12.8.1-ср38-ср30-и1п_атР64.?1Р1 (63 кВ)
| ЮетНпд соиес^ей раскадез: Рур1:5-$1р, РурГБ
I 5 нее е за Г и Пу 1П51аПей Ру(Л5-5.15.2 РуС]15-51р-12.8.1
(уепу) С;\изег5\и5ег\РусГ1агтРго1ес15\Ру(1*5Рг'озес{>
:= Ё ТОСЮ ► 4: Кип И Тегтйч1 ♦ РуУюп Соп!о1е
Далее в проекте создадим питон файл и наберем в нем код.
(гот 1трог1 ОАррКсаИоп, О.1аЬе1
арр = ОАррНса1юп{[])
1аЬе1 = ф1_аЬе1{'Не11о УУог1с1!')
1аЬе1.5Но\л/()
арр.ехес_()
Сначала мы загружаем РуС^ с помощью оператора импорта.
И из РуС}1:5 виджетов импортируем рАррйсайоп, (}ЕаЪе1.
Класс С^АррНсабоп управляет потоком управления и основными
настройками приложения с графическим интерфейсом.
Виджет (ЗЬаЪе! обеспечивает отображение текста или изображения.
Затем мы создаем (^АррИсайоп с помощью команды:
арр = (^АррПсайоп
Это требование - каждое приложение с графическим интерфейсом
должно иметь ровно один экземпляр рАррйсайоп.
Здесь квадратные скобки представляют аргументы командной строки,
переданные приложению.
Так как наше приложение не использует никаких параметров, мы
оставляем скобки пустыми.
Далее мы создаем простую метку 'Привет, мир!'.
И затем мы говорим Ос показать метку на экране с помощью команды
ЗЙОХУ.
И последний шаг - это передать управление среде Ос и попросить ее
«запустить приложение, пока пользователь не закроет его».
Это делается с помощью команды ехес
Н Ое ЕсЫ Цау|да1е Сос!е ВеГайо! Кцп 1оо1з УСЕ Це1р РуС1(5Ргс)ес1 ди!.ру РуСКагт
Ру015Рго]ес1 и дигру
1ГГ. Ргсуес! ’’’ Ф ч- $ — * дш.ру
& ▼ РуО«5Рг ’ -Ргот РуС1:5 .ЩШ1с1де15 1трог1: ОАррПсаМоп, ОЬаье!
А **
^епу арр = (]Арр11са11оп( [])
1г, 04 СШХ 1аЬе1 = 91.аЬе1(аНеио йогТй!')
5 ► I ' Щ С0РУ * 1аЬе1*5Пои()
1 СйкУ арр.^е-О
гч = Е!папЦмде$ А11+Е7
- диьр‘ ]пзрес( Со^ь..
► К1. ЫегпаН Ве{асГог ►
‘® 0еап Ру1Ноп Согпр|(Щ Н1е5
да а 1о ЕзуогНы ►
Е<Иогта1 Соек Си I+М+ Ь
-Е □
Не11о УУог1с1!
X
Оргипке I тропа СЫ+АК+О
1)е1е(е... 0е1е(е
Тегггнпа(:
(уепу)
Ог1+5ЬНЧ+МО
(► Рип 'дш' гуИЬ Ссщегаде
С; \1 РюН1е диГ
уЩ5Рго;есС>ра.р 1пз1а1Л РуЩ5
Сс1_1есТ1лд ^опсиггепсу Р1адгат Еог 'дин'
Изтгд са« «* ЕсН диГ
5. ср36.ср37.ср38.ср39-гоге-И1п_ал1б64 .щ|11 (56.9 МВ)
СсТТесИпд
из!г|д са<
3 1П51аТД1пд
| Зиссевб’РЛ’
* (уепу) С:\|
== & тссю
С РЕР8:УУ292пс
5(ю^ 1п Ехр1огег
Н1еРа1Н
ЕЯ Орел 1П Теггп1па1
1оса( Н^^огу
О КекисИгот 015к
Со трат УУИК...
Магк 0кге<Логу а5
С1Н+А1НЕ12 рЗЗ-И1п_ап1абА .мЯЛ (63 кВ)
1р, РуЩЭ
> аТ5“51р-12.8.1
уЩ5Рго;есг>[]
>1е
Далее нажмем правой кнопкой мыши на созданном питон файле
выберем команду
пт
и
В результате будет запущено приложение и откроется окно с меткой.
р[р 1П81:а11 Лоз
Тегпт1па1: 1_оса1
Оепу) С:\115ег5\и5ег\РусКагтРгсоес15\Ру(]15Ргсоес1>р1р 1п51аП -ГЬз
СоПесИпд ГЬб
ОошпЪоасИпд ТЬб-0.9.0 Лаг .дг [201 кВ)
1ПИМНИИИНИЩИМИИ1 201 кВ 819 кВ/з
СоПесИпд Ру1п51аПег==3 Л
ОошпЪоасИпд Ру1п51аПег-3 Л Лаг. дн [3.5 МВ)
I I 3.5 МВ 261 кВ/г
;=6: ТОРО ► 4: Кип И Тетлпа! Ф Ру1Ьоп Соп5о1е
Теперь у нас есть приложение с графическим интерфейсом пользователя.
И оно работает на вашем компьютере.
Вопрос - как его передать другим людям, чтобы они тоже могли его
запустить?
Вы можете попросить пользователей вашего приложения установить
Руйюп и Ру СК, а затем предоставить им свой исходный код.
Но это очень неудобно.
Вместо этого нам нужен исполняемый файл, который другие люди могут
запускать в своих системах, ничего не устанавливая.
В Руйюп процесс превращения исходного кода в автономный
исполняемый файл называется замораживанием.
Хотя существует множество библиотек, которые решают эту проблему,
например Ру1п8(а11ег, ру2ехе и так далее, здесь мы будем использовать
библиотеку под названием Г1эб, которая позволяет создавать автономные
исполняемые файлы для приложений РуСН-
Поэтому для начала установим библиотеку Пэз.
6 Ейе ЕйП Уге» Сойе Ве!ас1ог Куп Тоо1& УС^ у^шао^ н, 1р РуО15Ргсуей - т<йп.ру - РуСНагт
РуСН5Рг<уес1 5гс та1П руИтои тд!п.ру
О 5сга1сКез апс] Ссл5о!ез
и дикру - та!п,ру
Ггот ТЬ5_гип11те.арр11сэГ1оп_соп1:ех1 ,Ру(]1:5 хтрог! Арр11саГ1опСопТехГ
^гот Рур^Б-р^ИЦРде^Е хтроН: ЦМаапИЦпйои
хтрог! зуз
5
► 1Т______пате__== '___та1п__' :
аррсТхТ = АррИсаИопСопГехЮ # 1. ТпяГанМаГе АррНсаМопСояГехГ
И1пйои = (]Ма1пШ1пс1ош()
Й1пс1о«. гезхге С25О, 150)
и1пйои.зПои()
ех!1_со(*е = аррсЫ.арр.ехеС-О # 2. Тпуоке аррсЪхЪ.арр.ехес ()
зуз. ех!1(ех11_со0е)
Тегггипак коса! +
(уепу) С:\и5ег5\е5ег\РусГ1аг1пРгс^ес15\РуЦ1:5Рго5е
Арр пате [МуАрр] : рр1ехатр1е
:>ТЬз 51аг1рго1ес1
АР11П0Г [11ееп] : поуЕз
Нас РипсПе 1с1ел11/Г1ег (ед. сот.поукБ.рд1ехатр1е, орИопа!):
I СгеаГей ТМе зге/ ахгесГогу. 1Г уои Кауе Ру1}1:5 1п$1:а1Лес1, уос сап пою
йо:
О УУ1пйо«5 О^епск
==Й’ТСОО ► 4-Кип И ГегтЕпа! Ф РугЬоп Соп5о1е
Далее мы в терминале запускаем команду Г1эз 5[аг1:рго]есС
В результате выполнения которой будет создана папка згс/тат/руйюп/с
файлом тат.ру.
Команда 5(лПрго]ес[ создает необходимую структуру папок для
приложения й)8.
Если мы наберем в терминале команду ГЬз пт, откроется просто пустое
окно.
Теперь, как нам вставить в это окно нашу метку.
Тгот ГЬзгипНте.аррНсаНопсопгех!:. Ру 0.1:5 1трог1 Арр1ка1юпСоп1ех1
Тгот РуСЙ5.О1\Л/1с1ее15 1троП ОМа1п\Мпс1оуу, ОЬаЬе!
Тгот РуОСЗ.ОКоге 1трог1 0$
1тро11 зуз
И____пате____== '__та!п_____
аррсЬй = АррИса11ОпСоп1ех1() #1. 1пз1апИа1е Арр1кайопСоп1ех1:
ш1пс1оуи= ОМа1п\М пс!ош()
\лп п с1 о\л/. зе! \М п с1 оииГП: I е (" Н е 11 о \Л/о И с11")
\ллпс1о\/у.гезке(500, 300)
1аЬе1 = ОЬаЬе1('Не11о \Л/ог1с1Г)
1аЬе1.зе1:АНептеп1:(О1:.АНепСеп1:ег)
\л/1 п с! о V/. зе1Се п! га I \М с1 (I а Ье I)
\лп пдоу/.зНсадО
ехк_сос1е = аррсЪЛ.арр.ехес_() #2. 1пуоке аррс1:х1:.арр.ехес_()
зуз. ехк (ехксос! е)
Нэз гип
фН«1Ь\А/0гИ!
НеКо 1Уог1й1
Здесь вы можете заметить, что создание приложения с помощью Г1эз
представляет новую концепцию - АррйсайопСоШехЦ
При создании приложений РуСНБ обычно используется ряд компонентов
или ресурсов, которые используются во всем приложении.
И АррИсайопСоЩех!: предоставляет центральное место для
инициализации и хранения этих компонентов, а также предоставляет
доступ к некоторым основным функциям Г1э5.
Объект АррНсабопСопСехС также создает и содержит ссылку на
глобальный объект ОАррИсайоп, доступный в АррИсайопСоШехЦарр, так
как каждое приложение Ос должно иметь один и только один объект
ОАррНсабоп для хранения цикла событий и основных настроек.
Теперь, чтобы вставить нашу метку, помимо ОМа1п\У1пс1о\х импортируем
метку.
Создадим метку и методом 5е(А1щптеп[ установим ее посередине.
Методом 8е(Сеп1таГУУк1§е1: добавим метку в окно ОМа1п\У1пс1о\х.
В результате после вызова команды Пэз пт мы увидим окно с меткой.
Ы1р5://с1ос^1.1о/я1-5/я та 1П\л/1Пс1о\л/.Ыт1
\ЛЛк1 Ооситеп^аЙоп Гогот Ви^ Рерогк Сойе Ремеии Реьоигсе Сеп1ег 01 Ех!:еп510П5
0Г ОоситеШаЬоп 5еагсЬ ооситегшюп
015.15 > ОС > С++ОаББез > ОМатШтдош
СогкегПз
РиЫкТурез
РгсрегйеБ
РиЬПс РипсЙопз
РиЫк 51 оёб
5|§па1а
Пе5тр1етеп1:ес1
Рго1ес1:ес1 Еипсйопз
ОеМей ОеБспрйоп
Ма1п \Мпс1о\л/
Егатеииогк
0Ма1п\Л/1пс1о\л/ С1а55
ТНе СМшгМ/1пскж с1эбб ргоукеБ а тайп аррйсайоп \ллпс1оуу. Моге..
Неас1ег: #1пс1ис1е <С}Ма1п\ЛЛ пс!о\л/>
ртаке: ОТ += \ми$е1:5
1пКепи: 0\ЛЛс1ёе1:
> Ыб!: оГ а11 тетЬегБ, 1пс1ис!|п^ 1пНегкёс1 тетЬегБ
Более подробно про окно ОМсПп\У1пс1о\у можно посмотреть в
ОТ
документации.
аррсШ = АррПсаИопСогИехЦ)
^т=^Iтаёе(аррс^x^.ее^_^е5ои^се(,^та5е5/^т.^р5,))
5гс/та1п/ге5оигсе5/Ьа8е/|та§е8/
Теперь, приложениям обычно требуются дополнительные файлы данных
помимо исходного кода - например, изображения.
И вот здесь может быть полезен АррНсаПопСоп^ехЦ
Вы можете поместить ресурсы приложения в папку гезоигсез, и чтобы
упростить загрузку ресурсов из папки гезоигсез, Лэз предоставляет метод
АррНсайопСоп^ехР^еСгезоигсе.
Этот метод принимает имя файла, который можно найти в папке
гезоигсез, и возвращает абсолютный путь к этому файлу.
И вы можете использовать этот возвращенный абсолютный путь, чтобы
открыть файл.
Папка гезоигсез должна содержать папку базе плюс любую комбинацию
других папок.
Базовая папка содержит файлы, общие для всех операционных систем, в
то время как папки для конкретных платформ могут использоваться для
файлов, специфичных для данной ОС.
Теперь, далее мы можем использовать йэз, чтобы превратить файл питона
в отдельный исполняемый файл.
ГЬз Тгееге
а □ Ргсу«л ▼ © •? С “
ЙЬиВЁАУ32.сЛ1
1? гпзусрПО.аН
? ру!}юп36.Л1
3 О15Соге.сШ
нъ о^ов^ан
$О(56иШ11
• ОГБНеКуогк с!11
.-» 0150011^11
О15Ош1Моае1;.^11
. ГП51П.РУ
Трош П)5_гип1111пе.арр11са11оп_сог1ех11.Ру(Д5 1трог11 АррИсаИопСопГехг
Ггот хпрогТ СНа1пШ1пйош, СЬаЬе!
Троп РуЩЗ.СрСоге ЩрогЧ ЦТ
1трог1: 5У5
6
’ ► 1Т_____пате___== 1____таги__
аррсХхХ; = АррИсаПолСоп^ехГО # 2. ГлэГапЛяГе Аррг1са22олСоп€ех2
А1ПС10Н = СНа1пИ1пйоиО
и1пс1ои.5е1Щ1пс1оиТ±г1.е("Не1.1о Ноги!")
мЦпйсн. рез1ге(5О0, ЗО6)
1аРе1 = ЧГаЬеН гНе11.о ИогТй!')
ТаЬеТ. $е1А11дптеп1: (Щ. АТ1дпСел1;ег)
нгпйоы. зеГСепГга1И1йде1: (1аЬе1)
И1ПС10И . 5110Щ ()
ех11_собе = аррс!:х1:.арр.ехес_О # 2. Тлуоке аррс*хГ.арр.ехес_(Э
К _пате_ == '_та1Л_"
Теггп1Пй1: 1си1
(уелу) С:\изег5\и5ер\РусГ|аг1пРР0}ес15\РуЩЕхап1р1е>Г1эз лил
(уелу) С:\и5ег5\и5ег\РусГ|аг1пРрсиес1:з\РуЩЕхатр1е>ГЬз Ггееге
Осле. Уор сап пои гип '1:агде1:\рц1:ех\ра1:ех.ехе'. И ГКаТ йоееп’1: иогк,
•I яее ЪМр5://Ьп11с1-5у51е111}ЛтапЛо/1го11Ые5Г|Оо11лд.
* (уепу) С:\изег5\с15ег\РусПагтРго1есгз\Ру(]ГЕхатр1е>[]
:= б: ТОСЮ к 4: Плгп И Теткпа! ♦ ЕМНюп Со115о1е
Для этого в терминале наберем команду йэз йеехе.
Эта команда помещает исполняемый двоичный файл в целевую папку
текущего каталога.
Далее мы можем создать установщик приложения
ЬПр5://п515.8оигсе^ог§е.1о/Ма1п_Ра§е
пиИзоИ зспрГаЫе тзГаИ зузГет
сгеаГе ассоип( Л Щ
уге&ЕИе паумзаиоп
Мат Раде
Ееайкез
8сгеепзПо(5
И518 2
Ысепзе
в 0оситеп1а1юп
ЭирроП
Соттипйу
* РАО
Вид РерогТз
Яедиез18
в ОеиеЮрег Сеп1ег
Р1ид чП5
та!п раде солптепГ~| | У1©у/ зоигсе |, Ыз(огу
Ма'|п Раде
Ы818 (№11зоП 8спр(аЫе 1пз(а11ЗузГет) !з а рго^ззюпа! ореп зоигсе зузГет ш сгеа(е
\Л/гпс1о1№ 1пз1а11егз. 1г 15 ^е$1дпеб ю Ье аз зта11 апс! Пех|Ые аз роз$1Ые ап<3!$ (ИегеГоге уегу
зиКэЫе Гог «пГете! сНзГпЬиПоп.
Веюд а изег’з ГёгзГ ехрепепсе уоиг ргоОисГ, а зГаЫе апй геНаЫе 1пеГа1]ег 18 ап 1троПап1
сотропеп! о( зиссеззГи! зоГМаге. Ы818 уои сап сгеаГе зисК тзГаПегз (На! аге сараЫе
оГ с1о!пд еуегуГНпд (Иа1 в пеес!ес11о зеЮр уоиг зоГМаге.
Н8Е5 13 зспр(-Ьазес1 апс! эОоууз уои 1о сгеаГе ±е 1од1с 1о ЬалсИе еуеп СЬе тоы сотр1ех
юзГаПайоп Газкз. Мапу рЮд-юз апсЗ зспргз аге акеайу ауаПаЫе: уои сап сгеа!е иуеЬ
пзГаИогз, соттцп1са1е ууНИ \Мпс1оиуз апс! оГЬег зоГмаге сотропепГз, 1пзТа11 ог ирбаЩ зКагес!
сотропеШз агб тоге.
1_а1ез1 Ы818 ге!еазе
Ы818 3.06.1 (Ке1еазе МоГез г?)
ииу 31 г 2020
0омп1оас1 ф
Готт
Но для начала мы должны установить И818 - систему с открытым
исходным кодом для создания установщиков \У1пс1о\У5.
Изменить переменную среды
В :\и 5 ег\ А па со пд а 3
О :\и $ег\ А па со па ЗМ । Ь га гу\т I и д IV-\л/64\Ь| п
В:\и$ег\АпасопдаЗ\ЫЬгагу\изг\Ып
О :\и в ег\ А па со пс1 а ЗХ 11Ь га гу\Ы п
В :\и 5 ег\ А па со пд а 3\$сп рК
СХРгодгат РЙе$ (х86)\Сог™топ ЕПе5\Огас1е\^а\^араГ1т
%8у$1ётКоо1%\5у$1егп32
%5уз1:етНоо1:%
%Ъу51:етКосТ%\5у ?1ет 32\УУЬе т
%8У5ТЕМ кООТ%\5у51ет32\ХУ|пНотРо^ег5Ье1Ку1 ОХ
%5У5ТЕМКООТ%\5уз(епп32\Ореп85Н\
С:\Ргодгат Е|1езХбо1:пе1\
С:\Ргодгат Й1ез\М!егозой 501. 5еп/ег\130\Тоок\В|Пп\
СХРгодгат ЕЙезХМ! егозой 501 5егуег\СПеп15ВКХ0ВВСХ170ХТоо1з...
ВЛРгодгат Я1е5Х6Й:Хспгк1
[СХРгодгат ЕЛея (х86)\М515\
Создать
ОК | Отмена
Также нужно добавить каталог М818 в переменную среды
ХУ1пс1о\У5
РАТН.
После этого нужно перезапустить среду разработки РуСйагт, чтобы она
увидела эти изменения.
ТЬз 1пз1а Пег
ф-т- Ф — к* гпайтру
1 Рго|-ес1 -
Тегпп1Г1д[: коса!
Ггого ТЬ5_гип111пе.арр1Лса^1С1Л_сс1Г1^ех1 -РуЧХЬ 1шрог1 Арр11са11огСоп1ех1
Ггош Ру(ГЬ5.Ч1;К1йде1:5 1шрог1; дМа1п№1пй[)ш, СЬаЬеХ
Тгот Ру(П5.Ч1Соге хтрог! р!
1гфог1 зуз
16 __пате__ == '__та1п__':
аррсТх! = АррИсаПопСопгехЮ # 2. ТлзТапМаТе АррПсаМолСа
Ш1пйош = ОМзШИпйоЩ)
и1пс1ои.5етгйоиТИ1еС"Не11о НогТсП")
«Г1РЙОШ.геБ12е(5В0, 300)
1аЬе1 = 01аЬе1('Не11о Иог10!')
1аЬе1. зегАИдгипеп! ( 01. А11длСеп1:е г)
Ш1ПР0Ш.5егСег1га1й1аде1(1аье1)
Ч1ПЙО1У. ЕГ1рш()
ех11_сойе = аррс1х1.арр*ехес_() # 2. Тпгоке пррсГхТ .арр.ехес_(
Н_лате_ == _та1п_‘
НхсГОнО^Г Й1пйои/й [Уега^бГ 10.0.18362.367]
(с) Корпорация Майкрософт (И1сго5о61 СогрогаИоп), 2019. Все прана защищены-
(уепу) С:\15егз\и5ег\РусГаг1лРго^ес1е\Ру(]1Ехап1р1.е>ТЬб 1п5Га11ег
Сгеа1ей 1агде1\рч^ех5еХир.ехе.
-:= & ТОРО ♦ Руйтап Сопм1е И Т«=.ти‘па1
Далее создадим установщик с помощью команды Г1эб тзюПег.
Эта команда помещает исполняемый двоичный файл в целевую папку
текущего каталога.
Теперь вы можете отправлять его для установки приложения.
Виджеты и компоновки РуСН
&
ТесН ЗоЮИопэ
Создание настольных Ру1йоп
приложений с 6111
Виджеты и компоновки РуОЛ
Система компоновки предоставляет простой и мощный способ
организации дочерних виджетов внутри родительского виджета.
О.Вох1_ауои1 - выстраивает дочерние виджеты по горизонтали или вертикали
ЦВиНопСгоир- контейнер для организации групп виджетов кнопок
О.Еопт1_ауои1 - управляет формами виджетов ввода и связанными с ними метками.
О.Сгар111С5Апс11ог1ауои1: - связывает виджеты между собой
(16г1с11ауои1 - размещает виджеты в сетке
ЦбгоирВох - групповой фрейм окна с заголовком
О.НВох1_ауои1 - выстраивает виджеты по горизонтали
ЦЬауои! - базовый класс компоновки
ОСауоиШегп - абстрактный элемент, которым управляет СЬауои!
0,51геРоНсу-описывает политику изменения размера по горизонтали и вертикали
ЦЗрасегИет - пустое место в макете
Ц51аскесИауои1:- стек виджетов, в котором одновременно виден только один виджет
ОУВохЬауои! - выстраивает виджеты вертикально
О.\Мс1&еШет - элемент, представляющий виджет
ОС предоставляет набор классов управления компоновкой.
Эти компоновки автоматически позиционируют и изменяют размер
виджетов.
И все виджеты Ос могут использовать компоновки для управления
своими дочерними элементами с помощью функции зеСЬауоиС.
Ггот 1Ъ5_гипйте.арр11са1юп ^оп1ехкРуЦ1:5 1трогГ АррПсаПопСопГехГ
Ггот РуОГ5.СИ\Л/1с1ёе151трогГ О.1_аЬе1, ЦНВохЬауоиГ
Ггот РуСЦЗ.СиСоге 1трогГ Щ
1трогГ $у5
1Г__пате____== 1__тат____
аррсМ = АррНса1юпСоп1ех1() # 1.1п5ГапНаГе АррПсаПопСопГехГ
\лл пс!о\л/ = СЛЛ/к^еГО
мпс!омле1\Мп€1оууТШе(||Не11о \Л/огИ!")
штс1ош.ге512е(500, 300)
1ауои1 = ЦНВох1ауои1()
1ауоиГ.ас1д\Л/|д§еГ{р1аЬе1(гОпег))
I ауо и1. а<М\Л/1 д§е1( ЦЬа Ье I (гТ\л/о'))
I ауо и1.а<1(1 И/1 о^е1( ЦЬа Ье I (ТИ г ее1))
мп п<1 о ш. зегЬауо и1( I ауои!)
\л/1ПС^о\л/.бНо\л/()
ехЯ_сос!е = аррсШ.арр.ехес_() # 2.1пуоке аррсШ.арр.ехес_()
5у5.ехЯ(ехЯ_сос1е)
Ф Не Но ШогИ!
Опе
Здесь мы с помощью компоновки СЩВохЕауоШ располагаем метки
горизонтально в окне СЛУк1§еЕ
Ггот ГЬ5_гипГ1те.арр||са1юп_соп1ехГ.РуС115 1трогГ АррПсайопСопГехГ
Ггот РуОГ5.СЩМс^еГз 1трогГ СВЛ/к^еГ, СЦ_аЬе1, ЦНВохЬауоиГ, Ц\/Вох1ауои1
Ггот РуЩБ-СЦСоге 1трогГ СИ
1трогГ 5уз
|Г_пате__== 1_тат
аррсШ = АррПсаПопСопГехГО # 1.1пзГапПаГе АррПсаПопСопГехГ
\лл пйоуу = ЦХЛ/ИёеГО
уу|пс1омле1\Мпс1оууТШе(||Не11о \Л/ог1с1!")
\ллпс1о\л/.ге512е(500, 300)
1ауои1= С}\/Вох1_ауоиГ()
1ауоиГ.ас1д\Л/1с1§еГ(р1аЬе1(гОпег))
I ауо и^аддШ М§е1(ОЬа Ье I (гТшо'))
I ауо иЪасШ \Л/1 с1де1(0Ьа Ье I (ГТИ г ее'))
\л/1 пдо ш.зеИа уо и1 (I ау оиГ)
ф Не11о УУогУ! □ X
Опе
Тио
ТКгее
хллпс^охллбЬоууО
ехЯ_сос!е = аррсШ.арр.ехес_() # 2.1пуоке аррсШ.арр.ехес_()
5у5.ехЯ(ехЯ_сос1е)
Компоновка ОУВохЬауои! размещает метки вертикально.
Тгот 1Ъ5_гип11те.арр11са1юп_соп1:ех1.РуС11:5 1трог1 Арр||са1юпСоп1:ех1
Тгот РуСЦ5.С1Г\Л/1с1ёе151трогТ О.1_аЬе1, О.епс11ауои1
Тгот РуЦГ5.агСоге 1трогГ СЦ
1трог1 зуз
1Т_пате__== 1_тат
аррсШ = Арр||са11ОпСоп1:ех1:() # 1.1пзГап11а1е АррКсаНопСопТех!:
Ш1пс1о\л/ = О.\Л/1с1ееГ ()
ш1пс1о™.5е1\Л/1пс1о™Т|1:1е(||Не11о \Л/огИ!")
\л/1пс!о\л/.ге512е(500/ 300)
1ауои1= рбгИЬауоиТО
1ауоиТ.адс!\Л/|дде1(р1аЬе1(|Опе,),0,0,1,2, Си.А1|§пНСеп1ег)
1ауоиТ.ас1(1\Л/И§е1(О1аЬе1(|Т№ог)Д/0,Ц1.АН§пНСеп1ег)
1ауо^аддШ1с1§е1(Р1аЬе1(|ТИгеег),1,1, Си.А1|§пНСеп1ег)
ии пс!о уу.зеИа у о и1 (I ауоиТ)
Ч * Не11о УУогк!!
Тита ТЬгее
□ X
Ш1П€1О\Л/.5Т|ОШ()
ехН:_сос1е = аррсШ.арр.ехес_() # 2.1пуоке аррсШ.арр.ехес_()
5у5.ехЩех11:_сос1е)
Компоновка (}Спс1Еауои1: располагает элементы в сетке.
При этом для каждого элемента можно указать строку, столбец, в
которых должен находиться элемент.
Также можно указать затем сколько строк и столбцов должен заполнять
элемент.
Ггот 1Ъ5_гип11те.арр1ка1юп_соп1ехкРуС11:5 1трог1 Арр||са1юпСоп1:ех1
Тгот РуОТБ1троП: ЦУЛ/к^еГ, ОРогтЬауои!:, ОРиаНВиПоп, ОНпеЕсНТ
Тгот РуСЦБ.ОГСоге 1трог1 СИ
1трог1 $у$
1Г__пате____== 1___та(п___
аррсШ = Арр11са1юпСоп1ехГ() # 1.1п51апНа1е АррПса1юпСоп1:ех1
\ллпс1о\л/ = Ц\Л/к1§е1:()
уу|Пс1оууле1\Мпс1оууТШе(||Не11о ХЛ/огИ!")
\А/1пс1оу/.ге512е(500, 300)
1ауои(= С(Еогт1ауои1()
1ауои^а<ШКош(рРи5НВииоп(г,Опе"), ЦИпеЕдЩ));
1ауои1.аддКо\л/(ОРи5НВиИоп("Т\л/о")/ ЦЬтеЕсЯЩ));
\л/1пс!о\л/.5е11ауои1(1ауои1)
\Л/1пс1О\ЛЛ5Но\Л/()
ехИ_сос1е = аррсШ.арр.ехес_() # 2.1пуоке аррсШ.арр.ехес_()
5у5.ехИ(ехЯ:_сос1е)
Компоновка ОРогтЬауоШ добавляет два виджета в строку, обычно
ОЬаЪе! и ОЫпеЕбй для создания форм.
В качестве резюме - виджеты могут иметь в качестве родительских
только другие виджеты, но не компоновки.
Но вы можете вкладывать компоновки в родительскую компоновку с
помощью метода аббЬауоЩ, тогда внутренний макет становится дочерним
по отношению к макету, в который он вставлен.
Теперь, модуль Ог \У1с1§е[5 предоставляет набор элементов
пользовательского интерфейса для создания пользовательских интерфейсов
приложения.
И все, что вы видите в приложении РуОЕ представляет собой виджеты:
кнопки, метки, окна, диалоговые окна, индикаторы выполнения и т. д.
Ггот <Ъ5_гип11те.арр11са1:юп_соп1:ехкРуС11:5 1трог1 Арр||са1юпСоп1:ех1
Ггот РуОХБ .ОХ\Л/1с1ее151трог1 СЦ_аЬе1
Ггот РуСКЗ.СИСоге 1трог1 Щ
1трог1 зуз
1Г__пате____== 1___тат____
аррсШ = АррПсаГюпСопГехГО # 1.1П51ап11а1е АррНсаГюпСопГехГ
\л/1пс1ош = СЛЛ/1с1§е1:()
Ш1пс1ош.5е1:\Л/1Пс1ошТ|1:1е("Не11о \Л/огИ!")
Ш1пс1ош.ге512е(500,300)
1аЬе1 = С(1-аЬе1(шт(1ош)
1аЬе1.зеНех1("Не11о РуЦ15")
1аЬе1.ад)из1812е()
1аЬе1.тоуе(200,100)
Ш1П€1ОШ.5Кош()
ех11_сос1е = аррс1х1:.арр.ехес_() # 2.1пуоке аррс1х1:.арр.ехес_()
зуз.ехЯ:(ех11:_со€1е)
С меткой мы уже познакомились.
При создании метки, передавая в конструктор в качестве параметра
объект окна, мы сообщаем, что метка является частью окна.
Метки имеют размер по умолчанию, и для длинных строк текста размер
по умолчанию может быть слишком мал.
К счастью, у нас есть метод асЦиз^Зке, который автоматически
настраивает размер метки.
В противном случае длинный текст будет отображаться на экране только
частично.
И метод шоуе определяет начальную позицию метки от левого верхнего
угла экрана.
с!еТ 5Ьо\л/():
рппЦНпеЛехЦ))
Нпе = СЩпеЕсНЦ)
Ппе.5е1ЕсКоМос1е((11-1пеЕсй1:.Ра55\л/огс1)
Ппе.зеШхесМкк 11(140)
ЬиНоп5= (ДРизЬВиНопО
ЬиПоп8.8еГГех1("5иЬтй")
ЬииопЗ.сНскей.соппесЦзЬоуу)
ЬиПопС= ЦРизЬВиПопО
Ьи«опС.8еГТех1:("С1еаг")
ЬиНопС.5е11соп(Ц1соп('|т.)р§1))
ЬиПопС.с1|скесксоппесГ(Ппе.с1еаг)
Каждому графическому интерфейсу нужен какой-нибудь способ
получения ввода от пользователя.
В РуСН такой способ ввода данных - это использование виджета
(ЗЬтеЕсШ:.
Или если вы хотите получить ввод многострочного текста, вам нужно
использовать виджет 0Гех1ЕсН1:.
И конечно ввод как правило используется вместе с кнопкой рРизЬВийоп.
Чтобы получить введенный текст из виджета (ДлпеЕсНц вы должны
использовать метод Сех[.
Здесь мы создаем кнопку ЗиЬтй, которая вызывает функцию 51ю\х,
использующую метод Юх! виджета рЫпеЕсПг
Мы также создаем кнопку С1еаг, которая вызывает метод с1еаг виджета
(ЗЫпеЕсНц который удаляет все его содержимое.
Метод 8е1ЕсЬоМос1е принимает несколько различных «режимов», одним
из которых является режим пароля, который скрывает ввод.
Используя метод зеЕЕЧхеНХЛЛсШз, мы можем установить размер виджета
С}Е1пеЕс1й в пикселях.
Значение по умолчанию для каждого виджета составляет около 100
пикселей.
Теперь о кнопке рРизЬВийоп.
Как следует из названия, это кнопка, которая запускает функцию при
нажатии.
Кнопка, которая не связана с функцией, бесполезна.
Кнопки предназначены для подключения функции, которая будет
выполняться после нажатия кнопки.
И такая функция подключается с помощью метода сНскей.соппесГ
Также вы можете установить изображение на кнопку, с помощью
виджета СДсоп.
Просто передайте в него путь к файлу, и все готово.
с1еГ51юуу():
рппЦсотЬо.сиггепНехЦ))
Ьииоп5.сНскес1.соппес1(511ОУ;)
сотЬо = ЦСотЬоВох()
сотЬо.ас1с11Гет("Ру11“1Оп")
сотЬо.асIсII1:ет(,,^аVа,,)
сот Ьо.асIсII^ет(,,С++,,)
сот Ьо.5е1Яхес1\Л/1с1Щ{140)
сотЬо.ас1с111:ет5(["Ру1:11оп", ’Чауа", "С++"])
Виджет рСотЪоВох представляет собой раскрывающийся список
элементов, из которых пользователь может выбрать свой вариант.
Преимущество этого виджета в том, что он занимает очень мало места на
экране, при наличии большого списка элементов.
Здесь мы добавляем элементы в список по одному методом аскШет.
Хотя мы можем добавить сразу все элементы кортежем с помощью
метода аскШетз.
Зафиксировать ширину списка мы можем методом зе1:НхесМсМ1.
Теперь, обработать выбор пользователем элемента в списке мы можем с
помощью метода сштеп1Тех1:(), который возвращает элемент списка в виде
строки.
с1еТ 5Ноад():
рппЦсНескЛехЦ))
рппЦсКеск.с11еск51:аГе())
рпп1(сКеск.15С11ескес1())
с11еск= О.СНескВох()
с11еск.5е{Тех1:("Орйоп1")
сЬеск.51а1еСЬапзес1.соппес1(5Нош)
Теперь перейдем к флажкам и радиокнопкам.
И здесь мы можем использовать сам флажок как кнопку, чтобы связать
его с функцией обработки выбора флажка.
Мы делаем это с помощью метода зЮЮСйап^еб.соппесЦ
Вы можете получить значение флажка с помощью метода №х1, который
вернет текстовое значение флажка.
И вы можете использовать метод сйеск&аСе, который возвращает целое
число 0, если флажок не выбран и 2 - если он выбран.
Метод тзСйескеб возвращает Пне, если флажок выбран.
с!е^ 5Ьо\л/():
рпп1(гас1ю1.15СЬескес1(), гас1ю1.1ех1())
рппГ(гас1ю2.15СЬескес1(), гас1ю2.1:ех1())
гас1ю1 = ОВасНоВиНопО
гас1ю1.8е1Тех1:("Ор1юп1")
гаШо1Ло8в1ес1.соппес({5Ьош)
1ауои1.асШ\Мс1§е1(гасЛо1)
гасПо2 = О.КасНоВи1:1:оп()
гас1ю2.5е1Тех1:("Ор1юп2")
гас1ю2Ло§§1ес1хоппес1:(51'1о\л/)
1ауои1.ас1с1\Л/1с1^е1:(гас!||о2)
В отличие от флажка, вы можете выбрать только одну радиокнопку из
многих.
И здесь мы также можем использовать саму радиокнопку как кнопку,
чтобы связать ее с функцией обработки выбора.
Мы делаем это с помощью метода Ю§§1ес1.соппесЦ
Вы можете получить значение радиокнопки с помощью метода №х1,
который вернет текстовое значение переключателя.
Есть еще один метод, который вы можете использовать - это метод
тзСЬескеб, который возвращает Сгие или Ызе, показывая состояние выбора
переключателя.
с!еТ 5Ио\л/():
р п пГ(1ех1Ло РI а! пТех1())
ЬиПоп5.сПскес1 .соппесфИом/)
1ех1 = СПех1Ес1|1()
1ех1.5е1Р1асе1'ю1с1егТех1("Еп1ег зоте ТехТ Неге")
1ехЕзе111пс1оКес1оЕпаЫес1(Тгие)
1ауои1.ас1с1\Л/1с1ёе1:(1:ех1)
Как и виджет Р1лпеЕс1к, виджет ОГехШсШ: используется для ввода
данных пользователем в виде текста.
Однако, в отличие от рЫпеЕбй, который вводит только одну строку,
ОГехШсШ: позволяет ввести несколько строк текста.
Чтобы получить от пользователя введенный текст, мы можем
использовать метод ЮР1атТех( и метод кнопки сПскесксоппесЕ
Метод 8е(Р1асеЬо1бегТех( используется для установки в виджет
выделенного серым цветом текста, который исчезает при взаимодействии с
виджетом.
Метод зеШпбоНебоЕпаЫеб отключает / включает возможность для
пользователя использовать функции 11пс1о и Небо с помощью клавиш СМ +
X и СМ + У.
ЧI (приНех! ? X
Тех!:
Ьииоп0.сПскес1.соппес1(с1|5р1ау)
ОК | Сапсе!
сМ с1|5р1ау():
1ех1, ргеззес! = Ц1приЮ|а1од.де1ТехЦ\ллпс1о\л/, "1при1Тех1:", "ТехГ ",СЩпеЕс1|1:.Могта1, "")
И ргеззеск
рппЩех!)
•. 1при!? X
МитЬег:
ОК | Сапсе!
ргеБзес! = 0.1приЮ|а1оеЕе11п1(у/1пс1о5л/, "1при1:1п1еЕег","МитЬег:", 10, 0,100,1)
Помимо строки ввода и текстовой области, диалоговые окна обычно
используются для ввода данных пользователя.
И в РуР15 есть виджет СДприЮ1а1о§, который позволяет создавать
множество различных диалоговых окон для ввода данных различными
способами.
И самое распространенное диалоговое окно - это ввод текста.
Оно представляет собой простое поле ввода и две кнопки, ОК и Отмена.
Функция §е!Тех! возвращает два значения, поэтому мы устанавливаем
две переменные для них.
Первая переменная три! получает ввод пользователя, вторая переменная
получает значение Тгие или Раке, указывающее, была ли нажата кнопка
ОК или нет.
Далее есть диалоговое окно ввода целого числа.
Здесь вы можете использовать стрелки для изменения целочисленного
значения или непосредственно ввести значение самостоятельно.
5е1ес1 Не... ? X
Орйоп:
Орйоп1
ОК | Сапсе!
орйопз = ("ОрНопГ1, "0р{юп2", "ОрИопЗ")
орИоп, ргеззес! = ф1при10|а1о§.§еШет(\л/1пс1о\л/, "5е1ес1 Нет", "ОрИоп:", орИопз, 0, Еа1зе)
1при1 Ое... ? X
Уа1ие:
|1ЕЕЕ
ОК | Сапсе!
с1ес1та1, ргеззед = СЦприЮ!а1о§.§еГОоиЫе(\л/1Пс1о\л/, "1при1 Оеата!", "\/а1ие:",10.00, 0,100, 2)
Следующее окно - это окно выбора элемента.
И здесь мы сначала определяем список / кортеж строк, отображаемых в
качестве элементов.
И последнее диалоговое окно - это окно ввода чисел с плавающей
запятой.
Здесь вы также можете использовать стрелки для изменения значения
или непосредственно ввести значение самостоятельно.
Ме55аде Вох
с1еГ5Нош_рорир():
пазе = ЦМезБа^еВохО
т5Е.5е1\Л/1пс1оууТ|1:1е(||Ме55аЕе Вох")
гп5^.5е1:Тех1:("ТК|515 5оте гапс1от 1ех1")
т5ё-5е11соп(СМе55а$еВохХК1е51юп)
т5ё.5еГ$Гапс1аг€1Ви11оп5(иМе55а§еВохЛ2апсе1 | ЦМезза^еВох.Ок)
т 5§. 5е10 еГа и 11В и По п (ОМ е55а В ох .О к)
тБ^-БеШеТаПесПехТСЕхТга деГаЛз.....")
т5Е.5еНпГогтайуеТехГ("ТН|515 5оте ехГга 1пГогта1:1Уе ГехГ")
т5§ЪиПопС1|ске<±соппес1:(рорир)
х = т5д.ехес_()
с!еГ рорир(|):
рпп1(1.1ех1())
ТЫе 15 50те гапдот 1ех1
ТЬ|5 15 5оте ех!га Ыогтабуе 1ех1:
ОК , | Н|с1е Ре1аЛ5... | [ СапсеГ
Ех1га с1еЕаЙ5.
(^Мезза^еВох - это виджет, который используется для создания
диалоговых окон для отображения различных сообщений и кнопок.
Как правило, в приложении определяется метод, который открывает окно
сообщения.
И этот метод связывается с какой-нибудь кнопкой или событием
приложения.
Здесь метод 8е1:\У1пс1о\уТк1е устанавливает заголовок окна сообщения.
Метод зеПехЕ устанавливает текст под заголовком.
Метод ехес открывает окно сообщения.
Окно сообщения имеет 4 различных типа значков, которые можно
изменить с помощью метода зейсоп.
В окне сообщения по умолчанию используется кнопка «ОК».
Однако на самом деле существует более десятка различных кнопок,
которые рМезза§еВох предлагает для использования.
Используя функцию зе[5К1пс1агс1ВиПопз, мы можем установить другой
тип кнопки.
Когда окно открывается, вокруг кнопки «ОК» есть синий контур.
Это обозначение кнопки по умолчанию.
Используя функцию зеЮе^аиЙВийоп, мы можем изменить кнопку по
умолчанию.
По умолчанию у нас есть только одна область в (ЗМезза§еВох, где мы
показываем текст.
Однако есть еще две дополнительные области, которые мы можем
разблокировать, чтобы добавить больше текста.
Первая область - это дополнительный текстовый раздел в самом окне
сообщения, который мы можем определить с помощью функции
зеПпГогтайуеТехЦ
Вторая область текста отображается в расширении окна.
При настройке этого раздела автоматически создается кнопка, которая
используется для отображения этой области.
И для создания этой области потребуется функция зеЮеЩйебТехЦ
Теперь, если у нас есть 3 разные кнопки в окне сообщений, как мы
узнаем, какая из них была нажата?
Используя метод ЪийопСИскеб.соппесЦ мы можем вызвать запуск
функции всякий раз, когда нажимается кнопка в окне сообщения.
Здесь когда нажимается кнопка окна сообщений, она автоматически
запускает функцию рорир, объявленную в ЬийопСИскесЬсоппесЦ
И вызов функции Сех[ кнопки вернет ее текстовое значение.
ирс1а1:е(): - I 22%
уа1ие = рго8_Ьаг.уа1ие() I
ргое_Ьаг.$е1:\/а1ие(уа1ие + 1)
рго§_Ьаг = О.Рго&ге58Ваг()
рго§_Ьаг.5е1Сеоте1гу(50, 50, 250, 30)
рго§_Ьаг.5е1\/а1ие(0)
1ауоиГас1сМ/1с1Ее1(рго8_Ьаг)
ЬиНолОр = ЦРизИВиНопО
ЬиНоп К р .5е1Тех1("и рс1а1е")
ЬиПопКр.с1|скес1.соппес1(ирс1а1е)
1ауои1.ас1с1\Л/1с1§е1:(ЬиПоп11р)
гезе±() - сбрасываетзначение на индикаторе выполнения.
уа1ие() - возвращаеттекущее целочисленное значение.
зегКапее (п 1, п2) - определяет начальную и конечную точки.
Значения по умолчанию - 0 и 100 соответственно.
Виджет Рго§гез8Ваг, индикатор выполнения - это отличный способ
визуализировать процесс выполнения длительных операций, таких как
передача файлов, загрузка, выгрузка, копирование и т. д.
Здесь с помощью метода зеЮеотейу, мы определяем расположение и
размеры индикатора выполнения.
Первые два параметра представляют положение X и У индикатора
выполнения в окне.
Третий и четвертый параметры - это ширина и высота индикатора
выполнения.
Метод 8е(Уа1ие устанавливает значения индикатора.
Однако имейте в виду, что диапазон для индикатора выполнения
составляет от 0 до 100.
Если вы хотите изменить этот диапазон, используйте метод 5е1Кап§е.
Метод Гезе! сбрасывает значение на индикаторе выполнения.
Метод уа1ие возвращает текущее целочисленное значение индикатора.
5Нс1ег = 0,5Нс1ег(0.1.Ног12оп1:а1)
зНс1ег.5е16еоте1:гу(50,50, 200, 50)
5Нс!ег.5е1М|П1типп(0)
5Нс1ег.5е1Мах1ппит(20)
5Нс1ег.5е1Т|скРо5к1оп(Ц5Нс1ег.Т|ск8Ве1ом/)
5Нс1ег.5е1Т|ск1п1еп/а1(2)
5Нс1ег.уа1иеС11ап8ес1.соппес1(5Но\у)
1ауои1.ас1с1\Л/1с1ее1(5Нс1ег)
деГ 5110\л/():
рппЦ51:г(5||с1егл/а1ие()))
Виджет РуСХ С}8Нс1ег предоставляет графический интерфейс для выбора
значения из диапазона различных значений.
У виджета 8Нс1ег есть ползунок, который можно перемещать.
При перемещении ползунка выбранное значение соответственно
изменяется.
По умолчанию ориентация слайдера вертикальная.
Для горизонтального ползунка вам нужно использовать значение
Ос.Ноп2О1йа1.
Затем нам нужно установить минимальный и максимальный диапазон с
помощью методов зе^Мпйтит и зе^Махптшт.
Используя метод зеЮеотейу, мы определяем расположение и размеры
слайдера.
Первые два параметра определяют положение ползунка по осям X и У в
окне.
Третий и четвертый параметры - это ширина и высота слайдера.
Затем нам нужно установить Ттскз, маркеры по ползунку.
Вы можете выбрать место размещения тиков и установить интервал для
расстояния между тиками.
Используя метод уаХиеСйап^еб, мы можем связать значение ползунка с
функцией зНохх.
Каждый раз, когда значение ползунка изменяется, вызывается функция
бНо\у и показывается значение слайдера.
01.09.1981
с1а1е = СЩа1еЕс1к()
с1а1е.2е1М1П1титОа1е(СЮа1е(1900,1,1))
с1аГе.5е(Мах1титОаГе(СЮа1:е(2100,12, 31))
1ауо1Л.ас1с1\Л/1с1§е1(с1аГе)
(М 51ю\л/():
рпп1{с1а1е.с1а1е()Л:оРуОа1е())
Виджет РуР15 (^ВаЩЕсШ: - это интерактивный и визуальный способ
ввести дату в приложении.
Здесь вы можете редактировать дату вручную или с помощью
встроенных клавиш со стрелками.
И здесь вам не нужно назначать минимальное или максимальное
значение, РуР1 сам назначит значения по умолчанию.
Но вы можете сделать это с помощью методов 8е1Мтш1шпВа1:е и
зе^МахшштОаГе.
Чтобы получить введенную дату, вы можете использовать метод да(е и
метод (оРуВаЩ, чтобы распечатать дату в более читаемом формате.
Аскапсес! РуО(
&
ТесН ЗоЮИопэ
Создание настольных Ру1йоп
приложений с 6111
Аскапсес! РуОХ
Одна из продвинутых возможностей - это поддержка
пользовательских стилей.
арр = 0Арр11са11оп ([])
#арр.5е151у1е('Еи51Оп')
#арр.5е151у1е('\Л/1пс1спл/5')
арр.5еГ51у1е('\Л/1пс1о\л/5\/|51:а')
Самый простой способ изменить внешний вид приложения - это
установить глобальный стиль с помощью метода 8е(8(у1е класса
(^АррИсайоп.
Доступные стили зависят от вашей платформы, но обычно это стили
«Ризюп», «\У1пс1о\У5», «\У1пс1о\У5У15(л» и «МасшЮзЬ».
арр = 0Арр11са±1оп([])
арр.5е151у1е(Ти5Юп')
с!агк_ра1еПе=арр.ра1е№()
□ X
ЬиПоп = фРизЬВиИопО
Ь иНо п. зеТТех! (" 5 и Ь т I! ")
1ауои±.ас1с1>Л/1с1ё;е1:(Ьи1:1оп)
с^агк—ра1е±±е.зе±Со1ог(ОРа1е«еЛЛ/1Пс!о\Аб ССо1ог(53, 53, 53))
с1агкра1е11е.5е1Со1ог(ЦРа1е11е.\Мпс1о^Тех!,
с1агк_ра1е1:1:е.зе1:Со1ог(С1Ра1е1:1:е.Вазе, <7Со1ог(25, 25, 25))
с1агк_ра1еПе.зе!Со1ог(фРа1еПе.А1!егпа1:еВазе, $Со1ог(53, 53, 53))
с1агк_ра1е11е.5е1Со1ог(аРа1е11е.Тоо1Т|рВа5е,
с1агк_ра1е1:1:е.зе1:Со1ог(С1Ра1е1:1:е.Тоо1Т|рТех1, СЦ.шЬке)
с! а гкра I еНе. зе!Со1ог (ОРа I еНе .Тех!, О! .шЬ ке)
с1агк_ра1е!!е.зе!Со1ог(фРа1е!!е.Вийоп, ССо1ог(53, 53, 53))
с1агк_ра1е!!е.зе!Со1ог(ОРа1е!!е.ВийопТех1:, ОХАлИзйе)
с!а гк ра 1е!!е.зе!Со1ог(С1Ра 1е!!е. Вп^ЫТех!, ОТ гее!)
дагк_ра1еПе.зе!Со1ог(ОРа1еПе.Ыпк,ОСо1ог(42, 130, 218))
дагк ра1е11е.5е1Со1ог(ЦРа1е11е.Н|^НН^Н1:, ЦСо1ог(42, 130, 218))
с1агк_ра1е!!е.зе!Со1ог(ОРа1еПе.Н1еЫ|еЬ!ес1Тех!, фГЫаск)
ЬиНоп.5е1Ра!еПе(с1агк_ра1е1!е)
ф Не11о \Л/ог1с1!
БиЬтИ
Если вам нравится глобальный стиль, но вы хотите изменить его цвета,
вы можете использовать объект (ЗРа1ейе и метод зе(Ра1ейе.
Все виджеты в ОС содержат палитру и используют ее для рисования.
Это позволяет легко настраивать пользовательский интерфейс.
Здесь мы получаем объект палитры методом ра1ейе и модифицируем
палитру.
Затем устанавливаем палитру для кнопки методом зе1:Ра1ейе.
арр.5е151у1е5ЬееЦ,,ОРи5ЬВийоп {со1ог:гес1; Ьаск2гоипб-со1ог: Ыие; }")
Также вы можете изменить внешний вид приложения с помощью таблиц
стилей.
Это аналог С88 в Ос.
Здесь мы используем таблицы стилей, чтобы изменить фон и цвет
надписи кнопки.
Терминология и синтаксические правила таблицы стилей Ос почти
идентичны таблицам стилей С88 в НТМЬ.
ууогс15 = О.РПе(|\л/огд5|)
могд5.ореп(ОЯ1е.КеасЮп1у | ОЕПе.ТехТ)
с!а1:а = ЦТех151геат(ууогс15).геас1А11()
||5Г = ^аГа-БрИТСХп'};
сотр1е1ег = ЦСотр1е1:ег(1151)
сотр1е1егле1Са5е$еп5Им1у(П1<а5е1п5еп511:1Уе)
#сотр1е1:ег.5е1Мо€1е15ог11ПЕ(иСотр1е1егХа5е1п5еп511:г/е1у5ог1:ес1Мос1е1)
#сотр1еГег.5е1ТПГегМос1е(а^МаГсНСоп1:а1П5)
Нпе = аПпеЕсШО
11пе^е1Сотр1е1ег(сотр1е1:ег)
1ауои1.ас1с1\Л/1с1ёе1:(1|пе)
сотЬо = ЦСотЬоБохО
сотЬоле1ЕсН1:аЫе(Тгие)
сотЬо.ас!с111:ет5(||51:)
сотЬо.5е1Сотр1е1ег(сотр1е1:ег)
1ауоиг.а€1с1\Л/И^е1:(сотЬо)
Не11о \Л/ог1с1!
ЗРК’5
кек
ксИе
кскк'5
□
В строке поиска или ввода удобной опцией является автозаполнение
текста.
И Ог имеет встроенную поддержку автозавершения текста с помощью
класса С}Сотр1е(:ег.
И рСотркЮг поддерживается виджетами рИлпеЕсШ и С^СотЬоВох.
Когда пользователь вводит текст, рСотркЮг предлагает возможные
способы завершения ввода на основе списка слов, предоставленного
моделью.
Модель может быть в простом случае просто списком слов.
Обычно вы создаете объект рСошр1е(ег, передавая модель в конструктор.
У виджетов, поддерживающих рСотркГег, есть метод зеГСотркГег,
который позволяет указать средство завершения, которое будет
использоваться для виджета.
ОСотркЮг поддерживает ряд свойств для управления его поведением,
включая, отсортирована ли модель, совпадения завершения должны быть
основаны на том, чем введенная строка начинается, содержит или
заканчивается, максимальное количество элементов, которые должны быть
показаны для завершения, должно ли совпадение быть чувствительным к
регистру.
Здесь модель представляет собой файл слов, который загружается как
ресурс.
Сначала мы открываем файл слов, читаем его и создаем список строк.
Затем создается завершитель, который создается с передачей списка
строк в качестве модели.
И виджеты ОЬшеЕсШ и ОСошЬоВох связываются с завершителем.
\ллпс1о\л/ = ОТаЬ\Л/1с1§е1()
1а Ы = О\Л/И§е1()
1аЬ2 = Ц\Л/1с1ёеГ()
□ X
Не11о \Л/ог1с!!
ТаЬ 1 ТаЬ 2
Не11о Рур15
Ш1П<Яош.а(ШТаЬ(1аЬ1, "ТаЬ 1")
мпс!о\л/.ас1сПаЬ(1:аЬ2, "ТаЬ 2")
1ауоиМ = рЕогтЬауои1()
1ауои12 = ЦЕогт1ауои1:()
1аЬе11 = СН_аЬе10
1аЬе11.5еПех1:(||Не11о РуСЦ:5")
Нпе1 = СШпеЕсН1:()
1аЬе12 = О.1_аЬе1()
1аЬе12.5еПех1:("Не11о РуЦ1:5")
Нпе2 = СШпеЕсНф
1ауоиГ1.ас1с1Ко\л/(1аЬе11)
1ауоиН.ас1с1Ком(Ипе1)
1ауои12.ас1с1По\л/(1аЬе12)
1ауои12.ас1с1Ро\л/(||пе2)
1аЫ.зеИауои1(1ауоиН)
1аЬ2.5е1:1_ауои1:(1ауои1:2)
Если в пользовательском интерфейсе слишком много элементов для
одновременного отображения, или интерфейс логически нужно разделить,
элементы можно расположить на разных страницах, помещенных под
каждой вкладкой виджета СПа1э\У1с1§еГ
С}ТаЬ\У1с1§е[ предоставляет панель вкладок и область страницы.
Отображается страница под первой вкладкой, а остальные страницы
скрываются.
И пользователь может просмотреть любую страницу, щелкнув нужную
вкладку.
В этом примере содержимое формы сгруппировано по двум страницам.
И каждая группа виджетов отображается на отдельной вкладке.
Само окно верхнего уровня - это СуГаЫЛйс1§е1:. И в него добавлены две
вкладки.
\л/1пс1о\л/ = рМд|Агеа()
\л/1пдо\л/Л|1е5иЬ\Л/1Пс1о\л/5()
#\л/1Пс!о\л/.са5сас1е5иЬ\Л/1Пс1о\л/5()
зиЫ = ОМд!8иЬ\Л/!пс1о\л/()
5иЬ1\Л/ = О\Л/И§е1:()
5иЫ.8е1\Л/1(Л@е1(8иЫ\Л/)
$иЬ2 = аМсН5иЬ\Л/1П€1о\л/()
зиЬ2\Л/ = С1\Л/1с1§е1:()
5иЬ2.5е1\Л/1с1де1:(5иЬ2\Л/)
1ауои11 = С1Еогпп1_ауои1:()
1ауои12 = С1Еогпп1ауои1:()
1аЬе11 = СУ_аЬе1()
1аЬе11.5еПех1:("Не11о РуЦ1:5")
Ипе1 = СУ-1пеЕсН1()
1аЬе12 = СЦ_аЬе1()
1аЬе12.5еПех1:("Не11о РуСЦ5")
Кпе2 = ОНпеЕсП)
1ауоиГ1.ас1с1Ко\л/(1аЬе11)
1ауои11.ас1с1Роиу(||пе1)
1ауои12.ас1с1Ко\л/(1аЬе12)
1ауои12.ас1с1 Ро\лл(1Гпе2)
Не11о \Л/ог1с1!
Не11о Ру(Д5
Не11о Ру(Д5
5иЬ1\Л/.5е11ауои1:(1ауои1:1)
\л/1Пс!о\л/.ас1с18иЬ\Л/1пдо\л/(8иЫ)
5иЬ2\Л/.5еГ1ауои1:(1ауои1:2)
^1Пс1о\л/.ас1с18иЬ\Л/1П€1ош(5иЬ2)
I ° II |ЙД
Приложение с графическим интерфейсом пользователя может иметь
несколько окон.
И один из способов одновременного отображения нескольких окон -
создать их как независимые окна.
Это называется 501 (единый интерфейс документа).
Однако это требует больше ресурсов памяти, так как каждое окно может
иметь свою собственную систему меню, панель инструментов и т. д.
Другой подход - это приложения МО1 (Ми1йр1е ОоситеШ ТпЮгОсе),
которые потребляют меньше ресурсов памяти.
Здесь вспомогательные окна располагаются внутри основного
контейнера относительно друг друга.
И виджет-контейнер называется С)Мс11Агеа.
Дочерние окна в этой области являются экземплярами класса
^МсI^5^1IэVV^псIо\V.
И можно установить любой СЛУ1с1§е1: как внутренний виджет объекта
5иЬ\У1пс1о\у.
Подокна в области М01 могут быть расположены каскадом или
мозаикой.
Здесь мы создаем С)Мс11Агеа и устанавливаем расположение подокон
мозаикой.
Затем создаем подокна и устанавливаем в каждое подокно виджет с
компоновкой.
И добавляем подокна в С^МсНАгеа.
Ру81(1е
ТвсН ЗоШИопз
Создание настольных РуИпоп
приложений с 6111
Ру$Ие
Ру8к1е - это библиотека РуШоп и обертка Ос для создания
кроссплатформенных графических пользовательских интерфейсов.
1Л
Ра^е 015СИ55ЮП
Реаб У!еад бос гее МешЫзГогу 8еагсГ101 УУ!к1 О.
Маш ра^е
Ресел!сНап^еБ
Рапбот ра§е
Не1р аЬои!
Ме(Ла\Мк1
Тоо1з
ШНаГ Ипкз Неге
Ре1а!еб сКап^ез
5реаа1 ра^ез
РплГаЫе уегБюп
Регтапеп! Нпк
Ра§е шТсгглаНоп
011хэг Ру1Ноп
|итр Го: паи^аНои, зеагсН
Еп Еб РГ Ри 2Н
01: Гог Ру1Ноп
ОГ Гог Ру11"10П
оНюа! 1о^о-
ТЬе 01 Гог РуГНот? рго]есГ а1тз Го ргтмбе а сотр1е(е рог! оГ ГНе РуЕнбе гпоби1е
Го 01. ТЬе беуе1ортеп! БГагГеб оп СЛНиЬй31п Мау 2015. ТКе рго]ес! тапа^еб Го
рог! РуЗУе Го ЦГ 53,5.4 & 5.5.0ипп§ Арп! 2016 ТЬе 01 Согпрапу беабеб Го
ргоребу зиррогГ Иге рогС (зее беГаИзй3).
ТГе тоби!е маа ге1еазеб ггйб ]ипе 2018 аз а ТесКпка! Ргеу1е™ (5иррогГ1п^ 01
5.11), апб !Г \лга5 оГГк!а11у ге1еазеб илГНоиГ Г1че ТесНпкаЕ Ргеи1е^Гай, 1п ОесетЬег
СопГепГь [I пбе]
1 011ог РуГНоп
1.1 ШЬаГ боез * 1оок Нке?
2 6еГСг§ БГагГеб
3 СоттигнГу
4 0еие1сртепГ БГйГкб
5 СопГпЬибп^ Го ГНе С)1 Гог РуГНоп \Л/!к|
2018 Гог 015.12.1п ОесетЬег 2020,1Не тоби1е шаз ге1еазеб Гог 016, и/ЫсЬ (з ГНе 1аГе&1 ауаПаЫе уегзюп, шЫсЬ Наз ГНе
Го11оуу1п^ б|ГГегепсез:
• Й боезг’! зиррогг РуГНоп 2.7,
В отличие от РуРГ, библиотека
Ру81бе доступна для свободного использования как в открытых, так и в
коммерческих проектах, поскольку лицензирована по лицензии ЬСРЬ.
Ру81бе реализован в виде набора модулей РугЬоп.
Эти модули предоставляют инструменты для работы с графическим
интерфейсом пользователя, мультимедиа, ХМЬ-документами, сетью и
базами данных.
РгсуесГ
Н Риге Ру1Ьоп
0 О)апдо
С Яазк
О 6оод!е Арр Епд!пе
&• РугатИ
Н М/еЬ2Ру
!.=: ЗаепНйс
О Апди1аг СО
О АпдЫагБ
в ВооЫгар
0 НТМ15 Во|1егр1а1е
Кеас1 Арр
Реас1 Ма^ие
ХосаПоп: 0:\ц5ег\РусИагтРгс]ес(5\Ру5УеЕхатр1е
Ргр)ес1 1пГегрге1ег: Ыем \ЛгГиа1епу егмгоптеп!
О ^е1Л* етлгоптегй сыпд Л- \/|г1:иа1епу Т
Ьосабоп: |^0Лизег\РусНагтРго]е<1ЛРу5|с1еЕхагт1р1е\уепу
Вазе 1п1егрге1ег: 0:\Апасопс!а\ру1Ьоп.ехе
1пНеп( д1оЬа! зке-раскадез
1 Маке ауаПаЫе 1о а11 ргсуеск
Ьазйпд 1п1егрге1ег
1п1егрге1ег: <Мо 1п1егрге1ег>
Сгеаи
Сапсе!
X
Для создания Ру81бе приложения создадим в
РуСЬагт
проект.
В |н Ргр]ес1 т © т- Ф — гпаиъру
О'
Ру5(с1еЕхатрй 0:\и5ег\РусН|агтРго,ес15\Ру5| с!еЕ
-- ► М НЬгагу госИ:
та!п.ру
► Т1'Ех1:егпа1 ЫЬгапез
ь О 5сга1сКе$ апс! Сог^окз
р!р 1П51а11 Ру51с1е6
Тегт1па1: 1оса1 +
МЗХГОБО'М: И1ПЙ0И5 [Уегзхоп 10.6.18362.387]
(уепу) 0:\1Г5ег\РусГ»агл1Рго]ес’Е5\Ру81с1еЕхап1р1.е>р1р хпзГаП. РуЗЮеб
СоЫесПпд РуЗтйеб
1}51пд сасЬес! Ру51с1е6-6.6.6-6.0.6-ср36.ср37.ср38.ср39-пспе-^1п_ашс16<(62.4 МВ)
с СоЫес1:1пд зЫЬокеп6==6.0.9
Д Изхлд сасКес! зЫЬокепб-6.0.0-6.6.6-ср36.ср37.ср38. ср39-попе-ш1п_атс164.иН1 (2.3 МВ)
ТпзГаШпд соТЛесГеИ раскадез: зПНэокепб,. РуЗЮеб
2 $ ТОРО И Тептппа! Ф Ру!бсл Ссп5о1е
Далее в окне терминала наберем команду установки библиотеки РуЗИе.
рхр т$1:а11 Ру51с1е6
Л н Рго|еЛ ▼ © -Г 1> "
'о1
|т I РуЗМеЕ
т-1 Метл/ ►
► уепу
. X Си1 СЫ+Х
таш
!► III ЕхЬэгпа! ^°РУ
5сга1сНе С Сй1+У
Е|пс1О5аде5 АИ+Е7
]п5рес1 Сос1е...
Де(айог ►
7: 51гис1:иге
тат.ру
1трог1 5У5
Тгот Ру81с1е6.ЗТШ1с1деТ5 1трогТ (]АррПсаТ1оп,
арр = ЗАррИсаТ1опС5У5-агду)
1аЬе1_ = С|ЬаЬе1С"Не11о ШогиП")
1.^3 е1_. б 11 ош ()
арр.ехес_()
(ЗЬаЬеГ
С1еап РуНтоп СотрПес! ЕНез
Ас1с11о Еауогйез
Дерста!: Сос1е СЫ+АИ+Ь
Орбгтйге 1трог15 ПН+АК+О
Пе1е1е... Ое1е1е
Магк аз Р1а1п Тех^
► Кип 'та1п' От1+5Ы1Т+ Е10
-®3 □
НеНо \А/ог1сИ
После установки библиотеки, создадим в проекте файл питона и наберем
в нем код.
Затем нажмем правой кнопкой мыши на файле и выберем Кип.
В результате должно открыться окно Ру51с1е приложения.
11Т1РОП5У5
1гот Ру$1с1е6.ПиЛ/1с1Ее151троП ЦАррПсайоп, ЩаЬе1
арр = ОАррПсайоп($у$.агеу)
1аЬе1 = СЦаЬе1(,,Не11о \Л/ог1Ш")
1аЬе1.5Нохл/()
арр.ехес_()
Для приложения, использующего Ру5к1е, вы всегда должны начинать с
импорта соответствующего класса из модуля Р(\У1б§еЩ.
После импорта вы создаете экземпляр С^АррНсаПоп.
Так как Ос может получать аргументы из командной строки, вы можете
передать любой аргумент объекту рАррИсайоп.
После создания объекта приложения мы создаем метку рЬаЬе!.
После создания метки мы вызываем для нее метод зНош
И наконец, мы вызываем метод ехес, чтобы войти в основной цикл и
начать выполнение кода
1трог1: зуз
(гот РуСЦ5.СУ:\Л/|с1^е1:з 1троН: фАррНсаНоп, Сдаа1о^
1троП: зуз
(гот Ру51с!е6.СУ:\Л/|с1ее1:з 1тро11 фАррНсаНоп, 0.01а1о^
арр= 0.АррНса11оп(зуз.аг^)
\липс1о\м = <701а1о^()
\л/1пс1о\л/.зе1:6еоте1:гу(500, 300, 300, 200)
\лп пс1о\ЛАзе1:\Л/| пс!о\л<П1:1е('С С1 \Мпс1оуу')
\ЛА1ПС1о\Л/.зЬо\Аа()
зуз.ехЩарр.ехесО)
арр= ЦАррНса1:юп(зуз.аг^у)
\ли пс!о\л/ = СЮ1а1ое()
\мпс1о\ЛАзе1:0еоте1:гу(500, 300, 300, 200)
\лппс1о\ЛАзе1:\Л/|пс!оцмТгЫе('С1Л \Л/|Пс1о^’)
\ллпс1о\ллз1'1О\м()
зуз.ехЩарр.ехесО)
Теперь, чем отличается Ру8к1е от РуР(?
Обе библиотеки являются обертками Руйюп одной и той же среды
графического интерфейса
РуСН - это более популярная библиотека, выпущенная раньше Ру51с1е.
И долгое время РуОС была единственной доступной библиотекой Руйюп.
Однако в 2009 г. возник спор относительно того, под какой лицензией
следует выпускать РуОС, между создателями РуОС и создателями Ог
Поскольку группы не смогли прийти к соглашению, родилась новая
Руйюп библиотека Ру8!с1е.
Ру8к1е была выпущена под лицензией ЬОРЬ, тогда как РуР( была
выпущена под лицензией СРЬ.
Лицензия ЬСРЬ позволяет распространять код без необходимости
делиться своим исходным кодом.
Это позволяет разрабатывать коммерческие приложения с помощью
Ру8к1е.
Однако лицензия СРЬ не позволяет вам скрывать исходный код.
Короче говоря, если вы хотите разрабатывать и распространять
коммерческие программы на РуС& вам следует приобрести коммерческую
лицензию на
Вы все равно можете продавать программное обеспечение за деньги (без
коммерческой лицензии), но вам придется поделиться исходным кодом.
Это неприемлемо для большинства коммерческих программ.
Сравнение РуО1: и РуЗИе показывает, что обе библиотеки примерно
равны.
За исключением нескольких различий в синтаксисе в том, как
происходит импорт и запуск, синтаксис обеих библиотек абсолютно
одинаков.
И они используют одни и те же виджеты - виджеты ОС.
Ру*ис!еЕхагпр1е таИ.ру
В Рго|ес1 ▼ Ф Ф — 1г* тат-ру
Е* । ! 7------------------------------------------------------------
° т Ру5НеЕхатр1е :\и5€г\РусЬагтРго|€си\Ру51деЕка 1 ттрогТ зуз
1ц ► М уепу НЬгагу гоог ^гот РуБ16е6. рХИхйдеТз шрогЕ ЦАррПсаНоп, С)1аЬе1
ГП(НП.ру
□ ' III Ех1₽гпа1 ЬЬгапез ► 1-р____пате____== "_____та!п___:
| © 5сга1сЬе5 апс! Соп5о1ез арр = (ДОррИс а! 1оп (зуз. агду)
* ТаЬег = 01_аЬеТ.("Не1Ло ЙГогТП!")
ТаЬеТ.зКоиО
арр.ехес_()
Н_пате_ == "т^п"
Тептйпа1: Ьоса! +
МАсгоео^! йНпйоие [Уегзтоп 10.0.18362.387]
(с) Корпорация Майкрософт (Мтсгозо-РТ СогрогаИоп), 2919. Все права защищены.
(уепу) 0:\изег\РусЬагтРго1ес'1:$\Ру51йеЕхатр1е>р1р Хиз^аИ ру1пз1:а11-ег
Со1ЛесТ1пд рутпзГаТЛег
ОоипТоасНпд ру1пз1аП.ег-4.2-1аг.дг (3.6 МВ)
IНИМНШНННМММ11 5 6 мв 139 кВ/5
р!р 1П51а11 ру1п51а11ег
Теперь, как создать исполняемую программу Ру51с1е.
Для этого мы используем РуТпзЕаПег, инструмент который позволяет
заморозить приложение Руйюп в автономном исполняемом файле.
Этот установщик поддерживает Ыппх, тасОЗ, \У1пс1о\У5 и другие
операционные системы, а также совместим со сторонними модулями
Руйюп, такими как Ру8|с1е6.
Поэтому сначала установим Ру!п8(а11ег с помощью р!р.
И в коде используем функцию таю для запуска приложения.
ру1П5±а11ег та1п.ру
ру1П51а11ег -опеТПе та1п.ру
Далее в окне терминала наберем рут&аИег
тат
•РУ-
Этот процесс создает два каталога: ±81 / и Ьш1б /.
Исполняемый файл приложения и необходимые библиотеки помещаются
в каталог сИзЕ
Чтобы запустить приложение, перейдите в ±81 и запустите программу
В УУтскжз РуТпзюПег имеет возможность создать сборку из одного
файла, то есть один ЕХЕ-файл, который содержит весь ваш код, библиотеки
и файлы данных в одном исполняемом файле.
Чтобы указать однофайловую сборку, укажите в командной строке флаг -
опеШе.
ТкпПег
&
ТесН ЗоЮИопэ
Создание настольных Ру1Ьоп
приложений с 6111
Тк1п1ег
Ткийег - это обертка РуСЬоп библиотеки Тк С1Л, которая поставляется
вместе с РуШоп.
ТктпТег — РуИоп 1п1егТасе 1о Тс1/Тк
Зоигсе сос!е: 1|ЬЛк1п1ег/_____ИН____.ру
ТИе кк1п1ег раскаде (“Тк 1п1егТасе’т) 18 Иле з!алс!агс1 РуИчоп 1п1егГасе !о Иле Тк 61Л 1оо1кИ. В о ГН Тк апс!
ккхгкег аге ауаПаЫе ог тоз! Ып1х р1а1Тогтз, аз \л/е11 аз оп \МпсЗом/з зузГетз. (Тк кзе1Т (з по! раг! оТ РуНпоп; И
[з та1п!аНес1 а! Ас1г/е8!а1е.)
Рипптд руЬНсп -т кктгтЬег Тгот соттапс! Нпе зПоиМ ореп а \ллпс!о\л/ йетопз1гайпд а 51тр1е Тк
ТгИегГасе, 1ей1пд уои кпсм/ 1На1 -1к1п1ег 18 ргореНу 1пз1а11ес1 оп уоиг зуз^ет, апс! а1зо зИотипд у\/На1 уегзюп 01е
Тс!/Тк 13 1пз1а11ес1, зо уои сап геас! Иче Тс1/Тк с!оситеп!айоп зреете Го 1Па1 уегзюп.
Ткийег - это стандартная библиотека графического интерфейса для
Ру (Топ.
И Ткийег - это интерфейс Руйюп для Тк.
Ткийег - это аббревиатура от «Тк тШейасе».
Тк был разработан Джоном Остерхаутом как расширение графического
интерфейса для языка сценариев Тс1.
И Тк был очень популярен в 1990-х годах, так как его легче было изучать
и использовать, чем другие наборы инструментов.
Поэтому неудивительно, что многие программисты захотели
использовать Тк независимо от Тс1.
Вот почему были разработаны обертки для множества других языков
программирования, включая Рег1, Аба, Руйюп, ВиЪу и Согптоп Ызр.
ТкРго|ес1 та1п.ру
| Рго|ес± ▼ © “ 4 — >
ТкРго|ес1 □:\и5ег\Рус11агтРго|ес1:5\ТкРго|ес1
уепу ПЬгагу гоо!
1пс1ис1е
| ► иь
2 ► БспрЩ
1/1 _
гч = рууепу.ск]
гпат.ру
т .1'Г Ехкгпа! ВЬгапез
► < РуНюп 3.8 (ТкРгсуес±) > 0:\и5ег\РусКагтРго]
О 5сга1сИе5 апс! Соп5о1е5
та1п.ру
1трог1 1к1п1ер аз 1к
I
поо! = Тгк.ТкО
и = 1к.каЬе1Сгоо1/ 1ех1 = "Не1Ло Тк1п1еп!")
р“к<)
поо!.татпЪоорС)
/ & -их
Не11о Ткю1ег!
Создание приложения с графическим интерфейсом пользователя с
использованием Ткнйег - это несложная задача.
Все, что вам нужно сделать, это выполнить следующие шаги -
Импортировать модуль Ткнйег.
Создать главное окно приложения С131.
Добавить один или несколько виджетов в приложение с графическим
интерфейсом.
Войти в основной цикл событий, чтобы обрабатывать каждое событие,
инициированное пользователем.
Чтобы инициализировать йшйег, мы должны создать корневой виджет
Тк, который представляет собой окно со строкой заголовка.
Корневой виджет должен быть создан перед любыми другими
виджетами, и может быть только один корневой виджет.
Метод раск сообщает Тк, что размер окна подгоняется под заданный
текст.
И окно не появится, пока мы не войдем в цикл событий ТктЩег гпапйоор.
И наш скрипт останется в цикле событий, пока мы не закроем окно.
р!р 1п51а11 ру1п51а11ег
Тегт1па1: 1_оса1
Оепу) 0:\и5ег\РусПагтРгозес15\ТкРгозес1>р1р 1п51аИ ру1п5±а11ег
СоИесИпд ру1п51аИег
1151пд сасйей ру!п51:а'1Лег-4.2Лаг.дн [3.6 МВ)
1п51аШпд Ьи11_с1 йерепйепстез_____допе
беШпд геди1гетеп15 1о ЬиИй шйееТ________Йопе
Рперапхпд шНееЪ те!айа±а ____ Йопе
:= 6: ТООО ► 4: кип И Тегт1па1 & Ру1Ьоп Соп5о1е
Теперь, как создать исполняемый файл для приложения Ткпйег.
Для начала, установим инструмент рушз1аИег.
ТкРго]ес1 <1151: \ таю ехе
Рго|ес1 ▼ (Э Т Ф *“ -* та!п.ру
ТкРго]ес<: 0Ди5ег\РусЬатРго]ес15\ТкРг<уес1 1 1трргТ Тк1пТег а Б Тк
Ьсп1с1
т Ы <1151:
► Ш таю
таюгехе
▼ » иегп/ НЬгагу гоог
1пс1ис1е
► । иь
► $ 5сг1р15
= рууепу.сГд
и та|п.ру
• гга1Г1.5рес
11 СЛета! ИЫгане*
гооТ - Тк.ТкО
и = Гк.ЬаЬеХСгооТ, ТехТ="Не1Ло ТкТпТег!")
н.раск()
гооТ.гттпТоорО
ру)п51а Пег --опеТПе --\л/тс1о\л/ес1 тат.ру
► А < Ру1Ноп 3.8 (ТкРго|есГ1 > 0:\и5ег\РусНагтРгр]
Л БсгакНе? ап<1 Соп5о1е5
Тегггйпак 1_оса1
(уепу) 0:\и5ег\РусМагтРго]есТ5\ТкРгозес'1>ру1п5'1а11ег —опеТПе —ияпйощеб тахп.ру
70 1НР0: РуТпэТаИег: 4.2
71 1МР0: РуТИоп: 3,9.1
71 1ИР0: Р1эТ?огт: 1М1пс1ОИ5’10-1е . 0.18362-5Р0
; 72 1ИР0: игоТе 0:\иБег\РусГагтРго]есГ5\ТкРгозесТ\та1п.5рес
5 73 1МР0: ОРХ 15 по! ауаИаЫе.
* 75 11ЧР0: ЕхТепсИпд РУТНОИРАТН «1ТИ раТПБ
ТОСО 4: Кип Я Тегт1па1 Ф РугНоп Сопьо1е
Затем в окне терминала наберем команду рушз^аПег -опеШе -\утс1о\уес1
таш.ру
В результате в папке сПз!: будет создан один исполняемый файл.
Ггот 1к1п1ег 1трог1 *
/- □ X
Неу!? Ном/ нгеуои с!отд?
гоо1 = Тк()
уаг = 51пп§\/аг()
1аЬе1 = 1_аЬе1( гоо1,1ехЪ/апаЫе=уаг, ге11еГ=КА15ЕО )
уаг.5е1("Неу!? Нелл/ аге уои с!о1п§?")
1аЬе1.раск()
гоо1.та1п1оор()
Для создания графического интерфейса пользователя Тк предоставляет
виджеты, окна верхнего уровня и три менеджера геометрии.
И мы начнем знакомство с Тк с одного из самых простых виджетов - с
метки.
Метка - это виджет ТктШег, который используется для отображения
текста или изображения.
И метка - это виджет, который пользователь просто просматривает, но не
взаимодействует с ним.
Посмотрите на строку кода, которая содержит виджет ЬаЪе1.
Здесь первый параметр - это имя родительского окна, в нашем случае
«гоо[».
Так как наш виджет ЬаЬе! является потомком корневого виджета.
Параметр (ех( или Юхй/апаЫе определяет текст, который будет
отображаться.
Параметр геНе? задает внешний вид декоративной рамки вокруг метки.
По умолчанию - РЬ АТ.
Некоторые виджеты (например, виджеты ввода текста, переключатели и
т. д.) могут быть напрямую связаны с переменными приложения с
помощью специальных параметров: уапаЫе, 1ех1уапаЫе, опуа1ие, ойуа1ие,
и уа1ие.
И это связывание работает в обоих направлениях: если переменная
изменяется по какой-либо причине, виджет, к которому она подключена,
будет обновлен, чтобы отразить новое значение.
Эти управляющие переменные ТкпДег используются как обычные
переменные Руйюп для хранения определенных значений.
Но при этом невозможно передать обычную переменную виджету с
помощью параметра уапаЫе или (ехГуапаЫе.
Единственные типы переменных, для которых это работает, - это
переменные, которые являются подклассами класса УапаЫе, определенного
в модуле ТктСег.
Это переменные Ыпп^Уаг, 1щУаг, ЭоиЫеУаг, Воо1еапУаг.
Чтобы прочитать текущее значение такой переменной, можно вызвать
метод §еГ
Значение такой переменной можно изменить с помощью метода зе[.
1трогИк|п1ега51к
тазгег = 1к.Тк()
\л/Ьа1:еуег_уои_до = "\Л/Ьа1:еуег уои до ууИ1 Ье 1п51§пгПсап!, Ьи1 к 15 уегу
1трог1ап11:Ьа1:уои до к.\п(МаЬа1:та СапдЫ)"
гп5§ = 1к.Ме55а§е(та51ег, 1ех1 = м/На1еуегуои_до)
т5§.сопЛ§{Ь§=,||§Н1§гееп,/ к>п1={'Цте5', 24, 'ИаКс'))
тз^.раскО
1к.та1п1оор0
Виджет Меззгще можно использовать для отображения коротких
текстовых сообщений.
И виджет сообщения аналогичен по своим функциям виджету ЬаЬе1, но
более гибок в отображении текста, например можно изменить шрифт, в то
время как виджет метки может отображать текст только одним шрифтом.
Хотя невозможно использовать для текста более одного шрифта.
Если вам нужно отображать текст несколькими шрифтами, можно
использовать виджет Тех!.
Здесь мы используем метод сопй§ чтобы установить фон сообщения и
шрифт сообщения.
Тгате = Егате(гоо!)
Тгате.раск()
ЬиПопО.= !к.Ви!!оп(!гате,!ех!=''Ци1Т''Д§="гесГ, соттапс1=риП:)
ЬиНопС1.раск(51с1е=1ЕЕТ)
ЬиПопТ = ВиНоп(Ггате,1ех1="Не11о", соттапс1=5Л/п1е_51о§ап)
Ь иИо пТ. р а ск(51 с! е=ЬЕ ЕТ)
Виджет Вийоп используется для добавления кнопок в приложение
Руйюп.
Эти кнопки могут отображать текст или изображения, которые передают
назначение кнопок.
И вы можете прикрепить функцию или метод к кнопке, который будет
вызываться автоматически при нажатии кнопки.
Здесь мы создаем фрейм как родительский виджет для двух кнопок.
Первая кнопка с красной надписью С}1ЛТ, при нажатии на которую окно
закрывается - это встроенная команда ций, прикрепленная к кнопке.
Ко второй кнопке прикреплен метод \угйе_51о§ап, который печатает в
вывод текст.
х/ = 1к.1п1\/аг()
у.зеЦ!)
1апеиа§е5 = [(" РуПзоп", 101),(''РегГ', 102),("1ауа", 103),("С++",
104), ("С", 105)]
О©/" ек
СНоозе уоиг (ауоигйе
ргодгаттнгд 1апдиаде:
* Рубгоп
Г Рег1
|ауа
Г С
с1еГ 5Ио\л/СЬо1се():
рипЦу.^еЦ))
1к.1аЬе1(гоо1,1ех1=.'СЬоозеуоиг ГауоипГе рго§гатт)п§
1ап§иа§е:..., ]и5йГу = Гк.ЬЕЕТ, рас1х = 20).раск()
Тог1ап§иа§е, уа11п 1апЕиа§е5:
1к.КадюЬииоп(гоо1,1ех1=1ап§иа@е, радх = 20, уапаЫе=у,
соттапс1=5Ио\л/СИо1се, уа1ие=уа1).раск(апсКог=1к.\А/)
Радиокнопка представляет собой элемент графического
пользовательского интерфейса ТкпДег, который позволяет пользователю
выбрать одну опцию из предопределенного набора опций.
Радиокнопки могут содержать текст или изображения.
И кнопка может отображать текст только одним шрифтом.
С кнопкой можно связать функцию Руйюп.
Эта функция будет вызываться, если вы нажмете этот переключатель.
Таким образом, этот виджет реализует кнопку с множественным
выбором, которая является способом предложить пользователю множество
возможных вариантов выбора и позволяет пользователю выбрать только
один из них.
Чтобы реализовать эту функциональность, каждая группа радиокнопок
должна быть связана с одной и той же переменной, и каждая из кнопок
должна представлять только одно значение.
Радиокнопки названы в честь физических кнопок, используемых на
старых радиостанциях для выбора диапазонов волн или
предустановленных радиостанций.
Если была нажата такая кнопка, другие кнопки выскакивали, оставляя
нажатую кнопку единственной нажатой кнопкой.
И каждая группа виджетов радиокнопок должна быть связана с одной и
той же переменной.
Нажатие кнопки изменяет значение этой переменной на заранее
определенное значение.
Здесь у нас есть список «языков», который содержит тексты кнопок и
соответствующие значения.
И мы можем использовать цикл к>г для создания всех переключателей.
Список кортежей содержит как тексты, так и значения, которые будут
присвоены переменной V, если будет выбран соответствующий язык.
с1еГ рпп1_51а1:е5():
рппЦ"та1е: %с1ЛпТета1е: %сГ % (уаП.неЦ), уаг2.ееГ()))
уаг1 = 1п1:Х/аг()
уаг2 = 1пГХ/аг()
С1 = СКескЬиНоп(гоо1ДехГ = "та1е", уапаЫе = уаг1, опуа1ие = 1, оГЛ/а1ие = 0, Ке1еЫ=5,
ууцИН = 20)
С2 = СЬескЬиПоп(гоо1,1:ех1 = "Гета1е", уапаЫе = уаг2, опуа1ие = 1, <ЫТуа1ие = 0,
Ие!ёК1=5, \л/1с1Щ = 20)
С1.раск()
С2.раск()
Ь1п=Ви11оп(гоо1:, 1ех1:='51юиу', соттапс1=рпп1_51:а1е$)
Ып.раск()
Г та1е
Г (ета!е
5Ко«
СЬескЬийоп или флажок представляет собой виджет, который позволяет
пользователю делать множественный выбор из ряда различных опций.
Это отличается от радиокнопки, где пользователь может сделать только
один выбор.
Обычно флажки отображаются на экране в виде квадратных полей,
которые могут содержать галочки при выборе флажка.
Таким образом, флажок имеет два состояния: включен или выключен.
И флажок может содержать текст, но только одним шрифтом или
изображение.
Параметр уапаЫе является управляющей переменной, которая
отслеживает текущее состояние флажка.
Обычно эта переменная является переменной ЬйУаг, и 0 означает
очищено, а 1 означает установлено.
с1еГ еуа1иа1е(еуеп1):
ге5.сопЯ§иге{1:ех1-'Кезик:" + з1:г(еуа1(еп1гу.§еГ{))))
\л/ = Тк()
1_аЬе1(\л/, Гех1="Уоиг Ехргеззюп:").раск()
еп1гу = Еп1гу(ш)
еп1гу.Ыпс1{"<Ке1:игп>", еуа1иа1е)
егПгу.раск{)
гез = 1_а Ье1{\л/)
гез.раск()
/ - □ х
Уоиг Ехргеззюп:
зт(120)|
КезиШ 0.5806111842123143
Виджет ввода - это виджет Ткийег, используемый для получения ввода
данных от пользователя приложения.
Этот виджет позволяет пользователю вводить одну строку текста.
Если пользователь вводит строку, длина которой превышает доступное
пространство для отображения, содержимое будет прокручено.
Если вы хотите ввести несколько строк текста, вы должны использовать
виджет ТехЕ
И виджет ввода также ограничен одним шрифтом.
Как и с другими виджетами, можно дополнительно влиять на
отображение виджета с помощью параметров.
Здесь, в этом примере, мы предоставляем графический интерфейс,
который способен оценивать любое математическое выражение и печатать
результат.
Приложение Ткнйег большую часть времени работает внутри цикла
событий, вход в который осуществляется с помощью метода тапйоор.
Этот метод ждет событий.
И события могут быть нажатием клавиш или операциями мыши
пользователя.
И ТкпЧег предоставляет механизм, позволяющий программисту иметь
дело с событиями.
Для каждого виджета можно привязать функции Руйлоп к событию с
помощью метода учс1§е1:.Ьп1с1 (событие, обработчик)
Если определенное событие происходит в виджете, функция
«обработчик» вызывается с объектом события.
В этом примере используется событие <В.е1игп>, когда пользователь
нажимает клавишу Еп(ег.
И с этим событием связывается метод еуа1иа!е, который вычисляет
математическое выражение и печатает результат.
с = Сапуа5(\л/, \ллс1111=2ОО, Н1еЩ1ч1:=1ОО)
с.раск()
с.сгеаГе_гесГап§1е(50,20,150, 80, Я11="#476042")
с.сгеа1е_гес1апе1е(65,35,135, 65, ЛН="уе11о\л/")
с.сгеа1е_Ппе(0,0, 50, 20, Л11="#476042", чллс1Щ=3)
с.сгеаГе_Ппе(0,100, 50, 80, Л11="#476042", \ллсЦ:Ь=3)
с.сгеа1е_Ппе( 150,20, 200, 0, ЛН="#476042", У1/к1Щ=3)
с.сгеа1е_Ппе(150,80, 200, 100, ЛП="#476042", \ллсН:1п=3)
с1еГ рат1( еуеп1):
руЩоп_Егееп = "#476042"
х1, у1 = ( еуепСх -1), ( еуеп1.у -1)
х2, у2 = ( еуеп1.х + 1), ( еуеЫ.у + 1)
с.сгеа1е_оуа1( х1, у1, х2, у2, ЛИ = ру1Ьоп_йгееп )
с.Ыпс!( "<В1-Мо1юп>", рат1)
Виджет Сапуав предоставляет возможность рисования таких
графических объектов, как линии, круги, изображения и даже другие
виджеты.
С помощью Сапуав можно рисовать графики, создавать графические
редакторы и реализовывать различные виды пользовательских виджетов.
Метод сгеа(е_Ипе используется для рисования прямой линии.
Координаты здесь представлены четырьмя целыми числами: х1, у1, х2,
У2.
Это означает, что прямая идет от точки (х1, у1) к точке (х2, у2).
После этих координат следует разделенный запятыми список
дополнительных параметров, который может быть пустым.
Здесь мы можем установить, например, цвет линии.
Для создания прямоугольников есть метод сгеа1е_гес(ап§1е.
Координаты снова определяются двумя точками, но на этот раз первая -
это верхняя левая точка и далее нижняя правая точка прямоугольника.
Метод сгеа(е_Щх1 можно применить к объекту холста, чтобы написать на
нем текст.
Также есть методы сгеа(е_агс, сгеа!е_1та§е, сгеа(е_оуа1, сгеа!е_ро1у§оп.
Также можно организовать интерактивное рисование на холсте.
К сожалению, нарисовать одну точку на холсте невозможно.
Но мы можем решить эту проблему, используя небольшой овал.
Здесь мы связываем методом Ыпб с холстом событие мыши и метод раш,
который будет рисовать на холсте.
с1еГ5Ио\л/_уа1иез{):
рпт (511.ееГ(), 512.еес())
з11 = 5са1е(\л/, Тгот_=0, Го=42, Г|ск1п1:егуа1=8)
511.561(19)
511.раск()
512 = 8са1е(м/, Тгот_=0, Го=200,1епёГЬ=600Д1Ск1п1егуа1=10,
опеп1=НОК12ОМТА1.)
512.561(23)
512.раск()
ВиПоп(«/, 1ех1-$Но\л/', соттапс1=5Ьо\л/_уа1ие5).раск()
Слайдер или ползунок - это объект ТкпЧег, с помощью которого
пользователь может установить значение, перемещая индикатор.
И слайдеры могут быть расположены вертикально или горизонтально.
Ползунок создается с помощью метода 8са1е.
В качестве параметров можно установить минимальное и максимальное
значения, а также разрешение.
И мы также можем определить, хотим ли мы расположить слайдер
вертикально или горизонтально.
Виджет 8са1е - альтернатива виджету ЕпПу, если пользователь должен
ввести число из конечного диапазона, то есть предустановленное числовое
значение.
И мы можем увеличить длину слайдера с помощью параметра 1еп§(Ь,
который определяет размер х, если масштаб горизонтальный, и размер у,
если масштаб вертикальный.
Методом §е! мы можем получить значение ползунка.
5 = $сго11Ьаг(\л/)
Т = ТехЦ\л/, Ье1еЬ1=4, \л/1с11Ь=50)
5.раск(5к!е=К16НТ,Г|||=У)
Т.раск(51с1е-ЬЕРТ, ЯП=У)
Ьк#2
НАМЕЕТ: То Ье, О Г П01 То Ье--1Ьа1 15 1Ке диё5110П:
ИЬеГЬег 'Пэ поЫег хп 1Ье п±пс! Ю зи11ег
ТЬе зНпдз апй эггоуз о! ои1гадеоиз 1ог1ипе
Ог 1о 1аке ашз адахпз! а $еа о! 1гоиЫе$
5.сопЯ§(соттапс1=Т.уу1еуу)
Т.сопйв(у5сго11соттаг1с1=5.5е1)
ТЛа2_сопЛ2иге('Ь!е,,1:оп1;=(,\/егс1апа', 20, 'Ьо1с1'))
диоГе = """НАМЬЕТ: То Ье, ог по! Го Ье--ГЬаГ15 ГЬе яиезИоп:
\Л/ЬеГЬег '115 поЫег 1п гЬе пгппс1Го 5и<Тег
ТЬе апс1 аггом/5 оГоиГга^еоиз ТогТипе
ТЬаГЛезЬ 15 Ье1г Го. 'Т15 а сопзиттаГюп
ОетоиПуГо Ье уу15Ьес1."""
Т.1п5егГ(ЕМ0, яиоГе, 'Ы^')
Текстовый виджет используется для ввода многострочного текста.
Текстовые виджеты также могут использоваться как простые текстовые
редакторы или даже веб-браузеры.
Кроме того, текстовые виджеты могут использоваться для отображения
ссылок, изображений и НТМЬ, даже с использованием стилей С88.
Здесь мы создаем текстовый виджет с помощью метода ТехЕ
И мы устанавливаем высоту, то есть количество строк, и ширину, то есть
количество символов.
И мы можем применить метод шзегс, чтобы добавить текст в виджет.
Также мы добавляем полосу прокрутки в наше окно.
С этой целью Ткийег предоставляет метод 8сго11Ьаг.
И мы вызываем его с корневым объектом в качестве единственного
параметра.
И мы связываем полосу прокрутки с текстовым виджетом с помощью
параметра узсгоПсоттапсЬ
Ггот 1к!п1ег 1трог1 тезза§еЬох аз тЬ
с1еГ апз\л/ег():
тЬ.511о\меггог{"Ап8\л/ег", "Зоггу, по апз\л/егауа|1аЫе")
с1еГ са11Ьаск{):
И тЬ.азкуезпорХ/егИу', 'КеаНу диИ?'):
тЬ.5Ьо1ллл/агп1Пб{,Уе5', '14 о1 уе1 !тр1етеп1есГ)
е1зе:
тЬ.5ЬомлпГо('1\1о', 'ЦиН Наз Ьееп сапсеПесГ)
ВиНоп(1ех1=,ОиИ', соттапс1=са11Ьаск).раск(Л11=Х)
ВиПоп(1ех1=,Апз\л/ег',соттапс1=ап8\л/ег).раск{Л11=Х)
ТкпКег предоставляет набор диалогов, которые можно использовать для
отображения окон сообщений, предупреждений или ошибок или виджетов
для выбора файлов и цветов.
Существуют также простые диалоги, в которых пользователю
предлагается ввести строку, целые числа или числа с плавающей запятой.
Диалоги предоставляются подмодулем шезза^еЬох в бшйег и его
функциями.
Функция азкоксапсе! спрашивает, следует ли продолжить операцию и
возвращает истину или ложь.
Функция азкциезйоп задает вопрос.
Функция азкгейусапсе! спрашивает, нужно ли повторить операцию и
возвращает истину, если ответ положительный.
Функция азкуезпо задает вопрос и возвращает истину, если ответ
положительный.
Функция азкуезпосапсе! также задает вопрос и возвращает Пне, если
ответ положительный, или Моле, если он отменен.
Функция зйоу/еггог показывает сообщение об ошибке.
Функция зйошпГо показывает информационное сообщение.
Функция 511о\у\уагпт^ показывает предупреждающее сообщение.
1тот 1к|п1ег 1трог1 Л1есИа1ов аз И
Тгот 1кт1сг.со1огсЬоозег 1троН азксо1ог
с1еТ са11Ьаск():
пате - Гд.азкорепТПепатеО
рппЦпате)
гезик = а5ксо1ог(со1ог="#6А9662", Ш1е="ВегпсГз Со1оиг СКоозег")
рппЦгезиИ)
ВиНоп(1ехГ='Е|1еОреп',соттапй=са11Ьаск).раск(Т||1=Х)
Для чтения из файла или записи в файл ТкпДег предоставляет модуль (к
Г
Не
б
1а1о§ и его функцию авкорепШепате.
А для выбора цвета ТкпДег предоставляет всплывающее меню.
Для этого мы должны импортировать модуль со1огсйоовег и использовать
метод авкСо1ог.
с!еГ№\л/П1е():
рппГ("№иу РПе!")
с!еГОрепП1е():
пате = Гс1.а5корепГ|1епате()
рппГ(пате)
с!еГ АЬои1():
рппГ("ТН|5 15 а 51тр1е ехатр1е оГ а тепи")
ЕИе Не1р
М&л/
Ореп
тепи = Мепи(ш)
и\/.сопГ1ё(тепи=тепи)
Я1етепи = Мепи(тепи)
тепи.ас!с1_са5сас1е(1аЬе1="А1е", тепи=ГПетепи)
Я1етепи.ас1сИ:оттапс1(1аЬе1="№\л/"/ соттапс!=Ые\л/Е|1е)
Я1етепи.ас1с1_соттапс1(1аЬе1="Ореп"/ соттапсЬОрепЕПе)
Я1етепи.ас1с1_5ерага1:ог()
Н1етепи.ас1с1_соттапс1(1аЬе1="ЕхИ||/ соттапс^диИ)
Не1ртепи = Мепи(тепи)
тепи.ас1с1_са5сас1е(1аЬе1=|,Не1р", тепи=Не1ртепи)
Не1ртепи.ас1с1_соттапс1(1аЬе1="АЬоиГ/соттапс1=АЬои1:)
Ткпйег представляет возможность создавать раскрывающиеся меню, то
есть списки в верхней части окна, которые появляются или раскрываются,
если вы нажимаете на такой элемент, как, например, «Файл»,
«Редактировать» или «Справка».
Меню добавляется в окно с помощью метода сопй§ и параметра тепи.
Далее метод ас1с1_са8сис1е создает новое иерархическое меню, связывая
данное меню с родительским меню.
Метод абб_соттапб добавляет пункт меню в меню.
При этом параметр соттапб связывает с пунктом меню функцию.
тЬ= МепиЬиПоп (уу, 1ех1="сопсНтеп15", ге11еГ=КА15ЕО )
тЬ.раск(ПП=У)
тЬ.тепи = Мепи ( тЬ, 1еагоЯ = 0 )
тЬ["тепи"]= тЬ.тепи
тауо\/аг = 1п1\/аг()
ке1сИ\/аг= 1пЬ\/аг()
тЬ.тепи.ас1с1_сИескЬиПоп( 1аЬе1="тауо", уапаЫе=тауо\/аг)
тЬ.тепи. ас1с1_сЬескЬиПоп (1аЬе1="ке1:сИир", уапаЫе=ке1сЬ\/аг)
Кнопка меню - это часть раскрывающегося меню, которое постоянно
отображается на экране.
И кнопка меню может отображать варианты выбора для этого меню,
когда пользователь нажимает на нее.
Здесь параметр геНеР определяет эффекты затенения границ кнопки.
Метод абб_сЬескЬийоп добавляет флажок как пункт меню, так как
каждая кнопка меню связана с виджетом меню.
Сгееп Огазь
В1ие 5ку
о® -
Код 5ип
V/ = 1к.1_аЬе1(гоо1:, 1ех1="Кес1 5ип", Ьв="гесГ, Т§="\л/Ьке")
V/ = 1к.1_аЬе1(гоо1л 1ех1="Сгееп бгазз", ЬЕ="е1’ееп", Те="Ыаск")
ш = {к.ЬаЬеЦгоск, 1ех1="В1ие 8ку", Ь§="Ыие", Гв="м/Ьке")
\л/.раск(ТШ=1к.Х, рас!х=10)
>л/.раск(ГП1=кк.Х, рас!у=10)
>л/.раск(|рас1х=10)
\л/.раск(|рас!х=10)
м/.раск(рас!х=5, рас!у=10, зк!е=1к.1-ЕГТ)
Огееп бгам
В1ие Зку
ОО® (к
Огееп Сга$5
В1ие 5ку
Теперь давайте познакомимся с менеджерами компоновки или
менеджерами геометрии, как их также иногда называют.
Ткпйег имеет три менеджера компоновки раск, и р1асе.
И не разрешено смешивать три менеджера компоновки в одном главном
окне!
Менеджеры геометрии выполняют различные функции, такие как
расположение виджетов на экране, регистрация виджетов в системе,
управление отображением виджетов на экране.
Размещение виджетов на экране включает в себя определение размера и
положения компонентов.
Виджеты могут предоставлять информацию о размере и выравнивании
менеджерам геометрии, но менеджеры геометрии всегда имеют последнее
слово по позиционированию и размеру.
Раск - самый простой в использовании из трех менеджеров геометрии.
Вместо того, чтобы точно объявлять, где должен отображаться виджет на
экране дисплея, мы можем объявить позиции виджетов относительно друг
друга с помощью команды раск.
Параметр ехрапб команды раск - если установлено значение Цие, виджет
расширяется, чтобы заполнить любое пространство родительского виджета.
Параметр Ш1 определяет, заполняет ли виджет дополнительное
пространство, выделенное ему, или сохраняет свои собственные
минимальные размеры: ГОЧЕ (по умолчанию), X (заливка только по
горизонтали), У (заливка только по вертикали) или ВОТН (заливка как по
горизонтали, так и по вертикали).
Параметр ыде определяет, какая сторона родительского виджета общая:
ТОР (по умолчанию), ВОТТОМ, ЬЕГТ или К1СНТ.
Параметр радх - внешний отступ по горизонтали.
Параметр раду - внешний отступ по вертикали.
Параметр традх - внутренний отступ по горизонтали.
Параметр траду - внутренний отступ по вертикали.
В - Тк1пГег.Ви1:Гоп(1:ор,1ех1 ="Не11о", соттапс! - КеПоСаПВаск)
В.раск()
В.р1асе(Ьогс1егтос1е=О11Т5ЮЕ, Не!е111=1ОО, \ллс11:1п=1ОО)
Компоновка Р1асе позволяет явно установить положение и размер
виджета в абсолютном выражении или относительно другого виджета.
То есть этот менеджер геометрии упорядочивает виджеты, помещая их в
определенную позицию в родительском виджете.
Параметр апсйог метода р1асе позволяет указать привязку виджета, это
может быть И, Е, 8, XV, 1МЕ, ГАУ, 8Е или 8ХУ, то есть направления по
компасу, указывающие углы и стороны виджета, по умолчанию это ГАУ
(левый верхний угол).
Параметр 1эогс1егтос1е указывает, что другие параметры игнорируют
границу родителя или нет.
Параметры Нещ1щ XV 1с1 Нз указывают высоту и ширину в пикселях.
Параметры х, у указывают смещение по горизонтали и вертикали в
пикселях.
со1оиг$ = [|гес1|,1ёгееп',|огап§е|,|'л/1111е','уе11оАл/','Ыие|]
г = 0
Тог С 1П со1оиг5:
1к.1аЬе1(гех1=с, геКеТ=1к.НЮ6Е, \ллс1Щ=15).8П(1(го\л/=г,со1итп=0)
1к.ЕпГгу(Ь§=с, геИе1=Гк.5имКЕи,мс1Щ=10).ёпс1(гом=гло1итп=1)
г = г+ 1
Компоновка Спб помещает виджеты в двухмерную таблицу, которая
состоит из ряда строк и столбцов.
И положение виджета определяется номером строки и столбца.
То есть этот менеджер геометрии организует виджеты в виде таблицы в
родительском виджете.
Виджеты с одинаковым номером столбца и разными номерами строк
будут располагаться друг над другом.
Соответственно, виджеты с одним и тем же номером строки, но с
разными номерами столбцов будут находиться в одной «строке» и будут
располагаться рядом друг с другом.
При этом размер сетки не нужно определять, потому что менеджер
автоматически определяет наилучшие размеры для используемых
виджетов.
Ггате = Ргате(гоо1:)
Ггате.раск()
ЬоНотГгате = Егате(гоо1)
ЬоПотГгате.раск( 5Ие = ВОТТОМ )
гесИэиНоп = ВиПоп(Ггате, 1ехГ="ВесГ, Г^-ТесТ)
гес1ЬиГ1оп.раск( 5Ие = !_ЕРТ)
ЕгеепЬиПоп = ВиГГоп (Ггате, ГехГ-’Вгоиуп", Ге-'Ьгоууп11)
ЕгеепЬи1:1:оп.раск( 5Ие = 1_ЕРТ )
ЫиеЬиПоп = ВиПоп(Ггате, 1ехГ="В1ие", Гд="Ыие")
ЫиеЬиПоп.раск( 5Ие = ЬЕЕТ )
ЫаскЬиИоп = Вииоп(ЬоПотГгате, 1ехГ="В1аск", Гё="Ыаск")
ЫаскЬиГ1оп.раск( 5Ие = ВОТТОМ)
Виджет Ргате работает как контейнер, который отвечает за
расположение других виджетов.
И фрейм также можно использовать в качестве базового класса для
реализации сложных виджетов.
1Ы = и$1Ьох(1ор)
1Ы.1П5егЦ1, "РуЦпоп")
1Ы.1П5егЦ2, "РегГ)
1_Ы.1П5егЦЗ, "С")
1_Ы.1П5егЦ4, "РНР")
1_Ы.1П5егЦ5, 'Ч8Р")
1_Ы.1П5егЦб, "КиЬу")
1Ы.раск()
Виджет 1л8(Ьох используется для отображения списка элементов, из
которого пользователь может выбрать несколько элементов.
Метод §е1 возвращает кортеж, содержащий текст строк с индексами от
первого до последнего включительно.
Если второй аргумент опущен, возвращает текст строки, ближайшей к
первой.
1троН1:к1п1ега5 1к
Ггот 1к1п1ег 1трог1 *
€гот 1к|п1ег 1троН Пк
-/ □ X
ТаЫ |ТаЬ 2|
ТаЬ2
гоо! = Гк.Тк()
гоо1Л111е("ТаЬ \Л/к1§еС’)
гаЬСопЬго! = Пк.1\1о1еЬоок(гоо1)
гаЫ = ик.Егате(1аЬСоп1го1)
гаЬ2 = Пк.Егате(1:аЬСоп1го1)
1аЬСоп1го1.ас1с1(1:аЫ, 1ех1='ТаЬ 1')
1аЬСоп1го1.ас1й(1аЬ2,1ех1='ТаЬ 2')
1аЬСогПго1.раск(ехрапс1=1, ТШ="ЬоХЬ")
Пк.ЬаЬеЦхаЫ, 1ех1='ТаЫ').§пс!(со1итп=0, го\л/=0, расЗх=ЗО, рас!у=ЗО)
Пк.1_аЬе1(1:аЬ2,1ех1='ТаЬ2').ёпс1(со1итп=0, го\л/=0, рас!х=ЗО, рас1у=ЗО)
гооСта1п1оор()
Модуль Ткпйег предлагает широкий спектр виджетов, которые можно
использовать для разработки приложений с графическим интерфейсом.
Модуль йшйег.йк служит улучшением уже существующего модуля (к.
И модуль Т(к предоставляет 18 виджетов, 12 из которых есть в модуле
Ткпйег.
Добавленные виджеты - это СошЬоЬох, МЫеЬоок, 81хе§пр, Рго^геззЬаг,
ЗерагаГог и Тгееу1е\у.
Здесь мы показываем создание виджета с вкладками.
Виджет йк.МощЬоок управляет коллекцией окон и отображает их по
одному.
Каждое дочернее окно связано с вкладкой.
И пользователь может выбирать по одной вкладке за раз, чтобы
просмотреть содержимое окна.
К1уу
М ТесН гоЮЫопг
Создание настольных Ру1Ноп
приложений с 6111
К|7у
Кгуу - это многоплатформенная среда разработки приложений для
Руйтоп, которая позволяет разрабатывать приложения для Шпбоиъ, Ыпих,
Апбготб, тасО8, Ю5 и НазрЬеггу РЕ
о
Кму - Ореп зоигсе РуГНоп НЬгагу Гог гар!с1 с1е7е1ортепГ оГаррПсайопз
Юуу позволяет разрабатывать мобильные приложения с поддержкой
мультитач и дает возможность создать приложение один раз и использовать
его на всех устройствах.
Она также позволяет получать доступ к мобильным АР1-интерфейсам
для управления такими вещами, как камера на телефоне, отслеживание
ОРЗ, вибратор и т. д.
Юуу включает в себя различные модули для воспроизведения видео
файлов и потоков.
Юуу использует широкий спектр виджетов, поддерживающих мультитач
и жесты.
Киви использует РуСате для простого создания игр.
И РуОате поставляется с различными модулями для рисования форм,
работы с цветами и воспроизведения музыки.
р!р 1Л51а11 кп/у[Ьа5е] к|уу_ехатр1е5
Тегт1па1: 1_оса1 +
М1СГ050П: Ш1пс1ош5 [Уег51оп 10.0.18362.387]
(с) Корпорация Майкрософт (М1сго5о-Г± СогрогаИоп), 2019. Все права защищены.
(уепу) С:\115ег5\ц5ег\Рус1пагтРгоз'ес±5\К17уРгоэес±>р1р 1п51:а11 к1уу[Ьа5е] к1уу_ехатр1е5
СоПесИпд к!уу[Ьазе]
ВошпЪоасИпд К1уу-2.0.0-ср39-ср39-ш1п_атс164 (4.1 МВ)
1П111111П1П1111П1111111111П1 МВ 3.3 МВ/5
СоПесИпд к1уу_ехатр1е5
ВошпЪоасИпд К17у_ехатр1е5-2.0.0-ру2.руЗ-попе-апу.ш111 (9.2 МВ)
11111Н111П111П11П11111111111 9-2 МВ 1.3 МВ/г
СоПесИпд кхуу-йерз.д!еш~=©.3.0
ВошпЪоасИпд к1уу_с1ер5 .дЪеш-0.3.0-ср39-ср39-ш1п_атс164 (123 кВ)
П111111111П1ПППП1Ш1111П1 123 кБ 1>6 мв/5
:= 6: ТОСО Ф Р\4Ьог Соп5о1е 3 Телята!
Для разработки Киви приложения создадим проект в
РуСЬагт
и в окне терминала наберем команду установки Киви.
I Рго)ес(: -г © -г- $ —
► сатега
! ► сапуаз
► соп1а1пег
соуег
; дето
। ► к|уусаТа1од
► тиНзТтоке
► р1с1иге5
► зЬадегедког
зЬоуусазе
► Г с1аЪа
= апс!го1с1.Ш
и та1п.ру
= КЕАОМЕ.Ы
зЬоуусазе.кл/
► 1 ЪзисЫгасег
сатега_ри221е.ру
► (гатеууогкз
\5Ьаге\к1уу-ехатр1е5\с1ето\511о\л/са5е\та1п.ру
Далее мы можем запустить готовые примеры приложений Киви.
(троп кН/у
Тгот кй/у.арр !трог1 Арр
Тгот к1уу.и!х.1аЬе1 [троп 1_аЬе1
# ОеНтпе а с1а$5
с1а$5 МуЕ|Г5ТК|ууАрр(Арр):
# ЕипсТюпТЬаТ геТигпз
# ТЬе гоо!
с1еТ ЬиИсЦзеН):
# 1аЬе1 \л/1ТН 1ех1 Не11о \Л/ог1с115
# геТигпес! а$ гооТ мс^еТ
геТигп 1_аЬе1(1ех1="Не11о \Л/ог1с1 I")
1_аЬе1(1ех1:=" [со 1о г=ТТЗ333] [Ь] 1а Ье I [/Ь] 15
Ас1 с1 ес1 [/со 1о г]\п [со1ог=ЗЗЗЗТТ]5сгееп
!!:):):):)[/ со1ог]",Топ1_512е=,205р',
тагкир=Тгие)
МуНг51КмуАрр().гип()
И мы можем сами теперь создавать Киви приложения.
Прежде всего мы должны импортировать ктуу.
Теперь, чтобы создать интерфейс Ктуу, нам нужно импортировать модуль
приложения Арр.
Далее импортируем метку.
И определим класс с функцией, которая возвращает корневой виджет -
метку.
Затем инициализируем класс и вызовем его метод пт, запустив
приложение Киви.
К метке мы также можем применить стиль, то есть увеличить текст,
размер, цвет и многое другое.
Вы можете изменить стиль текста с помощью разметки текста Тех!
Магкир.
Инр5://кшу.огз/с1ос/8иЬ1е/8шс1е/раска81Пё.1Нт1
Ргодгатттд Сшс1е » Раскадтд уоиг аррПсайоп
• СгеаСе а раскаде Гог \Л/1пс1о^5
о кедшгетепЕ
• РуТпзйИег с1еГаи1г Ноок
о Раскад1пд а з1тр1е арр
с 51пд1е Н1е АррИсайсп
о Випс!1|пд 0а1а Н1ез
о Раскадпд а уИео арр ШН дзГгеатег
• Оуепмпйпд Ше йеГаик Коо к
о 1пс1исНпд/ехс1исйпд укко апс! аис)ю апс! гесЬапд арр з!ге
о АкетаГе 1п51а11айоп5
• Сгеа1:е а раскаде Гог Апс1гозс1
° ВиМогег
о Раскад1пд ру1±юп-Гог-апс)го1с5
о Раскадпд уоиг аррНсабоп Гог СЬе Кку ЬаипсИег
о Не1еазе оп СКе тагке!
о ТагдеГгпд Апдго1с1
• К|уу оп Апс1го1с1
о Раскаде Гог Апс1го1сЗ
о ОеЬидд!пд уоиг аррКсаЬоп оп Гке Алс1го1д р1аГГогт
о изтд Ап(1го1с1 АРЕ
о Б1а1:и5 оГ гЬе Рго^есГ апс! ТезГес! Оеукез
• Сгеайпд раскадез Гог 05 X
о Цд|пд Ше К^у 5РК
Упаковка Киви приложения в исполняемый файл для различных
платформ достаточно сложная и не всегда обходится без сложностей и
ошибок.
Подробные инструкции для упаковки приложения можно найти в
документации.
беГ ЬиПсЦзеГГ):
Ь = Вох1ауои1(опеп1а1юп='уегйсаГ)
# АйсНп^ Ще Хех!1при!
I - Тех11при1(Гоп1_812е=50,
$12е_Ыпг_у=Мопе,
Ье1§11!=100)
1= Е1оа!1_ауои!()
# Ву гЬ 15 уои аге аЬе1!о тоуе !Ье
# Тех! оп !Ье зсгееп То апум/Ьеге уои \л/ап1
5 = 8са!!ег()
I = 1_аЬе1(1ех1="Не11о I", Хоп!_512е=50)
Еадс!_\л/гс1§е1(5)
5 .ас1с1_\А/1с1|’е1(1)
Ь.адс1_\л/1с1ееф)
Ь.ас1с1_\ллс1ёе1(0
# ВтсКпё I! \л/1!1п !Ье 1аЬе1
!.Ыпс!(!ех!=1.5е!!ег('!ех!'))
геТигп Ь
к»уу
Виджет ТехйпрШ предоставляет поле для редактирования простого
текста.
Этот виджет поддерживает Цшсобе, шпТШше, курсорную навигацию,
выделение и буфер обмена.
И Техйпрш использует две разные системы координат - (х, у) -
координаты в пикселях, в основном используются для рендеринга на
экране и (со1, го\у) - индекс курсора в символах / строках, используемый
для выделения и перемещения курсора.
Чтобы создать однострочный текстовый ввод, можно установить для
свойства ТехЙпрШ.тиЙШпе значение Раке.
Здесь параметр 812е_Ыш - это набор значений, используемых макетами
для управления размерами своих дочерних элементов. Он указывает размер
относительно размера макета, а не абсолютный размер в пикселях.
Если вы не хотите использовать 812е_Ыш для ширины или для высоты,
установите значение параметра Мопе.
В этом примере Зсайег используется для создания интерактивных
виджетов, которые можно поворачивать и масштабировать двумя или более
пальцами на системе мультитач.
Компоновка ВохЬауоШ размещает виджеты вертикально один над
другим или горизонтально один за другим.
И методом Ь1пс1 мы связываем значения двух виджетов - метки и поля
ввода.
с1еТ Ьш1с1(5е11):
1ауои1 = ОпсИауоиЦ)
1ауои1.со[5=2
1ауои1.адс1_уу!с1$е1:(1.аЬе1(1ех1:='Ма1е'))
5е1Т.асГме = СИескВох(асГ1Уе=Тгие)
1ауои1.ас1с1_5л/1с1§е1:(5е1Г.ас11Уе)
5е1Т.1Ы_ас1К/е = 1_аЬе1(1ех1='СКескЬох18 оп')
1ауо и!. ад с!_\л/ (5е И. I Ы_а с1 К/е)
5е 1Т. ас1! уе Ъ1 п с! (а с11 уе=зе 1Т. о п _с И ес к Ьох_Ас1п/е)
ге1:игп 1ауои1
с!еТоп_сЬескЬох_АсГ1Уе(5е1Т, сЬескЬох1п51:апсе, 15АсгК/е):
15Ас1К/е:
8е1Т.1Ы_ас11Уе.1ех1 = "СИескЬох [5 О1\1"
рпп1("СИескЬохСИескесГ)
е1зе:
зе1'Г.1Ы_ас1:1Уе.1:ехг = "СИескЬох 15 ОРР"
рппЦ"С11ескЬох ипсИескесГ)
Виджет СЬескВох - это особая кнопка с двумя состояниями, которую
можно установить или снять.
Если флажок находится в группе, он становится переключателем, в этом
случае одновременно можно выбрать только одну кнопку.
Здесь мы для класса приложения устанавливаем два свойства асйуе, с
которыми связываем флажок и метку.
Затем с помощью метода Ыпс! мы связываем с флажком функцию,
которая обрабатывает выбор флажка.
В результате при выборе флажка изменяется свойство асйуе класса,
которое связано с меткой.
1трогГ к!уу
Ггот к1уу.и1х.с1горс1оу\/п 1трог! ОгорОошп
Ггот к1Уу.и1Х.ЬиПоп 1трогГ ВиНоп
Ггот ки/у.Ьазе 1трогГ гипТоисИАрр
# сгеаГе а с!горс1ошп ууЧИ 10 ЬиПопз
с!горс1оууп = ОгорОо\л/п()
Гог 1пс1ех 1п гап^е(Ю):
Ып = ВиПоп(ГехГ=|\/а1ие % сГ % Iпс^ех, 51?е_1"нп1:_у=Ыопе/ Ие1ёЫ:=40)
ЬГп.Ыпс1(оп_ге1еа5е=1атЬс1а Ып: с1горс1ом/п.5е1есГ(ЬГпЛехГ))
с!горс1ошп.ас1с1_^1с1ёе1:(Ы:п)
# сгеаГе а та!п ЬиПоп
татЬиИоп = Ви!!оп(!ех!-0гор1!ет5', 512е_И|п!=(Мопе, Ыопе), роз=(350,300))
та1пЬииоп.Ь1пи(оп_ге1еа5е=игордоууп.ореп)
<1гордошп.Ыпд(оп_5е1ес1=1атЬс1а 1П51апсе/ х: 5еГаПг(та1пЬи1:1:оп, ЧехГ^х))
# И уои разз оп1у а 1п гипГоисИАррО, а ХЛЛпс!о\л/ >лл11
# Ье сгеаГес! апс! уоиг \лд11 Ье асМес! Го Изе и\япс1ош
# аз ГИе гооГ \ллс1^е1:.
гипТоисИАрр(та1пЬи1:1:оп)
Выпадающий список можно использовать с другими виджетами. Потому
что можно отображать список виджетов под отображаемым виджетом.
В отличие от других наборов, список виджетов может содержать виджет
любого типа: простые кнопки, изображения и т. д.
При добавлении виджетов в список нам нужно указать высоту вручную
(отключив 812е_Ып1_у), чтобы раскрывающийся список мог вычислить
необходимую площадь.
И все кнопки в раскрывающемся списке будут запускать метод
ПгорПо\уп.8е1есГ().
После его вызова текст основной кнопки будет отображать выбор из
раскрывающегося списка.
Здесь в этом примере мы создаем раскрывающийся список ОгорОомп и
добавляем в него кнопки методом ас1с1_\У1с1§е.
При этом мы связываем с кнопками метод бгорбо\уп.8е1есЦ передавая в
него текст кнопки.
Далее мы создаем виджет - кнопку и связываем с ней метод
с1горс1о\уп.ореп.
Таким образом, при нажатии кнопки список раскрывается.
И в этом примере мы запускаем приложение с помощью метода
гипТоисЬАрр.
Это статическая функция, запускающая цикл приложения.
Если вы передадите в гшДоисНАрр виджет, будет создано окно, и виджет
будет добавлен в это окно как корневой виджет.
1ауои1 = СпсИауои1(со15=1, 5раап§=10, 512е_ГипГ_у=1Мопе)
# Маке 5иге ГИе Ке1§ИГ15 5исИ гЬа1ГНеге 15 5огпеГЫп§Го 5сго11.
1ауои1.Ыпс1(т1П1тит_Не1ёЫ:=1ауои1.5еиег('Не1§Ы'))
\Л/1пс1о\л/.с1еагсо[ог = (1,1,1,1)
\Л/|пс1о\л/.512е = (200, 400)
Гог 11п гапее(ЮО):
[Ы = 1аЬе1(1ехГ=5Гг(|), 512е_ЫпГ_у=1\1опе, Г1е1ёЫ:=40, со1ог=(1,0,1,1))
1ауо и!. ас1 сНлпс1ее1 (IЫ)
© - п X
37
38
39
40
41
42
43
44
гооГ = 5сго11\Неуу(512е_ЫпГ=(1, ГМопе), 512е=(\Л/1пс1о\лл\ллс11:Р|, \Мпс1ожЬе1§1'11))
гооГ.ас!с1_\л/Иее1(1ауои1:)
гипТоисГ1Арр(гоо1:)
Виджет 8сго11 У1е\у предоставляет прокручиваемое окно просмотра.
И 8сго11У1е\у принимает только один дочерний элемент и применяет к
нему прокрутку в соответствии со свойствами зсго11_х и 5сго11_у.
По умолчанию 8сго11 У1е\х позволяет прокручивать по осям X и У.
Вы можете явно отключить прокрутку по оси, установив для свойств
с1о_8сго11_х или с1о_5сго11_у значение Гаке.
И вы должны тщательно указать размер вашего контента, чтобы
получить желаемый эффект прокрутки.
По умолчанию 812е_Ып1 равен (1, 1), поэтому размер содержимого точно
соответствует вашему 8сго11 У1е\х и вам нечего будет прокручивать.
Вы должны деактивировать хотя бы одну из инструкций 812е_Ып1 (х или
у) дочернего элемента, чтобы включить прокрутку.
Здесь, чтобы прокрутить СпбЬауоШ по оси У по вертикали, установим
ширину дочернего элемента равной ширине 8сго11\/1е\х (812е_Ып(_х = 1) и
установим для свойства 81хе_Ып1:_у значение Мопе.
Здесь мы также используем класс \У1пс1о\х - базовый класс для создания
окна Ктуу по умолчанию.
Мы используем свойство с1еагсо1ог, чтобы установить фон окна и
свойство зтхе, чтобы установить размер окна.
Для метки мы используем параметр со1ог, чтобы установить цвет текста.
зНбе-6
гоо( = СагоизеЦсИгесЦоп =' п§Ы', 1оор=Тгие) .
Тог 11п гап§е{10): 1
зге = 'ЪЧр://р1асе1ю1с1.И/480х270.рп§&1ех(=5||с1е-%с1&.рп§" %\
И и81п§ АзупсИгопоиз [та^е
1та§е = Азупс1та§е(зоигсе= зге, а11о5Л/_51ге1сЬ = Тгие)
гоо1. а с1 с1_\л/1 с1ёе1 (1 т а§е)
С1оск.зсИес1и1е_1п1егуа1(гоо1.1оас1_пех1,1)
гипТоисИАрр(гоо1:)
Виджет «Карусель» представляет собой классический удобный для
мобильных устройств вид карусели, в котором можно перемещаться между
слайдами.
Вы можете добавить любой контент в карусель и заставить его
перемещаться по горизонтали или вертикали.
Этот виджет может содержать изображения, видео или любой другой
контент.
Здесь мы асинхронно загружаем изображения в карусель и используем
класс С1оск, чтобы автоматически перемещаться между слайдами.
5ирегВох = Вох1^уоиГ(опепГаГюп=|уегНсаГ)
НВ = Вох1ауои1(опеп1а1юп='Нопгоп1:аГ)
Ып1= ВиГГоп(ГехГ="Опе")
Ып2 = Вииоп(ГехГ="Ъ/Уо")
НВ.ас1с1_\ллс1§еГ(ЬГп1)
НВ.ас1с1_ш1с1§е1:(Ы:п2)
А/В = Вох1ауоиГ(опеп1а1юп='7ег1:1саГ)
ЫпЗ = Вииоп(1:ех1:="ТНгее")
Ып4 = Вииоп(1:ех1=|’Роиг11)
УВ.ас1с1_\л/1с1ёе1:(Ы:пЗ)
УВ.ас1с1_\ллс1Ее1:(Ь1:п4)
5ирегВох.ас1сМллс1де1:(НВ)
5ирегВох.ас1сМллс1§е1:(УВ)
гипТоисНАрр(5ирегВох)
Ып1 = ВиНоп(1ех1='Не11о', 31ге=(200, 100), 312е_Ып1=(Нопе,
Мопе))
Ып2 = ВиПоп(1ех1='К1Уу', 31ге_Ып1=(.5, 1))
ЫпЗ = ВиПоп(1:ех1:='\Л/ог1с1312е_Ып1:=(.5, 1))
Компоновка ВохЬауои! упорядочивает виджеты либо вертикально, либо
горизонтально.
Ориентацию компоновки определяет параметр опеШайоп.
И если вы не укажете размер, тогда дочерние виджеты делят размер
своего родительского виджета поровну.
Если указать параметр 812е_Ып1:, он будет использовать доступное
пространство после вычитания всех виджетов фиксированного размера.
с1еГоп_7а1ие(|П51:апсе/ЬпёЫ:пе55):
ЬпёЫпе55\/а1ие.ГехГ = "%сГ % Ьп^Ыпезз
Ьг1§Н1пеззСопГго1 = 81Иег(т1П = 0, тах= 100,опепГа1юп-уегйсаГ,
уа1ие_1гаск = Тгие,7а1ие_!гаск_со1ог =[1,0, 0,1])
1ауои1= епс11_ауои1:(со15=4)
# 1зГ гош - опе 1аЬе1, опе з1Иег
1ауоиГ.адс1^шИ§еГ(1аЬе1(ГехГ=|Ьп§ИГпе551))
1ауои^ас1с1_М1с1§е!(Ьп§И!пе55Соп!го1)
# 2пс! гош - опе 1аЬе1 Гог сарйоп,
# опе 1аЬе1 Гог з1к1ег уа1ие
1ауоиГас1с1_Ш1с1ёе1(ЬаЬе1(1:ех1:=|51|с1ег \7а1ие'))
Ьп§Ы:пе55\/а1ие = 1_аЬе1(1ех!-О')
1ауоикас1с1_Ш1с1ёе1:(ЬпёИ1:пе55\/а1ие)
# Оп ГИе з1 Иег оЬ]есГ АПасИ а саНЬаск
# Гог ГИе аКпЬиГе патес! уа1ие
ЬпёЫпеззСоп1:го1.Ь|пс1(уа1ие=оп_уа1ие)
гипТоисИАрр(1ауои1:)
Виджет 8Нс1ег используется для увеличения яркости, громкости и т. д.
Этот виджет поддерживает горизонтальную и вертикальную
ориентацию, минимальные / максимальные значения и значение по
умолчанию.
Здесь параметр уа1ие_Ггаск определяет, должен ли ползунок рисовать
линию между значением тш и значением ползунка.
Параметр уа1ие_йаск_со1ог определяет цвет этой линии в формате г§Ьа.
И методом Ыпс1 мы связываем со значением ползунка функцию оп_уа1ие,
в которой мы изменяем текст метки.
с!еГ опВиПопРге55(ЬиПоп):
1ауоиГ = 6пс11ауои1:(со15=1/ рас!с11пд=10)
рорирЬаЬе! = 1аЬе1(1ехГ="С1|ск Гог рор-ир")
с1о5еВиПоп = ВиПоп(ГехГ="С1о5еГ11е рор-ир")
I а уо и 1:. а с! с!_\лл с! (ро р и р 1_а Ье I)
I а уо и к а с! с!_мк1 Ее! (с1 о$е В и Поп)
# 1п51апНа1е1Ье тос!а1 рорир апс! сНэр1ау
рорир = Рорир(й11е='0ето
Рорир\соп1егП=1ауоикаи1о_сЛ5ГГН55=Еа15е, 512е_Ып1=(Мопе,
1\1опе), 51ге=(200,200))
рорир.ореп()
# АПасИ с1озе ЬиПоп ргезз \ллГГ| рорир.сН5т155 аскоп
с1о5еВиПоп.Ь1пс!(оп_рге55=рорир.<1!5т15з)
СопНё-аеГС^гарЫсз1, 'ге512аЫе', Тгие)
1ауоиГ = <3гк1!_ауои1:(со15 = 1, рас!сНп§ = 10)
ЬиПоп = ВиПоп(1:ех1:="С1|скГог рор-ир")
1ауоикас1с1_\л/1с1ёе1:(Ьи1:1:оп)
# АПасИ а саНЬаск Гог ГИе ЬиПоп ргезз еуепГ
ЬиПоп.Ь|пс!(оп_рге55=опВи1:1:опРге55)
гипТоисГ|Арр(1ауоиГ)
Г1К**0»₽0₽11₽
Виджет Рорир используется для создания всплывающих окон.
По умолчанию всплывающее окно покрывает все «родительское» окно.
Когда вы создаете всплывающее окно, вы должны как минимум
установить Рорир.Обе и Рорир.сопгепг.
Всплывающие диалоговые окна используются, когда мы должны
передать пользователю определенные сообщения.
Всплывающее окно Рорир - это особый виджет.
Не пытайтесь добавить его как дочерний элемент к любому другому
виджету.
Если вы это сделаете, всплывающее окно будет обрабатываться как
обычный виджет и не будет скрыто в фоновом режиме.
Если вы не хотите, чтобы всплывающее окно отображалось в
полноэкранном режиме, вы должны либо указать 812е_Ыш со значениями
меньше 1 (например, 81хе_Ып1 = (. 8, .8)), либо отключить 812е_Ыш и
использовать атрибуты фиксированного размера.
По умолчанию любой щелчок за пределами всплывающего окна
закрывает его.
Если вы этого не хотите, вы можете установить параметр аЩо_сЙ8т188
как Раке.
Чтобы вручную закрыть всплывающее окно, можно использовать
КОМаНДу 618111188.
с1еГ 5\л/ИсИ_са11Ьаск{5\л/|1сЬОЬ]ес1,5\л/ЛсН \/а I и е):
й 5\лл1сЬ уа1ие аге Тгие апс1 Га1зе
И ($\л/|1сИ\/а1ие):
рпп1('5\л/|1сН 15 014:):):)')
е15е:
рппЦ'ЗхмйсЬ 15 0ЕЕ:(:{:(')
5\лл1сИ=5мл1сЬ(ас1п/е = Еа 1зе)
1ауои1 = 6пс11ауоиЦсо15=2, рас1с1|п§=10)
1ауои1.ас1с1_\л/1с1Ее1(1аЬе1(1ех1 ="$\лл1сЬ"))
1ауои1.ас1с1_\ллс1Ее1(5\лл1с11)
5\лл1сИ.Ыпс1{ас11Уе = 5\лн1с11_са11Ьаск)
гипТоисЬАрр(1ауои1:)
Виджет 8\уйс11 это переключатель, который может быть в одном из
состояний - активен или неактивен, как механический выключатель света.
И пользователь может провести пальцем влево или вправо, чтобы
активировать или деактивировать переключатель.
Значение, выдаваемое переключателем - это Тгие или Ра1зе.
И к переключателю может быть присоединена функция обратного
вызова, чтобы получить значение переключателя.
Когда переключатель выполняет переход из состояния в состояние,
запускается обратный вызов, и любое другое действие может быть
выполнено в зависимости от состояния.
сМ оп_5ртпег_5е1ес1(5р1ппег, 1ех1):
1аЬе1Лех1 = "5е1ес1ес1: %5" % 5р1ппегЛех1
рпгЩ'ТЬе 5р1ппег', 5р1ппег, Ъауе 1ех1', 1ех1)
1ауоЫ = Р1оаИауои1()
5р1ппег = $р|ппег(1ех( ="Ру1Ьоп",
уаШез ={"Ру1Ьоп", Чауа", "С++", "С", "С#", "РНР"),
Ьаск§гоипс1_со1ог ={0.784, 0.443, 0.216,1))
5р1ппег.51ге_Ыгг1= (0.3, 0.2)
8р1ппег.рО5_Ыт = {'х': .35, 'у': .75}
1ауоиСасШ_\л/1с]§е1:(5р1ппег)
5ртпег.Ыпс1{1ех1 = оп_5ртпег_5е1ес1)
1аЬе1 = 1аЬе1(1ех1="5е1ес1ес1:%5" % 8р1ппегЛех1)
1ауои1.ас1с1_\л/Иее1:(1аЬе1)
1аЬе1.ро5_Ып1: = {'х': .0, 'у': .3}
гипТоис11Арр(1ауоиХ)
.1ВУВ
Зртпег - это виджет, который позволяет быстро выбрать одно значение
из предопределенного набора значений.
В состоянии по умолчанию спиннер показывает текущее выбранное
значение.
При касании спиннера отображается раскрывающийся список со всеми
другими доступными значениями, из которых пользователь может выбрать
значение.
И к спиннеру методом Ьтс1 может быть прикреплен обратный вызов для
получения уведомлений о выборе значения пользователем.
с1е1 рор(|П51апсе):
ргоёге55_Ьам/а1ие = 1
рорир.ореп()
с1еГ пехЦсИ):
Й рго§ге55_Ьагл/а1ие >= 100:
ге1игп Еа1зе
рго@ге55_Ьаг.уа1ие += 1
риореп(ш51:апсе):
С1оск.5сИес1и1е_1п1еп/а1(пех1,1 / 25)
1ауои1=ВохЬауои1:()
рго8гез5_Ьаг = Ргоеге55Ваг()
рорир= РорирЩИе - Оо\л/п1оасГ,соп1:еп1 = ргоеге55_Ьаг)
рорир.Ыпс1(оп_ореп = риореп)
1ауои1.ас1с1_\л/1с18е1(ВиНоп(1ех1='Оо\л/п1оас1', оп_ге1еазе= рор))
гипТоисЬАрр(1ауои1:)
Виджет Рго^геззВаг используется для визуализации прогресса долго
выполняющейся задачи.
В настоящее время поддерживается только горизонтальный режим.
Индикатор выполнения не имеет интерактивных элементов и является
виджетом только для отображения прогресса выполнения.
Здесь мы показываем в всплывающем окне прогресс бар и при открытии
окна запускаем таймер, который выполняет функцию увеличения значения
прогресс бара.
с1а55 ВиЬЫеОето(Р1оа1:1ауои1:):
с!еГ__тй____(зеИ; **к\л/аг^з):
5ирег(ВиЬЫеОето, зе1Г).___тИ____(**киуагдз)
5е1Г.Ьи1: = ВиПоп^ех^'Ргезз То зИош ЬиЬЫе1)
зе1Г.ЬиГЫпс1(оп_ге1еа5е=5е1Г.5|1О\л/_ЬиЬЫе)
зе IТ. а с! сМлл с! ^еТ (з е I Г. Ь и 1:)
с1еГ5Ио\л/_ЬиЬЫе(зе11; *1):
зе1Г.ЬиЬЬ = ЬиЬЬ = ВиЬЫе(опеп1а1!оп = |уегТ!саГл512е_Н!пТ=(Мопел 1Мопе),
512е=(300,200),
ро5_Н|пг={|сеп1ег_х|: .5, 'у1: .6})
ЬиЬЬ.адд_Ш1д§еТ(ВиТ1оп(Тех1=гСоруг))
ЬиЬЬ.адд_Ш1д§е1(ВиТ1оп(Тех1=гРа5Те'))
5е1Г.ас1с1_\л/1с1ёе1:(5е1Г.ЬиЬЬ)
с1азз ВиЬЫеАрр(Арр):
с1еГЬиПс1(5е1Г):
геТигп ВиЬЫеОето()
|Т__пате_____== 1_та!п___
ВиЬЫеАрр().гип()
Сору
Раз1е
Ргез5 1о зЬож ЬиЬЫе
Виджет ВиЬЫе - это меню или небольшое всплывающее окно, в котором
пункты меню расположены вертикально или горизонтально.
И этот виджет содержит стрелку, указывающую в выбранном
направлении.
Чтобы выбрать направление стрелки, используется параметр агго\у_ро5
виджета.
Ориентация виджета по умолчанию горизонтальная, но вы можете
изменить ее с помощью параметра опеШайоп.
Чтобы добавить элементы в виджет, используется метод г1с1с1_\У1с1§е1:.
с1а55 ТаЬЬес1Рапе1Арр(Арр):
с1еГ Ьи11с1(5е1Т):
= ТаЬЬес1Рапе1{(1о_с1е1аиН_1аЬ=Ра15е)
1Ы = ТаЬЬес1Рапе1Неас1ег(1ех1=|ТаЫ|)
1ауои11=Е1оаИауои1()
1ауои11.адс1_\ллс1§е1:(1_аЬе1(1:ех1='ТаЫ'))
1Ы.соп1еп1=1ауои11
I р. ай сМлд с1ее1 (1111)
1112 = ТаЬЬесIРапеIНеасIе^(1:еx^=,ТаЬ2,)
1ауо(Л2 = Е1оа11_ауоиЦ)
1ауои12.ас1с1_\л/1с1§е1:(1-аЬе1(1:ех1:='ТаЬ2'))
1112.соп1:еп1:=1ауои12
1р.ас1сНллс1§еЩЬ2)
геТигп 1р
Н___пате_____== '__та!п____
ТаЬЬес1Рапе1Арр().гип()
Виджет ТаЬЬебРапе! предоставляет вкладки, с областью заголовка для
кнопок вкладок и областью содержимого для отображения содержимого
текущей вкладки.
И ТаЬЬебРапе! предоставляет одну вкладку по умолчанию, которую
можно отключить параметром с1о_с1екш11:_1лЬ.
Отдельная вкладка называется ТаЬЬебРапеШеабег.
Это специальная кнопка, содержащая контент.
Сначала вы добавляете ТаЬЬебРапеШеабег, а затем устанавливаете ее
содержимое.
Этим контентом может быть любой виджет.
Это может быть компоновка с иерархией виджетов или отдельный
виджет, например метка или кнопка.
с1а$$ 5саЦегАрр(Арр):
с1е1 ЬиПсЦзеИ):
гоог = НоаПауоиЦ)
5саПег= 5саИег()
^саие^.асIсI_\л/^сI§еЦ^аЬеI(^еx^='5саПе^,))
гоо!.ас1с1_\л/1с18е1(8саиег)
геШгп гос!
К___пате____== '__тат____
5саиегАрр().гип()
Виджет
Зсайег используется для создания интерактивных виджетов, которые
можно перемещать, вращать и масштабировать двумя или более пальцами в
системе мультитач.
Дочерние элементы виджета располагаются также как и в Ве1айуеЬауоЩ.
Таким образом, при перетаскивании Зсайег положение дочерних
элементов не меняется, изменяется только положение Зсайег.
И размер Зсайег не влияет на размер его дочерних элементов.
Если вы хотите изменить размер Зсайег, используйте зса1е, а не 81хе .
Параметр зса1е трансформирует как Зсайег, так и его дочерние элементы.
И Зсайег - это не компоновка. Вы сами должны управлять размером
дочерних виджетов.
По умолчанию Зсайег не имеет графического представления - это только
контейнер.
Идея состоит в том, чтобы объединить Зсайег с другим виджетом,
например с изображением или иерархией виджетов.
с1еГ агита1е(|П5!апсе):
ап1та!юп = Ап1та1юп(ро5=(100,100), 1='ои1_Ьоипсе')
агитайоп += Ап!та1:юп(рО5=(200,100), 1='ои1:_Ьоипсе')
агнтайоп &= Агпта1:юп(5[7е=(500,500))
ап1та1юп += Агнта1:юп(512е=(100,50))
ап!та1юп.51:а11(|п51апсе)
1ауои1 = ПоаИауоиЦ)
ЬиНоп = Вииоп(51ге_111п1 ={1\1опе, Г\1опе), 1ех1 - Атташе', оп_рге$5 = атташе)
1ауои1.ас1с1_5л/[с1ёе1:(ЬиНоп)
гипТоисЬАрр(1ауо1Л)
Классы Аттайоп и АпттайопТгапзШоп используются для анимации
свойств виджета.
И вы должны указать имя свойства и целевое значение.
Чтобы использовать анимацию, нужно создать объект Аттайоп и далее
нужно использовать объект Аттайоп в виджете.
Здесь мы создаем объект анимации.
Этот объект можно сохранить и повторно использовать в разных
виджетах.
Здесь + - это последовательный шаг, а & - параллельный шаг.
Далее мы применяем анимацию к кнопке, переданную в аргументе
"шзгапсе".
1ауои1 = Г1оа11_ауои1:()
ЬиНоп1 = Вииоп(1ех1='Не11о\л/ог1с1',51ге_И|п1=(.5, .25), роз=(20, 20))
ЬиНоп2 = Вииоп(1ех1:='Не11оАЛ/ог1сГ, 51хе_Ь|п1=(.6, .6), ро5_И|п1={'х':.2, 'у':.2})
1ауои1.ас1с1_Ал/1с1§е1:(ЬиНоп1)
1ауои1.ас1с1_>л/1с1§е1:(Ьи11оп2)
гипТоисЬАрр(1ауои1:)
Компоновка НоайауоШ позволяет размещать элементы относительно
друг друга в зависимости от текущего размера и высоты окна.
То есть Р1оа11ауоШ позволяет размещать элементы, используя так
называемое относительное положение.
Это означает, что вместо того, чтобы определять конкретную позицию
или координаты, мы будем размещать виджеты, используя процент от
размера окна.
И когда мы изменяем размеры окна, все, что помещается в окне,
соответственно изменяет свой размер и положение.
Это делает приложение более надежным и масштабируемым в
соответствии с размером окна.
При использовании Р1оа1Ьауои1 мы используем свойства ро8_Ыщ и
812е_Ыш дочерних элементов.
По умолчанию все виджеты имеют свой 812е_Ыш = (1,1).
Чтобы создать кнопку с шириной 50% и 25% от высоты компоновки и
расположенную в точке (20, 20), мы определяем 812е_Ыш=(.5, .25) и роз=
(20, 20).
Чтобы создать кнопку, нижний левый угол которой будет находиться
минус 20% с каждой стороны, мы определяем ро8_Ыщ={'х':.2, 'у':.2}.
Не11о 1
Не11о 2
УУог1д 1
МогМ 2
1ауоиГ - 6г1с11ауои1(со15-2, го«/_Тогсе_с1еТаи11-Тгие, гом/_с1еЬи11_Ье!зЫ=40)
1ауоиСас1с1_м1с1§еЦВииопЦех1:=,Не11о 1', 512е_Нп1:_х=Мопе, тсДИ=100))
1ауоиСас1с1_м1й§еЦВиНоп(гех1='У\/ог1с11'})
1ауоиГ.ас1с1_«/1с1§е1:(Вийоп(1:ех1='Не11о 2', 512е_Ып<:_х=Мопе, \ллс11:Н=100))
1ауои1.ас!с1_\л/1с18е1(Вииоп(1ех1:=,У\/ог1с12'))
гипТоис1аАрр(1ауоиЦ
СпсИауоШ - это компоновка, которая упорядочивает дочерние элементы в
матричном формате.
Она берет доступное пространство (квадрат) и делит это пространство на
строки и столбцы, а затем добавляет виджеты в соответствии с
полученными ячейками.
Здесь мы не можем явно разместить виджет в определенном столбце /
строке.
Каждому дочернему элементу автоматически назначается определенная
позиция.
И для этой компоновки нужно указать как минимум количество столбцов
или строк.
Если мы не укажем столбцы или строки, программа выдаст исключение.
Первоначальный размер компоновки задается свойствами
со1_с1е(л1||1:_\У1сШ1 и го\у_с1екш11:_Ье1§1и.
Мы можем установить размер по умолчанию, используя свойство
соМюгсе-бе&ик или го\у_?огсе_с1екш11:.
Это заставит макет игнорировать размеры дочерних элементов и
использовать размер по умолчанию компоновки.
Чтобы настроить размер одного столбца или строки, используйте
со18_тт1тит или го\У8_тт1тит.
гооГ = $1аск1.ауои1{опеп1айоп =ЧЬ-1г')
йэг 11п гапее(25):
Ып = ВиКоп(1ех1=51г(|),512е_Ып1: =(.2, .1))
гоо!.ас!с1_«Иёе1(Ып)
гипТоис11Арр(гооЦ
[,1г-1Ь|, ЧЬ-1г', 'гНЬ', ЧЬ-гГ, '1г-Ы', ЪМг1, Ч1-Ы:1, ’Ы-гГ]
Компоновки 81аскЬауоШ и Вох1ауоШ очень похожи.
И здесь и там можно упорядочивать виджеты вертикально или
горизонтально.
Но с помощью 81аскЬауоШ вы можете комбинировать ориентации.
Имеется 4 ориентации по строкам и 4 по столбцам, это справа налево
или слева направо, сверху вниз или снизу вверх.
1ауои1 = АпсЬог1ауои1{апсИог_х=,пеЫ', апсИог_у='Ьо«от')
Ып = ВЫ1оп(1ех1='Не11о\Мэг1сГ,512е_ЫЫ=(.3, 3),Ьаскбгоипс1_со1ог=(1.0,0.0, 0.0,1.0))
1ауоЫ.ас1сНллс1{*еЦЫп)
гипТоисЬАррОауоЫ)
Компоновка АпсЬогЬауои! размещает свои дочерние элементы по
границе контейнера (сверху, снизу, слева, справа) или по центру
АпсЬогЬауоШ можно инициализировать с помощью параметров:
апсЬог_х и апсЬог_у - могут быть переданы значения «слева», «справа» и
«по центру».
Таким образом, здесь для выбора места размещения виджетов в
родительском контейнере, есть 9 различных областей компоновки, верхний
левый, верхний центр, верхний правый, центральный левый, центральный,
центральный правый, нижний левый, нижний центральный и нижний
правый.
1ауои1: = Ке1айуе1_ауои1:()
Ып1 = ВиПоп(ТехГ='Не11о \л/ог1сГ, 31хе_Ып1:=(.2, .2), роз =(300.0, 200.0))
Ып2= Ви«оп(Сех1='Не11о \л/ог1сН', 31ге_Ь!пС =(.2, .2), роз =(-50.0, 200.0))
1ауо и!. ас! с!_\ллс1 ёег (Ы: п 1)
1ауои1.ас!с!_\л/1с!ёе1(Ьсп2)
гипТоис1пАрр(1ауоиЦ
Компоновка Не1айуе1ауои1: похожа на компоновку НоаЛауоШ, разница в
том, что дочерние виджеты компоновки Не1айуе1ауоШ располагаются
относительно компоновки, а не относительно окна.
Эта компоновка работает так же, как НоаЛауоШ, но свойства
позиционирования (х, у, сеп1ег_х, п§Ы, у, сеп1ег_у и Юр) относятся к
размеру компоновки, а не к размеру окна.
И дочерние виджеты перемещаются при изменении положения
компоновки.
То есть координаты дочернего виджета остаются такими же, так как они
всегда определяются относительно родительской компоновки.
И параметры ро5_Ып[ - х, сеп1ег_х, гщЫ, у, сеп1ег_у и Юр используются
для выравнивания виджета по краям или центрирования независимо от
размера окна.
Таким образом, эта компоновка позволяет устанавливать относительные
координаты для дочерних виджетов.
Если вам нужно абсолютное позиционирование, используйте
ПоаГЬауоШ.
И в Ке1айуеЬауоШ необходимо указать размер и положение каждого
дочернего виджета.
1ауои1 = Ра§е1_ауоиЦ)
Ь1п1 = ВиНоп(1ех1:='Ра§е 1')
Ь1п1.Ьаск§гоипс1_со1ог = §е1_со!ог_Ггот_Ьех(,#ЕЕ0000|)
Ь1п2 = ВиПоп(Гех1:='Ра§е2')
Ь1п2.Ьаскдгоипс1_со1ог = §е1_со1ог_1гот_Нех('#00РР00')
I ауо и1. а с! с!_\лл д§е1( Ь1п 1)
I ауо и I. а д с1_\лл с1 §е1:( Ь1п 2)
гипТоисИАрр(1ауоиГ)
Компоновка Ра^еЬауоШ работает иначе, чем другие макеты.
Эта компоновка позволяет перелистывать страницы, используя свои
границы.
Идея состоит в том, что все страницы сложены друг над другом, и мы
видим ту страницу, которая находится сверху.
Таким образом класс Ра^еЬауоШ используется для создания
многостраничного интерфейса таким образом, чтобы можно было легко
переключаться с одной страницы на другую с помощью перелистывания.
и х Ру (11 о п
&
ТесН ЗоЮЫопэ
Создание настольных Ру1йоп
приложений с 6111
\л/хРу1Ьоп
Библиотека ХУхРуЙюп - это питон обёртка библиотеки С++ графического
интерфейса \хх\У1с1§е!:8.
Оригинальная библиотека \ух\У1с1§е!:8, написанная на С ++, - это
огромная библиотека классов.
И классы графического интерфейса пользователя из этой библиотеки
переносятся на Руйюп с помощью модуля у/хРуЙюп, который пытается
максимально точно отразить исходную библиотеку \ух\У1с1§е1:8.
Омск Ыпкз
\Л/е1соте Го мхРуГГюп!
Т1115 у/еЬэИе 18 а11 аЬоиГ и/хРуГГюп, ГГ1е сго88-р1аГТогт 61Л Гоо1кй Гог Ппе РуГПоп
1апдиаде. ХЛ/ИН м/хРуГЬоп зоШаге деуекэрегз сап сгеаГе Гги1у паПуе иеег
1пГегГасе8 Гог ГМе(г РуГИоп аррНсайопе, ГНаГ гип М/1ГИ ПГПе ог по тоб1РсаГюп8 оп
\Л/1пс1оу/з, Масз апс! Ыпих ог оИпег ипх-Нке зузГете.
* Не11оУУоПс1
Д АР1 КеГегепсе
1 гохРуГНоп \Мк1
Й РероП а Вид
О СИНиЬ КерозИогу
Ъ О15СИ55 И/ХРуГЬОП
1_еат тоге
Моге уух Ссослез
Для начала работы с библиотекой ХУхРугЬоп, создадим проект в
РуСЬагт
и в окне терминала наберем команду ртр тзСаП -ЦТ у/хРуйюп для
установки библиотеки.
УУХРгсуес!
В Я । Ргсуес! ’ © *т- Ф *“
О’
ШХРго]ес1 1зггпРг >с15\УУХРгс ей
► II № Ех1егпа1 иЬгапеБ
-<)| 5сга(сНеь гпд СопБокй
=1
й
Тегггнпа1: Ьоса! +
М1СГ050П Шпйо^З [Уег51оп 10.0.18362.367]
(с) Корпорация Майкрософт (МАсгозо^Г СсгрогаТАоп), 2819. Все права защищены.
(уепу) 0:\изег\РусПагтРго]есА5\ШХРгоэесТ>р1р АпзАаН -Ц кхРуТПоп
СоТЛесИпд ихРуТМоп
ОоипТ.оас11пд шхРуГ1'10п-4.1.1-ср39-ср39-к1п_а1П{164.иГ11. (18.1 МВ)
Ё II 18 ГВ 5
СоИесИпд рАЕои
0оип1оас11пд РАИош-В .1.2-ср39-ср39-ш1п_атс164 ,иП1 (2.3 МВ)
с । 2 2 мв <37 кЁ/&
Со11ес11пд 51х
Ц&хпд сасПей $1х-1.15.0-ру2.руЗ-попе-апу.иП1 (16 кВ)
СоПесТАпд потру
ОоипТоасНпд пмтру-1.28.1-ср39-ср39-и1п_атс164.иМ (13.7 МВ)
I I 13.7 НВ 247 з
-с 1пзГа1Л1пд ссТЛесТеС раскадез: з!х, рИЛош, питру, ихРуГИоп
§
™ Зиссезз^иЦу АпзТаПес! пцтру-1.26.1 р111_ои-В. 1.2 31Х-1.15-0 ихРуТИоп-4.1.1
гЛ
*:= ТОСО Ф РуЛоп Сол$о1е ЕЯ Тегтта!
Далее создадим файл питона и наберем простой код.
та1п.ру
1трог± ыгх
2
арр = шх.АррО
= шх.Ргате(Мопе, 1111е="шхРуЫ1оп Егате", 512е=(3®0, 200))
рапе! = их. РапеК>1пс1ош)
1аЬе1_ = их.51:а1:1сТех1:СрапеЪ, 1аЬе1="Не11о МогиТ', ро5=(100, 50))
П1ПС10Н. БПопСТгие)
арр.Ма1п1_оор()
' м/хРуЙюп Ргате — □ X
НеНо ЛЛ/Ъг1с[
Здесь мы импортируем модуль \ух.
Далее мы определяем объект класса АррНсаПоп.
И создаем окно верхнего уровня как объект класса Ргате, заголовок и
размер которого задаются в конструкторе.
Ргате - это наиболее часто используемое окно верхнего уровня, размер и
положение которого может быть изменено пользователем.
Оно имеет строку заголовка и кнопки управления.
И при необходимости можно добавить другие компоненты, такие как
строка меню, панель инструментов и строка состояния.
Далее мы помещаем объект Рапе1 в Ргате.
И добавляем объект 8(айсТех1 для отображения «НеПо \Уог1с1» внутри
окна.
И наконец мы активируем окно фрейма методом 81ю\х и входим в
основной цикл событий объекта АррИсайоп.
р!р 1П51а11 рутзСаИег
ру1П51:а11ег —опеГЛе та1п.ру
УУХРго|ес1 Ь та1п.ех'е
й| Н Ргсуес! ▼ О Т О “
к! УУХРго|бс< □:\и5ег\РусЬагп1Рго^с15\У7ХРго]ес1:
► С ЬиНс!
Т I <№
5 таю.ехе
2 Т I уепу КЬгагу гооГ
1Л
А 1пс1иде
► В- иь
► • 5спрЬ
Ж рууепу.сГд
- тат.ру
г тат.дрес
11 ЕхТегпа! ЫЬгапе^
' та)п.ру
ттрогг их
2
арр = шх.АррО
ш!пс1о1лг = их.Егате(Мопе, 1111е=,'пхРу11юп Егате", з12е=(300, 200))
рапе! = их.Рапе1(н1пбои)
1аЬе1 = их.51а11сТех1:(рапе1, 1аЬе1="Не11о ИогХсГ, роз=(100, 50))
и1паои.2Поп(Тпие)
арр.Ма±п1оор()
<О 5сгай±1ев апН Соп5о1е$
Для создания исполняемого файла приложения, можно воспользоваться
инструментом Ру1п81а11ег.
Установив который с помощью команды ртр, можно набрать команду
рут81а11ег в терминале и получить исполняемый файл.
с1азз Ехатр1е(\л/х.Егате):
с1е1__1пк__(зеН, *аг^з, **киуаг^з):
зирег(Ехатр1е, зеИ).__'тй:__(*аг^з, **куиаг^з)
зеН.1пй:1Л()
1пй:1Л(зе10:
зе1Г.5е15|не(300,200)
рапе1 = ^х.Рапе1(зе1Г)
1аЬе1 = \лос.51а11сТех1(рапе1,1аЬе1="Не11о\Л/ог1сГ, роз=(100, 50))
тепиЬаг = шх.МепиВаг()
ГПеМепи = шх.Мепи()
ГНеМепи.Аррепс1(иух.1О_МЕ\Л/, '&Ме\м')
й1еМепи.Аррепс15ерага1:ог()
1тр = \/ух.Мепи()
зиЬ=1тр.Аррепс!(уих.Ю_АМУ,’1тро11 пеиизГеес! Из!...’, ктс1=\Аос1ТЕМ_СНЕСК)
й1еМепи.Арреп^Мепи(\мх.Ю_АМУ, 'I&троI1,, 1тр)
1тр.СЬеск(зиЬ.Се1:1с1(), Тгие)
ГНекет = Л1еМепи.Аррепс1(\мх.Ю_ЕХ1Т, ’&С1ик\1:С1:г1+С1', ’С^ик аррНсаИоп')
тепиЬаг.Аррепс!(Н1еМепи/'&ЕПе')
5еИ.8е1МепиВаг(гпепиЬаг)
зе1ЕВтс1(\мхТУТ_МЕ1Чи, зеИ.ОпСик, ГНекет)
сЫ ОпфиЩзеИ, е):
зе1ЕС1озе()
И - □ X
ЕНе
Мел/
1трог1: > 1трог1 пеууБ^еей I
Сий СЫ+С} Г-
1трог1
Фрейм - это окно, размер и положение которого может быть изменено
пользователем.
Это окно имеет границы и строку заголовка и может дополнительно
содержать строку меню, панель инструментов и строку состояния.
И фрейм может содержать любое другое окно, кроме фрейма или
диалога.
Строку состояния, панель инструментов и меню можно добавить с
помощью функций зе^ЩЩзВаг, 8еСГоо1Ваг и 8е(МепиВаг.
В меню есть пункты меню.
Пункты меню - это команды, которые выполняют определенное действие
внутри приложения.
И в меню также могут быть подменю, в которых есть свои собственные
пункты меню.
Для создания меню используются классы МепиВаг, Мели и Мепийет.
Здесь мы добавляем пункт меню в объект меню методом Аррепс1.
Первый параметр здесь - это идентификатор пункта меню.
Второй параметр - это название пункта меню.
Третий параметр определяет строку, которая отображается в строке
состояния при выборе пункта меню.
Метод Аррепс! возвращает созданный пункт меню.
Эта ссылка используется для привязки события.
Здесь мы привязываем пункт меню к методу ОпРий. Этот метод
закрывает приложение.
В каждом меню также может быть подменю.
Таким образом, мы можем объединять похожие команды в группы.
В меню мы можем разделять команды разделителем с помощью метода
АррепбЗерагаЮг. Это простая линия.
Также есть три вида пунктов меню. Это обычное меню, это флажок и это
радиоэлемент.
Если мы хотим добавить флажок, мы устанавливаем параметр кптс! как
1ТЕМ_СНЕСК.
с1еГ 1пк1Л(зе1П:
зеИ.5е15!хе(300,200)
зеИ.рапе! = у/х.Рапе1(зе1Г)
1аЬе1 = \дос51а11сТех1(зеИ;рапе1,1аЬе1="Не11о\Л/огИ", роз=(100, 50))
зе1Ей1еМепи = уух.Мепи()
зе1Ей1еМепиАррепЩ\/ух.Ю_1\!Е\Л/, ’&1^е\м')
ТНекет = зе1ЕРНеМепи.Аррепс!(\мх.1О_ЕХ1Т, ,&О,и1’С\1С’Ьг1+СГ, 'фи к аррНсаНоп')
зе!ЕВ! пс!(\лосЕ\/Т_МЕ1\1 О, зеН.Опфик, ГНекет)
5е!Срапе1.В1ПЙ(™х.ЕУТ_К16НТ_0О\Л/1\1, зеИ.ОпШёЫОом/п)
зеИ.з1:а1:изЬаг = зе1ЕСгеа1:е51:а1:изВаг()
зе I Г. з1а1 и з Ьа г. 5е151а1 и зТех1 (' кеа с!у')
деГ ОпК!еЬЮо\ААп(зеИл е):
5еИ.РорирМепи(5еИ.Н1еМепи)
рппТСсНск')
деГОпфиЩзеИ, е):
зе!ЕС1озе()
Й
□
Нез Ну
Си Л С1г1+С}
Контекстное меню - это список команд, который появляется в некотором
контексте.
Например, когда мы щелкаем правой кнопкой мыши на элементе окна,
мы видим контекстное меню.
И контекстные меню иногда называют всплывающими меню.
В этом примере мы создаем контекстное меню для главного окна.
В нем два элемента. Пункт меню создается и добавляется к контекстному
меню.
И к этому пункту меню может быть привязан обработчик событий.
Если мы щелкнем правой кнопкой мыши на фрейме, мы вызываем метод
ОпВщйЮомш.
Для этой привязки мы используем событие \ух.ЕУТ_ВТСгНТ_ОО\УМ.
В методе ОпВщйЮо^уп мы вызываем метод РорирМепи.
Этот метод показывает контекстное меню.
И контекстные меню появляются в точке наведения курсора мыши.
с!еТ 1пИ1Л(5е1Г):
5е1Т.5е1517е(300/200)
зе1Т.рапе1 = \л/х.Рапе1(5е1Г)
зе1Т.1аЬе1 = \А/х.81а11сТех1:(5е1Г.рапе1/ 1аЬе1="Не11о \Л/ог1сГ, ро5=(100,50))
5е1Г.Сеп1те()
1оо1Ьаг= зеИ.Сгеа1еТоо1Ваг()
ц1оо1 = 1оо1Ьаг.Адс1Тоо1(101, гОшГ, \л/х.Вктар("д.рп§"))
Гоо1Ьаг.АсЖоо1(102,1 т.В|Гтар("п.рп§"))
Гоо1Ьаг.Ас1с1Рас1юТоо1(222/ 'П^ИГ'УУх.ВИтарС'г.рпЕ"))
1оо1Ьаг.Ас1с1Кас1юТоо1(333/ 'СепТег1, \л/х.В11:тар("с.рп§"))
1:оо1Ьаг.Ас1с1Кас1юТоо1(444, Чиз1|1у,уухЪ|1тар(||).рпд11))
1оо1Ьаг.Кеа1|2е()
5е1Т.В!пс1(\л/х.Е\Л'_ТОО1, зеК.ОпТоо!, д1оо1)
с1еГОпТоо1(5е1Г, е):
5е1Т.1аЬе1.8е1:1аЬе1(51:г(е.Се1:1с1()))
В меню, которое мы уже рассмотрели, группируются все команды,
которые мы можем использовать в приложении.
Панели инструментов обеспечивают быстрый доступ к наиболее часто
используемым командам.
Чтобы создать панель инструментов, мы вызываем метод Сгеа(еТоо1Ваг
виджета фрейма.
По умолчанию панель инструментов горизонтальна, не имеет границ и
отображает значки.
Чтобы создать элемент панели инструментов, мы вызываем метод
Ас1с1Тоо1.
Первый параметр, это идентификатор элемента.
Второй параметр - это метка элемента, третий - изображение элемента.
И обратите внимание, что метка не отображается, потому что стиль по
умолчанию показывает только значки.
Также мы можем добавить группу ВасИоТоо!, из которой можно выбрать
только один элемент.
После того, как мы разместили наши элементы на панели инструментов,
мы вызываем метод Веайхе.
Кнопки инструментов генерируют событие ЕУТ ТООЬ, с помощью
которого мы можем привязать обработчик элемента панели инструментов.
с1еГ 1пк1Л(8е11:):
5е1{.5ег51ге(300,300)
зеН.рапе! = \л/х.Рапе1(8е1Г)
1аЬе11 = \л/х.51а11сТехЦ8е11:.рапе1,1аЬе1="1аЬе11")
1аЬе12 = \л/х.5(а1:1сТех1(5е11:.рапе1,1аЬе1="1аЬе12")
1аЬе13 = \А/х.$(а11сТех1(5е11:.рапе1,1аЬе1="1_аЬе13")
5е1Г.Сеп1ге()
2 - □ X
ЬаЬеП
1аЬе12
1аЬе11.$е1Ро5Н|оп((20, 20})
1аЬе12.$е1Ро5Шоп((40, 160))
1аЬе13.$е1Ро5111Оп((170, 50))
Теперь, давайте поговорим о компоновках в мхРуЙюп, с помощью
которых виджеты размещаются внутри виджетов-контейнеров.
В мхРуЙюп можно размещать виджеты, используя абсолютное
позиционирование или используя сайзеры.
При абсолютном позиционировании мы указываем положение и размер
каждого виджета в пикселях.
И абсолютное позиционирование имеет ряд недостатков, а именно -
размер и положение виджета не меняются, если мы изменяем размер окна,
также приложения выглядят по-разному на разных платформах и
изменение шрифтов в приложении может испортить компоновку.
Поэтому чаще всего в реальных программах используются сайзеры.
Здесь в этом примере мы размещаем три метки методом ЗеФозШоп
используя абсолютное позиционирование.
ЬаЬеВ
с1еГ 1П111Л (зе1Т):
5е1Т.8ег81ге(300,300)
рапе1 = Ал/х.Рапе1(5е1'Г)
1аЬе11 = \л/х.51а11сТех1(рапе1,1аЬе1="ЬаЬе11")
1аЬе12 = \л/х.81а11сТех1(рапе1,1аЬе1="1аЬе12")
1аЬе13 = \л/х.51аИсТех1(рапе1,1аЬе1="1_аЬе13")
5е1Г.Сеп1ге()
ЬЬох = шх.Вох512ег(шх.НОН12О1\1ТА1_)
ИЬох.Ас1с1 (1аЬе11, ргороП!оп=0, Яа§=5л/х.К16НТ, Ьогс1ег=8)
ЬЬох.Ас1с1(1аЬе12, ргороПюп=1, Т1а8=\л/х.1ЕРТ]\л/х.ТОР, Ьогс1ег=50)
ЬЬох.Ас1с1(1аЬе13, ргороП1оп=2, Лаё='л/х.1ЕРТ|\л/х.Р16НТ|\л/х.ЕХРАМ0, Ьогс1ег=10)
рапе1.8е15|гег(КЬох)
Сайзеры решают все проблемы абсолютного позиционирования, и
\ух Руйюп имеет сайзеры
Вох81хег
8(айсВох812ег
Спб812ег
Р1ехСпб812ег
СпбВа§812ег
,и
Вох81хег
Компоновка Вох81хег позволяет размещать несколько виджетов в строке
или столбце.
И мы можем добавлять один сайзер в другой. Таким образом мы можем
создавать очень сложные макеты.
Ориентация компоновки может быть вертикальная или горизонтальная.
И добавление виджетов в Вох81хег осуществляется с помощью метода
Абб.
Параметр пропорции определяет соотношение изменения виджетов в
заданной ориентации.
Предположим, у нас есть три элемента с пропорциями 0,1 и 2.
И они добавлены в горизонтальный ВохЗггег.
Элемент с пропорцией 0 вообще не изменится.
Элемент с пропорцией 2 изменится в два раза больше, чем элемент с
пропорцией 1 по горизонтали.
С помощью параметра Па§ вы можете дополнительно настроить
поведение виджетов в ВохЗтхег.
Здесь мы можем контролировать границу Ьогйег между виджетами,
добавляя промежуток между виджетами в пикселях.
Чтобы применить границу, нам нужно определить стороны, где будет
использоваться граница.
И мы можем комбинировать стороны, например ЬЕРТ | ВОТТОМ.
И наконец сайзер задается для контейнера с помощью метода зеГЗтхег.
с1еГ 1пк1Л(5еИ):
5е1Г.8е1512е(ЗОО,ЗОО)
рапе1 = м/х.Рапе1(5е1Г)
5еИ.Сеп1ге()
§5 = \л/х.6пс1512ег(4, 4, 5, 5)
Гог 11п гап§е(1, 17):
Ып = "В1п" + 5Гг(|)
^$.Ас1с1(\л/х.ВиНоп(рапе1,1аЬе1=Ь1п), Г1а@=шх. АЫ. | шх.ЕХРАЫО, Ьогс1ег=10)
рапе1.5е15|2ег(§5)
А3с1 (зеИ, \л/1пс1о\л/, ргорогПоп-О, Г1а§-0, Ьогс1ег=0, изегОа1а-Нопе)
Компоновка Сг1с181хег размещает виджеты в двухмерной таблице.
И каждая ячейка в этой таблице имеет одинаковый размер.
Здесь в конструкторе мы указываем количество строк и столбцов в
таблице, а также вертикальное и горизонтальное расстояние между
ячейками.
Здесь мы использовали метод Аск1. И виджеты размещаются внутри
таблицы в том порядке, в котором они добавляются. Сначала заполняется
первая строка, затем вторая строка и т. д.
В методе Ас1с1 мы используем параметры йа§ и Ьогбег, которые
определяют ширину границы ячейки.
с!еГ 1пИ1Л(5е1Г):
5е1Г.$е151ге(300,300)
рапе! = \л/х.Рапе1(5е10
□ X
зеК.СеШгеО
^5 = и/х.Р1ехСпс!51нег(3,2,10,10)
1ог 11п гап§е(1, 7):
Ып = "В1п" + 5Щ|)
1§5.Ас1с1(\л/х.Вииоп(рапе1,1аЬе1=Ып), (1аЕ=\л/х.А1_1_| и/х.ЕХРАЫО, Ьогс1ег=10)
^5.Ас1с16го\л/аЫеСо1(1,1)
Т^5.Ас1с1<згом/аЫеНош(2,1)
рапе1.5е151гег(1ё5)
Компоновка
Р1ехСпб812ег
похожа на
Сг1с151гег
Она также размещает свои виджеты в двухмерной таблице.
Но в то время как ячейки СпбЗтхег имеют одинаковый размер, в
Р1ехСпб812ег строки и столбцы не обязательно имеют одинаковую высоту
или ширину.
Поэтому эта компоновка обеспечивает немного больше гибкости при
размещении элементов в ячейках.
Здесь размер каждой ячейки не одинаков, как в СпбЗтхег.
И ширина и высота ячеек в одном столбце или строке может быть
увеличена с помощью методов Ас1с1Сго\уг1ЫеВо\у и Ас1с1Сго\уг1ЫеСо1.
Первый параметр здесь индекс строки или индекс столбца, а второй
параметр - это доля прироста.
3 -ох
сМ 1п|Ш1(5еИ):
5еН.5е15|2е(300,300)
рапе1 = \л/х.Рапе1(5е1Г)
51гег = \л/х.(Зпс1Вае$12ег(4, 4)
1ех1 = \л/х.51а11сТехЦрапе1,1аЬе1-'ЬаЬеГ') с1ди
512ег.Ас1с1(1ех1, роз=(0,0), Ла§=\л/х.ТОР | \л/х.ЬЕРТ | \л/х.ВОТТОМ, Ьогс1ёг=5)
1с = \л/х.Тех1С1г1(рапе1)
512ег.Ас1с1(1с, ро5=(1, 0), 5рап=(1, 5), Яа^шх.ЕХРАЫО | шх.ЬЕЕТ | \л/х.К16НТ, Ьогс1ег=5)
ЬиИопОк = \л/х.ВиНоп(рапе1,1аЬе1-'Ок", 51ге=(90, 28))
ЬиНопС1о5е = \л/х.ВиИоп(рапе1,1аЬе1=”С1о5е", 5!ге=(90, 28))
51гег.Ас1сЦЬиП:опОк, ро5=(3,0),Г1ае=\л/х.1ЕРТ | \л/х.ВОТТОМ,Ьогс1ег=10)
51хег.Ас1д(Ьии:опС1о5е, ро5=(3, 3), Яа§=\л/х.К1СНТ | \л/х.ВОТТОМ, Ьогс1ег=10)
512ег.Ас1с16гошаЫеСо1(1)
51гег.Ас1(КэгошаЫеКош(2)
рапе1.8е1$12ег(51гег)
Компоновка Сг1с1Вг1§51гег - это самая гибкая компоновка в мхРуЙюп.
Эта компоновка позволяет явно позиционировать элементы.
Элементы также могут занимать более одной строки или столбца.
И мы добавляем элементы с помощью метода Абб.
Здесь параметр роз указывает положение в сетке.
В верхней левой ячейке роз (0, 0).
Параметр зрап - это диапазон элемента, например зрап (3, 2) - это
виджет занимает 3 строки и 2 столбца.
Параметры флаг и граница обсуждались в Вох81хег.
И ширина и высота ячеек в одном столбце или строке может быть
увеличена с помощью методов Ас1с1Сго\хг1ЫеВо\х и АббСго\уаЫеСо1.
Таким образом, (ЗпбВа§812ег - это универсальная компоновка.
Здесь дочерний виджет можно добавить в определенную ячейку сетки.
Кроме того, дочерний виджет может занимать более одной ячейки по
горизонтали или вертикали.
деТ 1пК1Л (зе1Г):
5е1Г.5е151ге(300,300)
рапе1 = шх.Рапе1(5е1Г)
Ып = ^/х.ВиПоп(рапе1/ 1а Ье1='01а1оё1)
Ып.В|Пс1(\л/х.Е\Я_В11ТТОМ/ 5е1Г.8Но\лМе85а§е)
1пк> X
Оошп1оас1 сотрк^ес!
1-.9А-1
с!еГ ЗИошМе55аЕе(5еII; еуеп!:):
сИа! = \л/х.Ме55а§еО!а1о§(Ыопе, гОо\л/п1оас1 сотр1е1ед'л'ИТо^ \л/х.ОК I \л/х.1СОЫ_1ЫЕОКМАТЮЫ)
сИа1.5Но\л/Мос!а1()
и-х.ОК ОК ЬиНоп
\та.САКСЕЬ б1юу/ Сапсе] ЬиПоп
^хЛ'Е5_ЬЮ вкои- Тез. Ко Ъииопз
™хЛ’ЕЗ„СЕГАПЬТ шаке Тез ЪиПоп 1Ье скГаик
таЛО ОЕРАСЬТ шаке Ко ЪиПоп (Не скГаик
и-х.1СОК_ЕХСЕАМАТЮК экой- ап а!ег1 коп
адх.1СОК_ЕККОК зко’кУ ап еггог коп
™х.1СОМ_НАКО вате аз ихДСОК ЕККОВ.
^ДСОК_ШЕОКМАТЮК ' з1юиг ап пко коп
^хДСОК_риЕЗТ1ОК зкслх а сщезбоп коп
Диалоговые окна являются неотъемлемой частью большинства
приложений с графическим интерфейсом.
Диалог используется для ввода данных, изменения данных, изменения
настроек приложения и т. д.
И мы можем использовать предопределенные диалоги, такие как окна
сообщений, диалоги шрифтов или цветов, или создавать свои собственные
диалоги.
Окно сообщения предоставляет пользователю краткую информацию.
И класс Мезза^еВох показывает небольшое диалоговое окно.
Здесь мы предоставляем три параметра: текстовое сообщение, заголовок
сообщения и флаги. Флаги используются для отображения различных
кнопок и значков.
В нашем случае мы показываем кнопку ОК и значок информации.
Создать диалоговое окно сообщения просто.
Мы устанавливаем диалог как окно верхнего уровня, указав Моле в
качестве родителя.
Чтобы отобразить диалог на экране, мы вызываем метод 8Ьо\уМоба1.
Чтобы создать диалоговое окно аЬоШ, мы должны создать два объекта -
\ух.абу.АЬоиЮ1а1о§1п{о и \ух.ас1у. АЬоЩВох.
Для создания собственного диалога, мы должны создать класс, который
наследует от виджета \ух.О1а1о§.
Мы создаем экземпляр этого класса, а затем мы вызываем метод
81ижМо(1а1.
Позже мы должны уничтожить наш диалог с помощью метода ВезПоу.
с1еГ 1пк1Л(5е1Г):
5е1Г.5е151ге(300,300)
рапе! = \л/х.Рапе1(8е1Г)
Ып = шх.ВиПоп(рапе1,1аЬе1='С1о5е', ро5={20,20))
Ь1п.В|псЦ>л/х.Е\/ТВ0ТТ0(\1,5еН.ОпС1о5е)
с1еГОпС1о8е(8е1Г, е):
зе1Г.С1о5е(Тгие)
Теперь давайте пройдемся по виджетам библиотеки \ухРуЙюп.
Вийоп - это простой виджет, который содержит текстовую строку и
используется для запуска действия.
В этом примере мы создаем кнопку «Закрыть», которая при нажатии
завершает работу приложения.
В конструкторе виджета мы указываем метку для кнопки и позицию на
панели.
Методом Вше! мы связываем событие с методом, и событие запускается,
когда мы нажимаем на кнопку.
Здесь мы указываем обработчик для этого события, в котором мы
завершаем приложение с помощью метода С1озе.
1о = шх.То&в1еВииоп(рапе1,1аЬе1='Со1ог', ро5=(20, 50))
1Ь.В1па(\л/х.ЕУТ_ТОСС1ЕВиТТО1\1,5еК.То^1е)
зеИ.срп! = \л/х.Рапе1(рапе1, роз={150, 50), 51ге=(110,110))
5еИ.срп1.5е1Васк§гоипс1Со1оиг{\л/х.Со1оиг{255,255,255))
(М То{’в1е(5еН:, е):
оЬ] = е.Се1ЕуепЮЬ)ес1()
1зРге55ес1 = оЬ).6еГ\/а1ие()
И 15Рге55ес1:
5еН.срп1.5е1Васк§гоипс1Со1оиг(\л/х.КЕ0)
е15е:
5еИ.срп1.5е1Васк8гоипс1Со1оиг(\л/х.ВШЕ)
5е1Г.срп1.КеГге5И()
1]
Виджет То§§1еВийоп - это кнопка, которая имеет два состояния: нажата
и не нажата.
И вы переключаетесь между этими двумя состояниями, нажимая на
кнопку.
В этом примере мы меняем цвет панели, нажимая на кнопку.
Здесь создается виджет То§§1еВийоп и панель, цвет которой мы будем
изменять с помощью кнопки-переключателя.
Обработчик события То§§1е вызывается, когда мы нажимаем кнопку.
В этом методе мы устанавливаем цвет фона панели в зависимости от того
нажата кнопка или нет.
Ш="Тех1
Тех!
Со1ог
Тех!
Тех!
51г = шх.$1аИсТех1(рапе1,1аЬе1=Ьс1, роз=(20, 80))
Гоп1 = \л/х.ЕопЕ(18, \л/х.ОЕЕА1)1Т,\л/х.МОКМАЦ уух.ОЕЕА1ЛТ)
$1г.8е1:Еоп1(1оп1)
шх.51а11с1_1пе(рапе1, роз=(20, 200), 512е=(200, 5))
Виджет ЗюбсТехЕ отображает одну или несколько строк текста,
доступного только для чтения.
Здесь мы создаем шрифт для текста.
И устанавливаем шрифт с помощью метода Зе^Ропб
Виджет 81айсЫпе отображает в окне простую строку, которая может
использоваться как разделительная строка.
шх.51айсВох(рапе1,1аЬе1='Вох’, рс*5=(5, 5), $!2е=(270, 250}}
Всс
[ "Г'с1с5е"''1
Соки
Тех!
Тех!
оз - ['иЬипШ', ’АгсЬ', 'Рес1ога', 'ОеЫап', 'М1п1:']
сЬ = \л/х.СотЬоВох(рапе1, ро$=(50, 250), сЬо1Се5=о5, 5!у1е=иух.СВ_ВЕА001\11_У)
сЬ.5е1ес1(0)
5еИ.51 = \л/х.51а11сТех1(рапе1,1аЬе1=", ро5=(50, 300))
сЬ.В!пс1{\л/х.Е\/Т_С0МВ0В0Х, 5е1Г.Оп5е1ес!:)
с1еТ Оп5е1есГ{5е1Т, е):
I = е.6е!51:пп§()
5еН.51.5еЧаЬе1(|)
Еейога V
Еейога
Виджет 8(айсВох используется для логической группировки различных
виджетов.
И эти виджеты должны быть родственными, а не дочерними по
отношению к статическому блоку.
Здесь включаемые виджеты регулируются размерами рамки статического
блока.
Какая будет рамка, столько виджетов и поместится в блок.
Виджет СотЬоВох - это выпадающий список с кнопкой.
Когда вы нажимаете кнопку, появляется список.
И пользователь может выбрать только один вариант из предоставленного
списка строк.
При создании виджета СотЬоВох, параметр сЬотсез принимает список
строк, отображаемых в поле со списком.
Стиль ВЕАВОЫЬУ делает строки списка доступными только для чтения.
И когда мы выбираем параметр из поля со списком, запускается событие
СОМВОВОХ.
К этому событию мы подключаем обработчик события Оп8е1ес1.
зеН.сЬ = \л/х.СИескВох(рапе1, ро$=(50, 350), 1аЬе1='$Ьош')
5е1(.сЬ.5е1:\/а1ие{Тгие)
зе^.сЬ. В1пс1(\л/х.Е\/Т_СНЕСКВОХ, 5е11.5Ио\л/ОгН|с1е)
□ Н|де
с)еГ 5Ио\л/ОгН!с1е(5еИ, е):
1 = е.6е1Еуеп1ОЬ]ес1()
15СЬескес1 - !.6е1\/а1ие()
И 15СЬескес1:
5еИ.сЬ.5е1ЕаЬе1('51юш')
е1зе:
5е1Т.сЬ.5еИаЬе1('Н|с1е')
СЬескВох - это виджет, который имеет два состояния: включен и
выключен.
Здесь мы проверяем состояние виджета СЬескВох с помощью метода
СеЕУа1ие.
И событие СНЕСКВОХ запускается, когда мы щелкаем по виджету
СКескВох.
При запуске этого события вызывается обработчик ЗЫжОгНШе.
5еН.гЫ = шх.Нас1|оВиШ>п{рапе1,1аЬе1='Ма1ие А', ро$=(200, 250), 51у1е=\л/х.КВ_ОКО11Р)
5еН.гЬ2 = \л/х.Кас1|оВиПоп(рапе1,1аЬе1='\/а1ие В1, роз=(200, 270))
5е1Т.гЫ.В1пс1(\л/х.ЕУТ_КАОЮВиттом, 5е1Т.8еП/а1)
$е1Т.гЬ2.В1пс1(\л/х.Е\/Т_ВА0ЮВитТ0М, 5е1Т.5еЙ/а1)
зеИ.$Ь = 5е1Т.Сгеа1е81а1и5Ваг(2)
зеИ.5Ь.5еШа1и5Тех1("Тгие",0)
5е1Т.5Ь.8еШа1и5Тех1("Еа15е", 1)
с1е^ 5е±\/а1(5е1Г, е):
51а1е1 = 5Сг(5еИ.гЫ.6е1\/а1ие())
$1а1:е2 = $1г(5еН.гЬ2.6е1\/а1ие())
5еГГ.зЬ.$еШа1и5Тех1(51:а1е1,0) ра|« тгие
5еН.5Ь.5е151а1и$Тех1(51а1е2,1)
НасПоВийоп - это виджет, который позволяет пользователю выбрать один
вариант из группы параметров.
Группа переключателей определяется тем, что первый переключатель в
группе содержит стиль (ЖОВР.
Все остальные переключатели, определенные после первого
переключателя с этим флагом стиля, будут добавлены в функциональную
группу первого переключателя.
Объявление другой радиокнопки с флагом (ЗВОВР запустит новую
группу радиокнопок.
Здесь у нас есть группа из двух переключателей.
И состояние каждого из переключателей отображается в строке
состояния.
И мы привязываем событие ВАОЮВВТТСЖ к обработчику события
8еГУа1.
Также мы создаем статусбар с двумя полями.
В методе 8е1Уа1 мы узнаем состояния переключателей.
И мы обновляем поля строки состояния до текущих значений
переключателей.
зе1Т.§аи§е = \л/х.(3аи§е(рапе1, гап§е=50,51хе=(250/-1),роз=(20,370))
5е1Г.Ы:п5 = уух.ВиПоп(рапе1, уух.Ю_ОК, роз=(20,400))
5е1Т.В1Пс1(\л/х.Е\/Т_В1ЛТОЫ/ зеН.ОпЗТаП, 5е1Г.Ып5)
5е1Г.1зтег = \ло<.Т|тег(5е1Г, 1)
5е1Т.соип1 = 0
5е1Т.В1Пс1(шх.Е\/Т_Т1МЕВ/ 5е1Г.ОгГПтег, 5е1Г.1:1тег)
с!еГОп51:аг1:(5е1Г, е):
1Г 5е1Г.соипГ >= 50:
ге1игп
5е1Г.Г1тег.5ГагГ(100)
5е1к5Ь.8еГ8ГаГи5ТехГ("Та5кт Рго^гезз'^О)
с1еГОпТ|тег(5еН/ е):
5е1Т.соип1 = 5е1Г.соип1 + 1
5е1Т.ёаи^е.5е1:\/а1ие(5е1Г.соип1:)
1Г 5е1Г.соип1 == 50:
5е1Г.1зтег.81:ор()
5е1ГлЬ.8еГ8ГаГи5ТехГ(||Та5кСотр1еГесГ, 0)
К..ОК....II
Датчик Саи§е - это виджет, который используется при выполнении
длительных задач, где требуется индикатор, показывающий текущее
состояние задачи.
В этом примере у нас есть датчик и кнопка, которая запускает датчик.
И мы используем Тппег для выполнения кода через определенные
промежутки времени.
В эти моменты мы обновляем шкалу датчика.
Переменная соиШ используется для определения того, какая часть задачи
уже выполнена.
В конструкторе виджета Саи§е, параметр диапазона устанавливает
максимальное целочисленное значение виджета.
Когда мы нажимаем кнопку ОК, вызывается метод Оп81аг(.
Здесь сначала мы проверяем, находится ли переменная сошЛ в диапазоне
задачи.
Если нет, то возвращаемся из метода.
Если же задача еще не выполнена, мы запускаем таймер.
И метод ОпТппег вызывается периодически после запуска таймера.
В этом методе мы обновляем переменную сошЛ и виджет датчика.
Если переменная сошЛ равна максимальному значению, мы
останавливаем таймер.
51с! = шх.$Пс!ег{рапе1, уа1ие=200, пгнп\/а1ие=150, тах\/а1ие=500,
ро5={20,450),51у1е=\л/х.81__НОВ12О1\1ТА1_) 260
з1с1.В1пс1(\л/х.Е\/Т_5СКО1Ц 5еИ.Оп5Пс1ег5сго11)
с1еТ Оп8Пс1ег8сго11($еИ:, е):
оЬ] - е.6е1ЕуепЮЬ]есГ()
уа1 = оЬ|.6е1:\/а1ие()
$е1Т.8Ь.5еГ51аГи5ТехГ(51:г(уа1),0)
8Нс1ег - это виджет с ползунком, который можно тянуть вперед и назад.
Таким образом, мы можем выбрать конкретное значение из диапазона.
Здесь, значение, выбранное в ползунке, отображается в строке статуса.
При создании 8Нс1ег, мы указываем начальную позицию ползунка
параметром уа1ие, а минимальное и максимальное положение ползунка -
параметрами ттУаТие и тахУа1ие.
Стиль НОКТХОМТАЬ делает ползунок горизонтальным.
Когда появляется событие 8СК.ОЕЕ, здесь вызывается метод
Оп8Ибег8сго11, в котором текущее выбранное значение ползунка
отображается в строке статуса.
-10.0
5еИ.5с = \л/х.8р1пС1г1(рапе1, уа1ие='0',ро5=(20, 500)}
5еК.5С.5е1Кап§е(-459,1000}
5е1Г.8С.В1пс1(уух.Е\/Т_5Р1МСТРЦ 5е1Г.ОпСотри1е)
с!еГОпСотри1:е(5е1Т, е):
ГаЬг = 5е1Т.5С.6е1\/а1ие()
уаI = гоипсЦ^аИг - 32) * 5 / 9.0, 2)
5е1Г.8Ь.5еШа1:и$Тех1(51г(уа1), 0)
Виджет 8ршОг1 позволяет увеличивать и уменьшать значение в
определенном диапазоне.
Здесь мы переводим температуру по Фаренгейту в градусы Цельсия.
Мы создаем виджет 8ртСй1 с начальным значением 0.
И метод 8е(Вап§е устанавливает диапазон значений для виджета.
Когда мы выбираем значение в виджете, вызывается метод ОпСотрШе.
В этом методе мы получаем текущее значение и вычисляем температуру
по Цельсию и показываем вычисленную температуру в строке статуса.
1ап§иаее5 = ['С, 'С++', Чауа', 'РуТЬоп','РегГ, ЧауаЗспрГ', ’РНР', 'УВ.ЫЕТ', 'С#']
зеНЛех! = \л/х.Тех1С1:г1(рапе1,з1у1е=\л/х.ТЕ_1\/1111Т1иМЕ, роз=(300, 20), $12е=( 150, 50))
Ы = \л/х.Нз1Вох(рапе1,312е=(100, -1), сИо1се5=1ап§иа§ез, з1у1е=шх.1_В_81М(з1.Е, роз=(300, 100))
5еН.В|пс1(\л/х.Е\/Т_и8ТВОХ, зеИ.опизТВох, 1з1)
де?оп1.1$1Вох($е№, еуеп!):
зеИлехТ.АррепйТехгС'Сиггет 5е1ес1юп:Чеуеп1.6егЕуепЮЬ]ес1().6е18и1п§5е1ес11оп()+"\п")
Виджет ЫзФох представляет собой список строк с вертикальной
прокруткой.
И по умолчанию можно выбрать один элемент в списке. Однако список
можно настроить и для множественного выбора.
Здесь параметр СЬоюез - это список строк, используемых для
заполнения списка.
В этом примере Ыз1Вох заполняется строками с помощью объекта
1ап§иа§ез.
И ЫзФох связывается с обработчиком опЫзЙЗох с помощью события
Ы8ТВОХ.
Этот обработчик добавляет выбранную строку в многострочный виджет
Тех1С1г1.
тах1п1:=2**31-1
р1ауегз = [('Тепс1иIкаг1, '15000', '100'), ('Огаме!', '14000',111),
('КитЫе', '1000', '700'), ('КарПОеу', '5000', '400'),
('6ап§и1у', '8000', '50')]
5е1Т.||51= \л/х.1_15Юг1(рапе1, -1,51у1е=ит.1С_КЕРОКТ,роз=(300,250))
5е11Ч|5к1п5ег1:Со1итп(0, 'пате1, \ллсН1п=100)
5е1Г.||5Г1п5ег1:Со1итп(1, 'гипз1, \л/х.и5Т_РОРМАТ_П16НТ, 100)
5е1Г.||5Г1п5ег1:Со1итп(2/1 уукТз', шх±15Т_ГОКМАТ_К16НТ, 100)
пате ГЦП5 «ки
|Тепйи1каг 15000 100|
Огау1д 14000 1
КитЫе 1000 700
Кар|Юе\ 5000 400
Сапдц1у 8000 50
Гог 11п р1ауегз:
тдех = 5е1Г.||51.1п5егГ51г1П§кет(тах1П1, |[0])
5е11Ч|51.$е1:$1ппЕКет(|пс1ех/1,1[1])
5е1Г.||5Г.8еГ8ГппЕКепп(|Пс1ех, 2,1[2])
зеН.||51.В1пд(\л/х.Е\/Т_Ы5Т_1ТЕМ_5Е1ЕСТЕО, 5е1Г.0пС1|ск, зеК.1151)
с!еГ ОпСНск(5е1Г, еуепГ):
I пс! = еуепГ6еПпс1ех()
Нет = зе1Г. ||51.6е111ет(|пс1,1)
5е1Г5Ь.8еГ8ГаГи5ТехГ(|Гет.СеПех1:(), 0)
Теперь, как создать не список, а таблицу?
ЫзОг! - это улучшенный виджет списка.
Если Ыз1Вох показывает только один столбец, Ыз^СМ может содержать
несколько столбцов.
Внешний вид виджета Ыз^СМ контролируется параметрами стиля.
Столбцы заголовка создаются методом 1пзег(Со1итп, который принимает
параметры номера столбца, заголовок, стиль и ширину.
Здесь список кортежей, каждый из которых содержит три строки, хранит
данные, которые используются для заполнения столбцов объекта ЬЫОг!.
Новая строка заполняется методом ТпзеЦЗйтп^Йет, который возвращает
индекс текущей строки.
Использование гпахпй дает номер строки после последней строки.
Используя индекс, другие столбцы заполняются методом 8е181гш§11:ет.
Событие Ы8Т_1ТЕМ_8ЕЕЕСТЕВ передает индекс выбранного элемента
из таблицы.
И мы используем этот индекс в обработчике, чтобы получить элемент и
столбец в таблице, чтобы получить текст ячейки.
#р! р 1П51аП сот1урез
М:т1 = \л/х.ПЬ.1еуу1П.1 ЕН1т1\Л/1пс1о\л/(рапе1, роз=(300, 420), 812е=(300,100))
1гЕт1.Мау|да±е(’1т1:Гр5://\л/\л/У1/.у/хруг1поп.огд')
Ме1соте 1о м/хРуЖоп!
ТЪЬ иаш в эИ аЬяй ичРуПюп. (Не иоз!-рлйягп С1Д1 йхйкмТогШе РугЬоп
1апдиаэе. У\Л1Г>«хРу1Ной йоПжаге беуе1орегБ еаг» сгы1й 1го1у па1з1гё иеег
нивкам* Ьг 1Ье1г РуЙкт ар^ка&оп з 1На1 гоп ъ'йи «Не « по пвдМмНопб оп
(Мпйои*. Мас5 апй Мпих от о1НИ ип1х-П»е 8у&1ап4.
Библиотека мхНТМЬ и 1е\У1п содержат классы для анализа и
отображения содержимого НТМЬ.
Хотя этот браузер не предназначен для использования в качестве
полнофункционального браузера, объект 1ЕН1:т1\У1пс1о\у может служить
универсальным средством просмотра НТМЬ.
Хотя для использования этого браузера понадобится установка
дополнительного модуля сопДурез, питон СОМ-пакета.
5рНиег = шх.5рН11ег\Л/1пс1ош(5еН, -1)
Ру1Ноп
Рег1
РНР
УВ-ИЁТ
Сиггеп!
5ексТ1сп: С
Сиггеп!
5е1ес11сп: С**
рапе1 = \л/х.Рапе1(5рПНег,51хе=(100, 300))
5е1ГЛех1 = м/х.ТехЮг1(рапе1,51?е=(120, 250), 51у1е=\л/х.ТЕ_М1ЛТ111НЕ)
рапе15 = \л/х.Рапе1(5рННег, 51ге=(100, 300})
1ап§иа§е5 = ['С, 'С++', ^ауа', 'Ру^Иоп', 'РегГ,
']ауа5спрГ, 'РНР', 'УВ.МЕТ', 'С#']
151 = \л/х.1_151Вох(рапе15,51хе=(100, 250), сКо1се5=1ап§иа§е5,5(у1е=\л/х.1В_5^61Е)
5рНиег.5рН1\/ег11са11у(рапе18, рапе!)
5еН.В|Пс1(\л/х.Е\/Т_и5ТВОХ, 5еИ.оп1.151Вох, Ы)
с1еГ опк151Вох(5еН, еуеп1):
5еИ.1ех1.Аррепс1ТехЦ"Сиггеп15е1ес11оп:" + еуеп1.6е1Еуеп1ОЬ]есЦ).6е1:51ппё5е1ес11оп() + "\п")
8р11Иег\У1пс1о\у - это специальная компоновка, которая содержит два
подокна, размер которых можно динамически изменять, перетаскивая
границы между ними.
Класс 8р1юег\У1пс1о\х имеет очень простой конструктор с параметрами,
имеющими значения по умолчанию.
В этом примере 8рНпег\У1пс1о\х добавляется к фрейму верхнего уровня.
Одна панель предназначена для хранения многострочного поля ТехОг1.
Список ЫзШох помещается на другую панель.
И 8рНпег\У1пс1о\х разделяет по вертикали окно, и две панели добавляются
в подокна.
Ширину подокон можно изменять с помощью перетаскивания границы.
□
X
пЬ = шх.1\1о1еЬоок(5еИ)
рапе11 = \л/х.Рапе1(пЬ)
рапе12 = \л/х.Рапе1(пЬ)
пЬ.Ас1с1Ра§е(рапе11, "Ра§е1")
пЬ.Ас1с1Ра§е(рапе12, "Раее2")
Раде1 раде2~|
РадеЗ
1x11 = \л/х.51:а11сТех1(рапе1Х -1, 51у1е=\л/х.АЕ1СГ\[_СЕГ\1ТЕК)
1х11.$е1ЕаЬе1("Раее1")
1x12 = \л/х.51а11сТех1(рапе12, -1, 51у1е=5Л/х.АиСМ_СЕИТЕК)
1х12.8еИаЬе1("Ра§е2")
Библиотека \ухРуЙюп содержит набор виджетов Воок, которые
позволяют пользователю переключаться между различными панелями в
окне.
Это такие виджеты как МоЕеЬоок, СЬотсеЬоок, ЫзЛоок и ТгееЬоок.
Виджет МоЕеЬоок представляет собой окно с вкладками или страницами.
И пользователь может переключаться между страницами, щелкая
заголовок соответствующей вкладки.
Объекты этих вкладок добавляются как страницы в МЫеЬоок во фрейме
верхнего уровня.
ск = №Х.Ра1пЮС(5еИ)
ЬгизЬ = \лосВги5Ь("Ыие")
(к.Зе^ВаскёгоипсЦЬгизЬ)
с1с.С1еаг()
со1ог = \л/х.Со1оиг(255, 0, 0)
Ь = \л/х.ВгизЬ(со1ог)
с!с.5е1Вги5Ь(Ь)
с1с.Ога\л/С|гс1е(300,125, 50)
с1с.5е1:ВгизЬ(\л/х.ВгизЬ(\ЛАХ.Со1оиг(255, 255, 255)))
ск.0гаш0гс1е(300,125, 30)
Гоп! = у/х.Еоп1:(18, иух.ВОМАМ, уух.ГГА1_1С, уух.1МОВМА1_)
с1с.5е1Еоп1(Гоп1)
ск.0гау/Гех1:("Не11охухРуЦпоп", 200, 10)
реп = у/х.Реп(т/х.Со1оиг(0, 0, 255))
ск.8е1Реп(реп)
с1с.0га\л±1пе(200, 50, 350, 50)
с1с.5е1:ВгизЬ(уих.ВгизЬ(\л/х.Со1оиг(0, 255, 0), \лосСКО85_НАТСН))
с1с.ОгауиРес1:апе1е(380,15, 90, 60)
АР1 рисования у/хРуйюп предлагает различные функции для рисования
форм, текста и изображений.
Объекты, необходимые для рисования, такие как цвет, перо, кисть и
шрифт, могут быть созданы с использованием классов интерфейса.
Класс РашЮС используется для рисования в клиентской области окна, с
помощью события РапйЕуепЕ
Существуют также такие классы как ЗсгеепОС, который используется
для рисования на экране, и СПепЮС, который используется для рисования
в клиентской области окна без события РатШЕуепЕ
Класс Со1оиг представляет собой комбинацию значений ВСВ и есть
также предопределенные цветовые объекты, такие как ВЬАСК, ВЬЕТЕ,
СВЕЕМ и так далее.
Цвет с произвольной комбинацией значений ВСВ формируется как
объект Со1оиг.
Объект Реп определяет цвет, ширину и стиль форм, таких как линия,
прямоугольник, круг и т. д.
Кисть ВгизЬ - это еще один графический объект, необходимый для
заливки фона таких фигур, как прямоугольник, эллипс, круг и т. д.
Для настраиваемого объекта ВшзЬ требуются параметры стиля Со1оиг и
ВгизЬ.
Здесь пример показывает использование объектов Реп, ВгизЬ, Со1ог и
ГопГ.
Оеаг РуС1Л
&
ТесН ЗоЮИопэ
Создание настольных Ру1йоп
приложений с 6111
Оеаг Ру61Л
Оеаг РуСш - это простой и мощный фреймворк графического
интерфейса пользователя Руйзоп.
ХЛ/Ьу СкНиЬ? V Теат Еп1егрг1$е Ехр1оге МагкеГр1асе Рп'с1'пд V ЗеагсЪ
0 НоЯъ^аск/ОеагРуОы
© 5роп$ог Мс1|йса
О Соде © Кзиез 91 П Ри11 гедиезГз □15сиззюпз ® Асйопз ]] РгсуесК 3 СП \М1а © Беси п Гу
Е тазГег - Р 4 ЬгапсИез © 33 Гадз
4 Соде ▼
Со ТИе
ИоНзГасИ апд РсоГИгеп [аИр а] Огампд мддеГз (#823) ...
47<±4сэ 3 Ьоигз адо © 1,841 ссттйз
.дйЬиЬ
М ОеагРуСш
М ОеагБапбЬох
• Оерепдепаез
Ь 01зГг(ЬиПоп
1тди|ТезГ1пд
М Кезоигсез
ирдаГе ЬиПс! зспрГз
[зИр а] Огаттд 'лчддеГз (#823)
сйапдед V^ем/роIТ Гипсйоп Тог ГиГиге ргооПпд
геуег! ТгееТуре 1о у2.10.1
адс1ед усгипбте140 сШ Го 1Ие сИзГгиЬийоп
Меи* ТопГ зузТет (#766)
[ХЛ/11\ЮО\Л/5] аск1ес1 уу1псЗом копз
21 с1ауз адо
3 Ьоигз адо
6 Йауз адо
21 с!ауз адо
1азГ топГЬ
21 с1ауз адо
б с1ауз адо
Оеаг РуСи1 - это библиотека, созданная с помощью библиотеки С++ Беат
1тСш, для имитации традиционного графического интерфейса.
Оеаг РуСш отличается от других графических интерфейсов Рубюп тем,
что под капотом Беат РуСш использует графический процессор
компьютера для отрисовки динамических интерфейсов.
Оеаг РуСш не использует нативные виджеты, а вместо этого использует
графическую карту компьютера для непосредственной отрисовки.
р!р 1П51а11 беагру§и|‘
Ру 601
В ®Ргсуе<Л * © =- ^ —
Ё* „ ,
о. РуЫЯ
Б| ► ’1' Ех1епчЕ НЬгапй
*•* ' < 5сга1сЬе1 ап<] Сог^окд
ш
5
у
(Л
ГЧ
^еагсН Ёиегуу/Неге ПоиЫе 5 ЫН
Йо 1о Н1е СЫ + 5ЫН+М
йесеп! РЛез СН1+Е
№ VI да 1ю п Ва г АН+Н о те
Теггтипа!: 1ос.У +
Н1СГ050П Н1пс1снз [Уега1оп 16.6.1&362.367]
(с) Корпорация Майкрософт (Нхсгозо-Н СогрогаИоп), 2619. Все права защищены.
(уепу) П:\115ег\РусГ1агтРг'0]ес1:5\Ру61Л>р1р 1пз1:а11 йеагрудь!
СоИесИпд йеагрудот
□оип1_оай11пд йеагруды1-0.6.398-ср39-ср39-м1п_агой64.иЫ (1.1 МВ)
. 1.1 НВ 81$ кВ/з
| 1пз1аЦ.1пд соИесГей раскадез: аеагрудох
Зоссезз’РыП.у Хпв^аИей йеагруди1-Э.6.398
*
:= Ё-ТОСЮ И Гегт1па] ♦ РуЧтог Соп5о1е
Для установки библиотеки Веаг РуСш создадим проект в
РуСЬагт
и в окне терминала наберем команду рЁр ш$1а11 беагру^ш.
□еаг РуСи)
ИПр5://НоН51асК.ЕИ11иЬ.1о/ОеагРу6ш/|пс1ех.ЬГт1
1пс1ех
1_а$Т 1)рс!а1е(± 2021-04-19
5иЬ-тос!и1е$
беагруди!.соге
беагру^и!.51тр1е
Раскаде (1еагру§и1
8иЬ-тоби1ез
беагруеих.соге
беагру§и!.51тр1е
Существует онлайн документация библиотеки, где можно посмотреть все
функции и параметры.
Тгот с1еагру^и11трог1 соге, 51тр1е
Тгот с1еагруЕи1.соге 1тро11 *
Тгот с1еагру^и1.51тр1е !трог1 *
с1еГ5ауе_са11Ьаск(5епс1ег, с!а1:а):
рппГС'Зауе СНскесГ1)
5е!_та1п_ш!пс1сад_512е(400,400)
ууИИ 51тр1елу1пс1оуу("Ехатр1е\Мпс1оуу"/ м<ЙЬ=350, Ие1дЫ:=350,
х_ро$=20, у_роз=20):
соге.ас!с1_1:ех1:("Не11о >л/ог1с1")
соге.ас!с1_Ьи1Топ("8а7е", са11Ьаск=5ауе_са11Ьаск)
соге.адсИприГ-ГехГС'зГппё11)
соге.ас!с1_5||с1ег_Г1оа1:("Г1оа1:")
8Но\л/_51у1е_ес1ког()
соге.5е13Иете^ет(ту6и1Со13Мпс1о\мВЕ, 240, 240, 240, 255)
со ге. 51а г1_с1 еа гру$ и I ()
Оеаг РуСш состоит из окна программы, окон и виджетов.
Окно программы - это главное окно программы, которое создается в
конце основного скрипта Руйюп с помощью вызова функции
8ГагГ_беагру§ш.
Оеаг РуСш состоит из двух модулей соге и 81гпр1е.
Модуль соге содержит базовую функциональность Беат РуСЫ.
Модуль 81гпр1е содержит простые оболочки и другие утилиты, созданные
из соге, чтобы обеспечить более удобный интерфейс Беат РуСш.
Методом 8е(_тат_\утбо\у_812е мы устанавливаем размер основного
окна.
Это самое большое черное окно.
Метод \У1пс1о\у модуля 8ппр1е является оберткой метода ус1с1_\у1пс1о\у
модуля соге.
Этот метод добавляет окно в основное окно.
И в это добавленное окно мы уже добавляем элементы методом абб.
Здесь мы добавили текст, кнопку, поле ввода и слайдер.
Теперь, как изменять внешний вид окна.
Мы вызываем метод 8Йо^_8(у1е_ес1йог, который открывает окно
редактора.
Здесь это окно ниже.
В этом окне мы меняем размеры и цвета и нажимаем кнопку 5ауе, где
она есть, и кнопку ЕхрогЦ
При этом в буфер копируется код изменения внешнего вида.
Мы сохраняем этот код в блокноте и можем выбрать там нужный нам
метод и перенести его уже в наш код.
Здесь мы выбрали метод 8е(_Лете_йеш с параметром \Ушс1оууВ§, для
изменения цвета фона окна, который стал светлым, а не темным как по
умолчанию.
Далее мы уже убираем метод 81ю\у_81у1е_ес1ног из нашего кода, чтобы не
показывать редактор стилей.
Параметр саШэаск позволяет связать обработчик с кнопкой, чтобы
выполнять код при нажатии пользователем кнопки.
Оеаг РуСи!
Еипсйопз
а сМ_аЬоиГ_и1пи см
ас1д_ас1д111опа1_Роп^
ас!д_аппо1:а1:1оп
а с! с! агеа зегхез
ас1с1_Ьаг_5ег1е8
ас!й_Ьи11:оп
ас1й_сапс11е_5ег1е5
асМ_сИагас1ег_гетар
ас! с1_с11ескЬох
асМ-СИПс!
ас1й_со11ар51п§_11еас1ег
ас!с1_со1ог_Ьи11оп
ас!с!_со1ог_ес1113
ас!с1_со1ог_ес1г1:4
ас!с!_со1ог_р1скегЗ
а с! с!_со1о г_р 1 с ке г4
Мос1и1е йеагру^их.соге
РипсИопБ
йе-р абс!_аЬоиг_и1пс1ои(...)
Ве1игп Туре: Мопе
Рагате1ег8
Кеужкс! Оп1у Агдитеп18
Сгеа^ез ап аЬоиГ ш1пс1ом.
пате : з!г
В документации легко посмотреть все методы для добавления виджетов
в окно.
ас!с1_1:ех1:(|Ве1о\л/Уои ХЛ/Ш 5ее 1\л/о ЬиГГопз1)
асМ_Ьи«оп("Ви«оп 1") айд_ЬиПоп("Арр1у##1") адд_ЬиПоп("Арр1у2"> 1аЬе1="Арр1у”)
ас1с1_5ате_||пе(5рас1П$=30) #Ас1сНпд а арасе оп 1Ие 5ате Ипе
ас^-СИескЬохС'СИескЬох11)
ас!с1_тепи_Ьаг("Ма1П Мепи Ваг")
а с! сНт1 е п и (" Е о г т а 1:")
ас1с1^епи_|Гет(||ГогтГ|)
ас1с1_51тр1е^1оГ("Н|5Го§гат", [1,4/2,8,12], Ие^И1:=180, И|51:о$гат=Тгие)
ас!с1_с1гам1П§("Р|Г51_Ога\л/1П§", \лдсШ1=300, Ье1^т=300)
игаш_агс1е("Е1г51:_0гауу|ПЕ11, [150,150], гас11и5=50, со1ог=[255, 255, 255, 255], 5е^теп1:5=0)
У каждого виджета должно быть уникальное имя.
По умолчанию имя присваивается как метка виджета, если это
применимо.
Если вы хотите изменить метку виджета, вы можете поместить две
решетки «##» в конце имени и все, что будет после решеток «##» будет
скрыто от отображаемого имени.
Также вы можете использовать ключевое слово 1аЬе1, которое будет
отображать метку вместо имени виджета.
Некоторые имена виджетов создаются автоматически, например для
виджета 8ате_1ше.
Однако у них есть необязательное ключевое слово паше, которое можно
указать, если вам понадобится ссылаться на виджет позже.
По умолчанию виджеты создаются в порядке их кодирования.
Однако элементы могут быть добавлены не по порядку, если указать
родительский контейнер.
Использование ключевого слова рагеШ вставит виджет в конец дочернего
списка родителя.
Если вы хотите вставить его в другое место, используйте ключевое Ье^оге
в сочетании с ключевым словом рагепц чтобы поместить элемент перед
другим виджетом в дочернем списке.
Каждый виджет ввода имеет значение, которое можно установить с
помощью ключевого слова бе{аи1^а1ие при создании, или во время
выполнения командой зе1_уа1ие.
Чтобы получить доступ к значению виджета, мы можем использовать
команду §е1_уа1ие.
Каждый виджет ввода имеет обработчик, который запускается при
взаимодействии с виджетом.
Обработчики могут быть назначены виджету при создании или после
создания с помощью метода 8е1_кет_са11Ьаск.
Список использованных источников
11Рр8://г1уегЬапксотр11Рпр.сот/8оР\уаге/руск
Ирра ://рур1, огр/рго! ес!/Ру 51с1е/
Ирра ://с1ос5 ,ру Нюп, огр/З/П ЬгагуЛЫпЕег, Ыт!
|Щр5://к1уу.огц/#11оте
11Рр8://\у\ууу.\ухруН1оп.огц
1Шр5://рШ111Ь.сопа/11орБ1аск/РеагРуС1п
11Рр5://11аЬг.сот/ги/
1ШР8://сос1ег1е88ОР8.сот