Π Π°Π·Π½ΠΎΠ΅

Python windows gui: создаём простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с PyQt ΠΈ Qt Designer

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

создаём простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с PyQt ΠΈ Qt Designer

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ своё знакомство с созданиСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с графичСским интСрфСйсом (GUI) Π½Π° Python. Π’ Π½Π΅ΠΉ ΠΌΡ‹ рассмотрим основы использования PyQt Π² связкС с Qt Designer. Π¨Π°Π³ Π·Π° шагом ΠΌΡ‹ создадим простоС Python GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ содСрТимоС Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Π§Ρ‚ΠΎ Π½Π°ΠΌ потрСбуСтся

Нам понадобятся PyQt ΠΈ Qt Designer, Π½Ρƒ ΠΈ Python, само собой.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ PyQt5 с Python 3, Π½ΠΎ особых Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ PyQt ΠΈ PySide ΠΈΠ»ΠΈ ΠΈΡ… вСрсиями для Python 2 Π½Π΅Ρ‚.

Windows:Β PyQt ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ здСсь. Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с Π½ΠΈΠΌ ΠΈΠ΄Ρ‘Ρ‚ Qt Designer.

macOS:Β Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyQt с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Homebrew:

$ brew install pyqt5

Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ инструмСнтов Qt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Qt Designer, ΠΌΠΎΠΆΠ½ΠΎΒ ΠΏΠΎ этой ссылкС.

Linux: Всё Π½ΡƒΠΆΠ½ΠΎΠ΅, вСроятно, Π΅ΡΡ‚ΡŒ Π² рСпозиториях вашСго дистрибутива. Qt Designer ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ· Π¦Π΅Π½Ρ‚Ρ€Π° ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ PyQt придётся ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ понадобится, ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

# для Fedora:
$ sudo dnf install python3-qt5 qt-creator
# для Debian/Ubuntu:
$ sudo apt install python3-qt5 pyqt5-dev-tools qtcreator

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ с приготовлСниями, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку/Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pyuic5. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

$ pyuic5
Error: one input ui-file must be specified

Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π΅Ρ‚ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ€ΠΎΠ΄Π΅, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ для вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ вСрсии PyQt.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Windows, Ρ‚ΠΎ, скорСС всСго, ΠΏΡƒΡ‚ΡŒΒ C:\Python36\Scripts (ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅Β 36Β Π½Π° Π²Π°ΡˆΡƒ Π²Π΅Ρ€ΡΠΈΡŽ Python) Π½Π΅ прописан Π² вашСм PATH. ЗаглянитС Π² этот трСд Π½Π° Stack Overflow, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π”ΠΈΠ·Π°ΠΉΠ½

ΠžΡΠ½ΠΎΠ²Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас всё Π³ΠΎΡ‚ΠΎΠ²ΠΎ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ с простого Π΄ΠΈΠ·Π°ΠΉΠ½Π°.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Qt Designer, Π³Π΄Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Main Window ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Create.

ПослС этого Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ„ΠΎΡ€ΠΌΠ° β€” шаблон для ΠΎΠΊΠ½Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· ΠΎΠΊΠ½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ Ρ‚.Π΄. ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с интСрфСйсом, ΠΎΠ½ довольно простой.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ нашСго Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Ρ‚.ΠΊ. Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΈΠΌ большим. А Π΅Ρ‰Ρ‘ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ±Π΅Ρ€Ρ‘ΠΌ автоматичСски Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ мСню ΠΈ строку состояния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ½ΠΈ Π½Π΅ пригодятся.

ВсС элСмСнты Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΈΡ… иСрархия ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΊΠ½Π° Qt Designer ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Object Inspector. Π’Ρ‹ с Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, кликая ΠΏΠΎ Π½ΠΈΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π² этом ΠΎΠΊΠ½Π΅. Или ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΡ… Π² основной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒΒ DEL Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ. ЕдинствСнный ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” centralwidget, Π½ΠΎ ΠΎΠ½ Π½Π°ΠΌ понадобится, поэтому с Π½ΠΈΠΌ ΠΌΡ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ List Widget (Π½Π΅ List View) ΠΈ Push Button ΠΈΠ· Widget Box.

ΠœΠ°ΠΊΠ΅Ρ‚Ρ‹

ВмСсто использования фиксированных ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹. ЀиксированныС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρƒ вас Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ (ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π°), Π½ΠΎ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ всё Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… ΠΈ/ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

ΠœΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠΊΠ½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π±Π΅Π· использования ΠΌΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ список ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡˆΠ»ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² мСню Qt Designer Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Form, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Preview ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ Π²Ρ‹ΡˆΠ΅. Выглядит Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½Π΅ Ρ‚Π°ΠΊ Π»ΠΈ? Но Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ случится, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π°:

Наши ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ мСстах ΠΈ сохранили свои Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹, нСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ основного ΠΎΠΊΠ½Π° измСнился ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ. Π’ΠΎΡ‚ поэтому Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв стоит ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π±Ρ‹Π²Π°ΡŽΡ‚ случаи, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΡƒΠΆΠ½Π° фиксированная ΠΈΠ»ΠΈ минимальная/максимальная ΡˆΠΈΡ€ΠΈΠ½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Но Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹.

ОсновноС ΠΎΠΊΠ½ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ°ΠΊΠ΅Ρ‚Ρ‹, поэтому Π½Π°ΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π½Π°ΡˆΡƒ Ρ„ΠΎΡ€ΠΌΡƒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ Main Window Π² Object Inspector ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Lay out β†’ Lay out vertically. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΏΠΎ пустой области Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΡ†ΠΈΠΈ:

Π’Π°ΡˆΠΈ элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС, Ρ‡Ρ‚ΠΎ ΠΈ Π΄ΠΎ внСсённых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½ΠΎ Ссли это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ просто ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ΠΈΡ… Π½Π° Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ использовали Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, всС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ, Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ. МоТно ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ размСщСния для получСния ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. НапримСр, Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Если Ρƒ вас Π½Π΅ получаСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ элСмСнт Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² ΠΎΠΊΠ½Π΅ Object Inspector.

ПослСдниС ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, благодаря Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ, наши элСмСнты Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ), β€” ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя элСмСнтов ΠΈ ΠΈΡ… тСкст.

Π’ простом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Ρ€ΠΎΠ΄Π΅ этого с ΠΎΠ΄Π½ΠΈΠΌ лишь списком ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΡ‘Π½ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌ Π² любом случаС просто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ элСмСнтов β€” Ρ‚ΠΎ, ΠΊ Ρ‡Π΅ΠΌΡƒ стоит ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Ρ‚ΡŒ с самого Π½Π°Ρ‡Π°Π»Π°.

Бвойства элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Property Editor.

Подсказка: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ элСмСнты Π² интСрфСйс Qt Designer для ускорСния Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ скрытыС/Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ части интСрфСйса Ρ‡Π΅Ρ€Π΅Π· ΠΏΡƒΠ½ΠΊΡ‚ мСню View.

НаТмитС Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² Ρ„ΠΎΡ€ΠΌΡƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Property Editor Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ всС свойства этого элСмСнта. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ objectName ΠΈ text Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ QAbstractButton. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π² Property Editor Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ ΠΏΠΎ названию Ρ€Π°Π·Π΄Π΅Π»Π°.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ objectName Π½Π° btnBrowse ΠΈ text Π½Π° Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ.

Π”ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ:

ИмСнСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° списка являСтся listWidget, Ρ‡Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΊΠ°ΠΊΒ design.uiΒ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

ΠŸΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ Π² ΠΊΠΎΠ΄

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ .ui-Ρ„Π°ΠΉΠ»Ρ‹ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· Python-ΠΊΠΎΠ΄Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π»Π΅Π³Ρ‡Π΅. МоТно ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ .ui-Ρ„Π°ΠΉΠ»Π° Π² Python-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΡΠΌΠΎΠΆΠ΅ΠΌΒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Для этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΡƒΒ pyuic5Β ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°/ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ .ui-Ρ„Π°ΠΉΠ» Π² Python-Ρ„Π°ΠΉΠ» с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ design.py, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

$ pyuic5 path/to/design.ui -o output/path/to/design.py

ПишСм код

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Β design.py с Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄ΠΈΠ·Π°ΠΉΠ½Π° нашСго прилоТСния ΠΈ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π°Π΄ созданиСм Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ»Β main.pyΒ Π² ΠΏΠ°ΠΏΠΊΠ΅, Π³Π΄Π΅ находится design.py.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ интСрСсныС ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΠΎ Python.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½

Для Python GUI прилоТСния понадобятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ:

import sys  # sys Π½ΡƒΠΆΠ΅Π½ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ argv Π² QApplication
from PyQt5 import QtWidgets

Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠ΄ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Ρ€Π°Π½Π΅Π΅, поэтому Π΅Π³ΠΎ ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ:

import design  # Π­Ρ‚ΠΎ наш ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΈΠ·Π°ΠΉΠ½Π°

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ» с Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ. ВмСсто этого ΠΌΡ‹ создадим Π½ΠΎΠ²Ρ‹ΠΉ класс ExampleApp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ объСдиним с ΠΊΠΎΠ΄ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π° для использования всСх Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        # Π­Ρ‚ΠΎ здСсь Π½ΡƒΠΆΠ½ΠΎ для доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ
        # ΠΈ Ρ‚.Π΄. Π² Ρ„Π°ΠΉΠ»Π΅ design.py
        super().__init__()
        self.setupUi(self)  # Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нашСго Π΄ΠΈΠ·Π°ΠΉΠ½Π°

Π’ этом классС ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с элСмСнтами интСрфСйса, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ соСдинСния ΠΈ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ потрСбуСтся. Но для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ΄Π°. Π‘ этим ΠΌΡ‹ разбСрёмся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main():

def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экзСмпляр QApplication
    window = ExampleApp()  # Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ExampleApp
    window.show()  # ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
    app.exec_()  # ΠΈ запускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ конструкциСй:

if __name__ == '__main__':  # Если ΠΌΡ‹ запускаСм Ρ„Π°ΠΉΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ
    main()  # Ρ‚ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΠΌΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ main()

Π’ ΠΈΡ‚ΠΎΠ³Π΅Β main. py выглядит Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

import sys  # sys Π½ΡƒΠΆΠ΅Π½ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ argv Π² QApplication
from PyQt5 import QtWidgets
import design  # Π­Ρ‚ΠΎ наш ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΈΠ·Π°ΠΉΠ½Π°

class ExampleApp(QtWidgets.QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        # Π­Ρ‚ΠΎ здСсь Π½ΡƒΠΆΠ½ΠΎ для доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ
        # ΠΈ Ρ‚.Π΄. Π² Ρ„Π°ΠΉΠ»Π΅ design.py
        super().__init__()
        self.setupUi(self)  # Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нашСго Π΄ΠΈΠ·Π°ΠΉΠ½Π°

def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экзСмпляр QApplication
    window = ExampleApp()  # Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ExampleApp
    window.show()  # ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
    app.exec_()  # ΠΈ запускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

if __name__ == '__main__':  # Если ΠΌΡ‹ запускаСм Ρ„Π°ΠΉΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ
    main()  # Ρ‚ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΠΌΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ main()

Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄:Β $ python3 main.py,Β Ρ‚ΠΎ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запустится!

Но Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π°Ρ‘Ρ‚, поэтому Π½Π°ΠΌ придётся с этим Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

ДобавляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² нашС Python GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ Π’Π΅ΡΡŒ дальнСйший ΠΊΠΎΠ΄ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ExampleApp.

Начнём с ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ. ΠŸΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ событиС Π²Ρ€ΠΎΠ΄Π΅ наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

self.btnBrowse.clicked.connect(self.browse_folder)

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ эту строку Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Β __init__ класса ExampleApp, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ привязку ΠΏΡ€ΠΈ запускС прилоТСния. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ взглянСм Π½Π° Π½Π΅Ρ‘ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅:

  • self.btnBrowse: здСсь btnBrowse β€” имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π² Qt Designer. selfΒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ само Π·Π° сСбя ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ классу;
  • clickedΒ β€” событиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ. Π£ Ρ€Π°Π·Π½Ρ‹Ρ… элСмСнтов Ρ€Π°Π·Π½Ρ‹Π΅ события, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² списка Π΅ΡΡ‚ΡŒΒ itemSelectionChanged ΠΈ Ρ‚.Π΄.;
  • connect() β€” ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ привязываСт событиС ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
  • self. browse_folder β€” просто функция (ΠΌΠ΅Ρ‚ΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ описали Π² классС ExampleApp.

Для открытия Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ°ΠΏΠΊΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄Β QtWidgets.QFileDialog.getExistingDirectory:

directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ")

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉΒ directory присвоится Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π°Β None. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ дальшС, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ Π΄ΠΈΠ°Π»ΠΎΠ³, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΡƒΒ if directory:.

Для отобраТСния содСрТимого Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ os:

import os

И ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список содСрТимого ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

os.listdir(path)

Для добавлСния элСмСнтов Π² listWidget ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Β addItem(), Π° для удалСния всСх элСмСнтов Ρƒ нас Π΅ΡΡ‚ΡŒΒ self. listWidget.clear().

Π’ ΠΈΡ‚ΠΎΠ³Π΅ функция browse_folder Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

def browse_folder(self):
    self.listWidget.clear()  # На случай, Ссли Π² спискС ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ элСмСнты
    directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ")
    # ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Ρ‹Π±ΠΎΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
    # Ρ€Π°Π²Π½ΠΎΠΉ ΠΏΡƒΡ‚ΠΈ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

    if directory:  # Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π» Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ
        for file_name in os.listdir(directory):  # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
            self.listWidget.addItem(file_name)   # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² listWidget

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ:

Π’Π°ΠΊ выглядит вСсь ΠΊΠΎΠ΄ нашСго Python GUI прилоТСния:

import sys  # sys Π½ΡƒΠΆΠ΅Π½ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ argv Π² QApplication
import os  # ΠžΡ‚ΡΡŽΠ΄Π° Π½Π°ΠΌ понадобятся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для отобраТСния содСрТимого Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ

from PyQt5 import QtWidgets

import design  # Π­Ρ‚ΠΎ наш ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΈΠ·Π°ΠΉΠ½Π°

class ExampleApp(QtWidgets. QMainWindow, design.Ui_MainWindow):
    def __init__(self):
        # Π­Ρ‚ΠΎ здСсь Π½ΡƒΠΆΠ½ΠΎ для доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ
        # ΠΈ Ρ‚.Π΄. Π² Ρ„Π°ΠΉΠ»Π΅ design.py
        super().__init__()
        self.setupUi(self)  # Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нашСго Π΄ΠΈΠ·Π°ΠΉΠ½Π°
        self.btnBrowse.clicked.connect(self.browse_folder)  # Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ browse_folder
                                                            # ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ

    def browse_folder(self):
        self.listWidget.clear()  # На случай, Ссли Π² спискС ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ элСмСнты
        directory = QtWidgets.QFileDialog.getExistingDirectory(self, "Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ")
        # ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Ρ‹Π±ΠΎΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
        # Ρ€Π°Π²Π½ΠΎΠΉ ΠΏΡƒΡ‚ΠΈ ΠΊ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ

        if directory:  # Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π» Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ
            for file_name in os.listdir(directory):  # для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ
                self. listWidget.addItem(file_name)   # Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π² listWidget

def main():
    app = QtWidgets.QApplication(sys.argv)  # Новый экзСмпляр QApplication
    window = ExampleApp()  # Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ExampleApp
    window.show()  # ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
    app.exec_()  # ΠΈ запускаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

if __name__ == '__main__':  # Если ΠΌΡ‹ запускаСм Ρ„Π°ΠΉΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° Π½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ
    main()  # Ρ‚ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΠΌΒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ main()

Β 


Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ основы использования Qt Designer ΠΈ PyQt для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Python GUI прилоТСния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ спокойно ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ прилоТСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pyuic5 Π±Π΅Π· страха ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ написанный ΠΊΠΎΠ΄.

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«PyQt: Getting started with PyQt and Qt DesignerΒ»

Автоматизация Windows GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Python — Π±Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ всСм Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток. Π‘ΠΏΠ΅ΡˆΡƒ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ pywinauto для python. Он распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GNU Lesser GPL, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсплатСн, позволяСт Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС ΠΈΠ»ΠΈ просто Ρ€ΡƒΡ‚ΠΈΠ½Π½Ρ‹Π΅ процСссы для Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ со стандартными ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°ΠΌΠΈ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

import pywinauto

app = pywinauto.application.Application()
app.start_(β€œnotepad.exe”)
app.Notepad.MenuSelect(β€œHelp->About Notepad”)
app.AboutNotepad.OK.Click()
app.Notepad.Edit.TypeKeys (β€œpywinauto Works!”, with_spaces = True)

Как Π²ΠΈΠ΄Π½ΠΎ, всС ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ просто. Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ€Π°Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ (ΠΈΠ»ΠΈ ΠΎΠ³ΠΎΡ€Ρ‡Π°Ρ‚ΡŒΡΡ), Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ основныС достоинства ΠΈ нСдостатки модуля.

Достоинства:

  • pywinauto — Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ python
  • простой интСрфСйс доступа ΠΊ элСмСнтам графичСского интСрфСйса
  • встроСнный инструмСнтарий для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ

Из ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°, Π½Π° самом Π΄Π΅Π»Π΅, Π²Ρ‹ΠΏΠ»Ρ‹Π²Π°Π΅Ρ‚ мноТСство приятных Π²Π΅Ρ‰Π΅ΠΉ: Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΡΠΊΠ°Ρ‚ΡŒ лишниС dllΠΊΠΈ, ΡΡ‚ΠΈΠ»ΡŒ кодирования ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ для любого укротитСля ΠΏΠΈΡ‚ΠΎΠ½Π°. А Ρ‚Π°ΠΊΠΆΠ΅ вся ΠΌΠΎΡ‰ΡŒ языка (ΠΈ всСх доступных ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ) Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅! МоТно с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ любоС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ тСстированиС Ρ‡Π΅Ρ€Π΅Π· графичСский интСрфСйс.

Π‘ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠΌ, я Π΄ΡƒΠΌΠ°ΡŽ, всС понятно ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Под встроСнным инструмСнтариСм я понимаю спСктр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Wait, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для оТидания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ состояния элСмСнта UI Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ любого элСмСнта ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ Π² xml.

НСдостатки:

  • Ρ€Π°Π±ΠΎΡ‚Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со стандартными ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°ΠΌΠΈ
  • послСднСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ 2011 Π³ΠΎΠ΄Π°

pywinauto Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со стандартными (Windows API) ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°ΠΌΠΈ. На самом Π΄Π΅Π»Π΅, этого Π²ΠΏΠΎΠ»Π½Π΅ достаточно для ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° дСсктоп ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π₯отя, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, pywinauto Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ с нСстандартными ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π°ΠΌΠΈ, Π½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ лишь ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ. А это ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π±Π΅Π· pywinauto ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ стоит Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ процСсс Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° pywinauto.

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° SWAPY ΡƒΠΆΠ΅ описана Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ инструмСнты. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅ скаТу, Ρ‡Ρ‚ΠΎ это Π°Π½Π°Π»ΠΎΠ³ UI Spy Π½Π° pywinauto, Π΅Ρ‰Π΅ ΠΎΠ½Π° ΡƒΠΌΠ΅Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ python ΠΊΠΎΠ΄ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия нСпосрСдствСнно ΠΈΠ· сСбя. ΠšΡΡ‚Π°Ρ‚ΠΈ, SWAPY сразу даст Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ pywinauto для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π’Π°ΡˆΠ΅Π³ΠΎ прилоТСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ тСст для ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΎΠ³ΠΎ прилоТСния ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ всС просто.

Π”ΠΎ встрСчи.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Windows GUI с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python 2.7

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Windows XP с Python 2.7.2 & Tkinter GUI ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΎΠΌ. Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ простой GUI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ тСкстовоС ΠΏΠΎΠ»Π΅ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Browse», которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C:\ (Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Windows Explorer). Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² тСкстовом ΠΏΠΎΠ»Π΅ GUI. НадСюсь, это достаточно ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

python

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


guiNachos Β  Β 

28 фСвраля 2012 Π² 23:04

3 ΠΎΡ‚Π²Π΅Ρ‚Π°




8

Π£ мСня Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π΅Π±Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ.:

    ## {{{ http://code. activestate.com/recipes/438123/ (r1)
    # ======== Select a directory:

    import Tkinter, tkFileDialog

    root = Tkinter.Tk()
    dirname = tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory')
    if len(dirname ) > 0:
        print "You chose %s" % dirname 


    # ======== Select a file for opening:
    import Tkinter,tkFileDialog

    root = Tkinter.Tk()
    file = tkFileDialog.askopenfile(parent=root,mode='rb',title='Choose a file')
    if file != None:
        data = file.read()
        file.close()
        print "I got %d bytes from this file." % len(data)


    # ======== "Save as" dialog:
    import Tkinter,tkFileDialog

    myFormats = [
        ('Windows Bitmap','*.bmp'),
        ('Portable Network Graphics','*.png'),
        ('JPEG / JFIF','*.jpg'),
        ('CompuServer GIF','*.gif'),
        ]

    root = Tkinter.Tk()
    fileName = tkFileDialog.asksaveasfilename(parent=root,filetypes=myFormats ,title="Save the image as...")
    if len(fileName ) > 0:
        print "Now saving under %s" % nomFichier
    ## end of http://code. activestate.com/recipes/438123/ }}}

Π’ΠΎΡ‚ сайт, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ я Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»: http:/ / code.activestate.com / Ρ€Π΅Ρ†Π΅ΠΏΡ‚Ρ‹ / 438123-file-tkinter-dialogs/

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


udpatil Β  Β 

29 фСвраля 2012 Π² 23:46



0

ВзглянитС Π½Π° это (Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ΅): http:/ / www.java2s.com/Code/Python/GUI-Tk/SimpleEditor.htm Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π’Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ ‘open’, Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Tkinter это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ.

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


ChristopheD Β  Β 

28 фСвраля 2012 Π² 23:06



0

Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ Π²Π°ΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ tkinter, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ wxwindows. Π― использовал ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ€Π°Π½ΡŒΡˆΠ΅ с Ρ€Π°Π·Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ успСха (я просто возился с основами). Если Π²Ρ‹ всС ΠΆΠ΅ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ wxwindows, Π²ΠΎΡ‚ сайт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½: http:/ / www.wxpython. org/onlinedocs. php

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ


udpatil Β  Β 

28 фСвраля 2012 Π² 23:10


  • Как Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ windows 8 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ python 2.7 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

    Π― дСлаю нСбольшой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ python 2.7. Π― дСлаю Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρƒ мСня всС настроСно GUI, ΠΈ ΠΌΠ½Π΅ просто Π½ΡƒΠΆΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° для Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ windows 8. Команда cmd: shutdown /t xxx. Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: import subprocess time = 10 subprocess.call([shutdown.exe, /t, time]) import…

  • Python GUI — 2.7 для 3.5

    from tkinter import * #Create the window root = Tk() #Modify root window root.title(Simple GUI) root.geometry(200×50) app = frame(root) label = Label(app, text = This is a label) label.grid() #kick of the event loop root.mainloop() Π― ΡΠ»Π΅Π΄ΡƒΡŽ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΡƒ YouTube, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Python tkinter GUI. Но…


ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ вопросы:

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Readline Π½Π° windows с python 2. 7

МнС Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ readline Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° python. Π’ настоящСС врСмя я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ 2.7, Π° сторонниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π²ΠΈΠ΄Π΅Π», Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ вСрсии 2.6….

Запуск Scapy Π½Π° Windows с Python 2.7

МнС нравится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Scapy с Python v2.7 ΠΏΠΎΠ΄ Windows 7. Как я ΠΌΠΎΠ³Ρƒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pypcap для Python 2.7? МоТно Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Python скриптов Π² зависимости ΠΎΡ‚ Scapy Π²…

Q: установитС pyHook с pip для Python 2.7 Π½Π° Windows

Мой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Windows 7 (x64), ΠΈ я установил Anaconda 2 ΠΈ Anaconda 3 ΠΊΠ°ΠΊ Π² 32-Π±ΠΈΡ‚Π½ΠΎΠΉ вСрсии, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python 2.7 ΠΈΠ»ΠΈ 3.5 Π² зависимости ΠΎΡ‚ ΠΌΠΎΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π―…

Π’Ρ‹Π·ΠΎΠ² прилоТСния Windows, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· GUI с использованиСм скрипта Python 2.7: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Windows, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· скрипт GUI с использованиСм скрипта Python 2. 7. Π― Π²Ρ‹Π·Ρ‹Π²Π°ΡŽ exe Ρ‡Π΅Ρ€Π΅Π· встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ подпроцСсса python ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ…

ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ libnet для python 2.7 Π½Π° windows

Π£ мСня Π΅ΡΡ‚ΡŒ python 2.7 Π½Π° windows xp, ΠΌΠ½Π΅ Π½ΡƒΠΆΠ΅Π½ libnet, Π½ΠΎ ΠΎΠ½ Π½Π΅ поддСрТиваСтся для python 2.7 . Π― попытался ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ cygwin, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ python Π½Π° cygwin gnu, ΠΈ я Π½Π΅…

Как Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ windows 8 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ python 2.7 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

Π― дСлаю нСбольшой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ python 2.7. Π― дСлаю Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρƒ мСня всС настроСно GUI, ΠΈ ΠΌΠ½Π΅ просто Π½ΡƒΠΆΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° для Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ windows 8. Команда cmd: shutdown /t xxx. Π―…

Python GUI — 2.7 для 3.5

from tkinter import * #Create the window root = Tk() #Modify root window root.title(Simple GUI) root.geometry(200×50) app = frame(root) label = Label(app, text = This is a label) label.grid() #kick…

python 2.7 windows silent installer (. msi) — опция ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для установки ΠΏΡƒΡ‚ΠΈ?

ΠŸΡ€ΠΈ установкС python 2. 7 Π½Π° Windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ silent installer (. msi) Π΅ΡΡ‚ΡŒ Π»ΠΈ опция ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для добавлСния Python Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния path, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ опция GUI? Установщик Python 3.5 ΠΏΠΎ…

оранТСвая python 2.7 установка

Π’ настоящСС врСмя Ρƒ мСня Π΅ΡΡ‚ΡŒ Anaconda python 2.7, ΠΈ я Ρ…ΠΎΡ‡Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ€Π°Π½ΠΆΠ΅Π²Ρ‹ΠΉ GUI . Π—Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΡˆΡƒ прощСния, Ссли это Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ вопрос. Когда я Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽ установщик для Orange 2.7, ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ…

Установка tensorflow CPU с windows 10 anaconda python 2.7

Π― ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ anaconda, python 2.7, windows 10. Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ tensorflow с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ conda. Однако Ρƒ мСня Π΅ΡΡ‚ΡŒ эта ошибка: (tensorflow) C:\Users\cenk>conda install -c conda-forge tensorflow…

ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠΈΡ‚ΡŒΡΡ c MS UI Automation

Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pywinauto β€” это open source ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ дСсктопных GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Windows. Π—Π° послСдниС Π΄Π²Π° Π³ΠΎΠ΄Π° Π² Π½Π΅ΠΉ появились Π½ΠΎΠ²Ρ‹Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ:

  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ MS UI Automation. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΉ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ: WinForms, WPF, Qt5, Windows Store (UWP) ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ β€” ΠΏΠΎΡ‡Ρ‚ΠΈ всС, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° Windows.
  • БистСма бэкСндов/ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (сСйчас ΠΈΡ… Π΄Π²ΠΎΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ: Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ "win32" ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ "uia"). Π”Π°Π»ΡŒΡˆΠ΅ ΠΏΠ»Π°Π²Π½ΠΎ двигаСмся Π² сторону кросс-платформСнности.
  • Win32 Ρ…ΡƒΠΊΠΈ для ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ (hot keys Π² Π΄ΡƒΡ…Π΅ pyHook).

Π’Π°ΠΊΠΆΠ΅ сдСлаСм нСбольшой ΠΎΠ±Π·ΠΎΡ€ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² open source для дСсктопной Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π±Π΅Π· ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΠΉ Π½Π° ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠ΅ сравнСниС).

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ β€” частично Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° Π΄ΠΎΠΊΠ»Π°Π΄Π° с ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ SQA Days 20 Π² МинскС (видСозапись ΠΈ слайды), частично русская вСрсия Getting Started Guide для pywinauto.

Начнём с ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ ΠΎΠ±Π·ΠΎΡ€Π° ΠΎΠΏΠ΅Π½ сорса Π² этой области. Для дСсктопных GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ всё нСсколько слоТнСС, Ρ‡Π΅ΠΌ для Π²Π΅Π±Π°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ Selenium. Π’ΠΎΡ‚ основныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹:

ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Π₯Π°Ρ€Π΄ΠΊΠΎΠ΄ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΊΠ»ΠΈΠΊΠΎΠ², надССмся Π½Π° ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ попадания.
[+] ΠšΡ€ΠΎΡΡ-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ, Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ.
[+] Π›Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ «record-replay» запись тСстов.
[-] Π‘Π°ΠΌΡ‹ΠΉ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊ измСнСнию Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана, Ρ‚Π΅ΠΌΡ‹, ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠΎΠ½ ΠΈ Ρ‚.ΠΏ.
[-] НуТны ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ усилия Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, часто ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ‚ΡŒ тСсты с нуля ΠΈΠ»ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.
[-] АвтоматизируСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ дСйствия, для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅): autopy, PyAutoGUI, PyUserInput ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π±ΠΎΠ»Π΅Π΅ слоТныС инструмСнты Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Π½Π΅ всСгда кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ).

Π‘Ρ‚ΠΎΠΈΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹. НапримСр, для кастомной Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ (ΠΎΡ‚ Π»Π΅Π²ΠΎΠ³ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΡƒΠ³Π»Π° ΠΎΠΊΠ½Π°/элСмСнта, Π° Π½Π΅ всСго экрана) β€” ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это достаточно Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, особСнно Ссли ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ/ΡˆΠΈΡ€ΠΈΠ½Ρƒ всСго элСмСнта (Ρ‚ΠΎΠ³Π΄Π° ΠΈ Ρ€Π°Π·Π½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚).

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ для тСстов Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ со ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ настройками (Π½Π΅ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ Π² ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ случаях годится).

РаспознаваниС эталонных ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ

[+] ΠšΡ€ΠΎΡΡ-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ
[+-] ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ (Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄), Π½ΠΎ всё ΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ хитростСй.
[-+] ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ, Ρ‚.ΠΊ. Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рСсурсов CPU для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² распознавания.
[-] О распознавании тСкста (OCR), ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π΅Ρ‡ΠΈ Π½Π΅ ΠΈΠ΄Ρ‘Ρ‚ => нСльзя Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅. Насколько ΠΌΠ½Π΅ извСстно, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ OCR Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ слишком Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ для этого Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Ρ‡, ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ примСнСния Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ (welcome Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹, Ссли это ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ).

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: Sikuli, Lackey (Sikuli-совмСстимый, Π½Π° чистом Python), PyAutoGUI.

Accessibility Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

[+] Π‘Π°ΠΌΡ‹ΠΉ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚.ΠΊ. позволяСт ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ тСксту, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ отрисован систСмой ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ.
[+] ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅ => ΠΏΡ€ΠΎΡ‰Π΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстов.
[+] Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, самый быстрый, Ρ‚.ΠΊ. ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ расходуСт рСсурсы CPU.
[-] ВяТСло ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ инструмСнт: Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всС open-source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ-Π΄Π²Π΅ accessibility Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Windows/Linux/MacOS Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½ΠΈΠΊΡ‚ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° TestComplete, UFT ΠΈΠ»ΠΈ Squish.
[-] НС всСгда такая тСхнология Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ доступна. НапримСр, тСстированиС Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ экрана Π²Π½ΡƒΡ‚Ρ€ΠΈ VirtualBox’Π° β€” Ρ‚ΡƒΡ‚ Π±Π΅Π· распознавания ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ. Но Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… классичСских случаях всС-Ρ‚Π°ΠΊΠΈ accessibility ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ. О Π½Π΅ΠΌ дальшС ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: TestStack.White Π½Π° C#, Winium.Desktop Π½Π° C# (Selenium совмСстимый), MS WinAppDriver Π½Π° C# (Appium совмСстимый), pywinauto, pyatom (совмСстим с LDTP), Python-UIAutomation-for-Windows, RAutomation Π½Π° Ruby, LDTP (Linux Desktop Testing Project) ΠΈ Π΅Π³ΠΎ Windows вСрсия Cobra.

LDTP β€” ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, СдинствСнный кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ open-source инструмСнт (Ρ‚ΠΎΡ‡Π½Π΅Π΅ сСмСйство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ) Π½Π° основС accessibility Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Однако ΠΎΠ½ Π½Π΅ слишком популярСн. Π‘Π°ΠΌ Π½Π΅ пользовался ΠΈΠΌ, Π½ΠΎ ΠΏΠΎ ΠΎΡ‚Π·Ρ‹Π²Π°ΠΌ интСрфСйс Ρƒ Π½Π΅Π³ΠΎ Π½Π΅ самый ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ. Если Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΎΡ‚Π·Ρ‹Π²Ρ‹, ΠΏΡ€ΠΎΡˆΡƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ….

ВСстовый backdoor (a.k.a. Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ вСлосипСд)

Для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ сами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ часто Π΄Π΅Π»Π°ΡŽΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ для обСспСчСния testability. НапримСр, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ слуТСбный TCP сСрвСр Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, тСсты ΠΊ Π½Π΅ΠΌΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ тСкстовыС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: Π½Π° Ρ‡Ρ‚ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π²Π·ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Ρ‚.ΠΏ. НадСТно, Π½ΠΎ Π½Π΅ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ дСсктопныС accessibility Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

Π‘Ρ‚Π°Ρ€Ρ‹ΠΉ Π΄ΠΎΠ±Ρ€Ρ‹ΠΉ Win32 API

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, написанных Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° WPF ΠΈ Π·Π°Ρ‚Π΅ΠΌ Windows Store, построСны Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ Π½Π° Win32 API. А ΠΈΠΌΠ΅Π½Π½ΠΎ, MFC, WTL, C++ Builder, Delphi, VB6 β€” всС эти инструмСнты ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Win32 API. Π”Π°ΠΆΠ΅ Windows Forms β€” Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни Win32 API совмСстимыС.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: AutoIt (ΠΏΠΎΡ…ΠΎΠΆ Π½Π° VB) ΠΈ Python ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° pyautoit, AutoHotkey (собствСнный язык, Π΅ΡΡ‚ΡŒ IDispatch COM интСрфСйс), pywinauto (Python), RAutomation (Ruby), win32-autogui (Ruby).

Microsoft UI Automation

Π“Π»Π°Π²Π½Ρ‹ΠΉ плюс: тСхнология MS UI Automation ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ GUI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Windows Π·Π° Ρ€Π΅Π΄ΠΊΠΈΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΎΠ½Π° Π½Π΅ сильно Π»Π΅Π³Ρ‡Π΅ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ, Ρ‡Π΅ΠΌ Win32 API. Π˜Π½Π°Ρ‡Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π±Ρ‹ Π½Π΅ Π΄Π΅Π»Π°Π» ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ Π½Π°Π΄ Π½Π΅ΠΉ.

ЀактичСски это Π½Π°Π±ΠΎΡ€ custom COM интСрфСйсов (Π² основном, UIAutomationCore.dll), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ .NET ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ Π² Π²ΠΈΠ΄Π΅ namespace System.Windows.Automation. Она, кстати, ΠΈΠΌΠ΅Π΅Ρ‚ привнСсСнный Π±Π°Π³, ΠΈΠ·-Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ UI элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ UIAutomationCore.dll Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Ссли ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΏΡ€ΠΎ UiaComWrapper Π½Π° C#, Ρ‚ΠΎ это ΠΎΠ½ΠΎ).

Разновидности COM интСрфСйсов:

(1) Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ IUknown β€” «the root of all evil». Π‘Π°ΠΌΡ‹ΠΉ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ, Π½ΠΈ Ρ€Π°Π·Ρƒ Π½Π΅ user-friendly.
(2) IDispatch ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Excel.Application), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° win32com.client (Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² pyWin32). Π‘Π°ΠΌΡ‹ΠΉ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ красивый Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.
(3) Custom интСрфСйсы, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ сторонний Python ΠΏΠ°ΠΊΠ΅Ρ‚ comtypes.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: TestStack.White Π½Π° C#, pywinauto 0.6.0+, Winium.Desktop Π½Π° C#, Python-UIAutomation-for-Windows (Ρƒ Π½ΠΈΡ… исходный ΠΊΠΎΠ΄ ΡΠΈΡˆΠ½Ρ‹Ρ… ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ Π½Π°Π΄ UIAutomationCore.dll Π½Π΅ раскрыт), RAutomation Π½Π° Ruby.

AT-SPI

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС оси сСмСйства Linux построСны Π½Π° X Window System (Π² Fedora 25 «ΠΈΠΊΡΡ‹» помСняли Π½Π° Wayland), «ΠΈΠΊΡΡ‹» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΊΠ½Π°ΠΌΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΈ ΠΌΡ‹ΡˆΡŒΡŽ/ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ. Для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ, лист боксам ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅ β€” сущСствуСт тСхнология AT-SPI. Π£ самых популярных ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ AT-SPI registry Π΄Π΅ΠΌΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ обСспСчиваСт для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ GUI (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Qt ΠΈ GTK).

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: pyatspi2.

pyatspi2, Π½Π° ΠΌΠΎΠΉ взгляд, содСрТит слишком ΠΌΠ½ΠΎΠ³ΠΎ зависимостСй Ρ‚ΠΈΠΏΠ° Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ PyGObject. Π‘Π°ΠΌΠ° тСхнология доступна Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ динамичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libatspi.so. К Π½Π΅ΠΉ имССтся Reference Manual. Для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pywinauto ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ AT-SPI ΠΈΠΌΠ΅Π΅Π½ΠΎ Ρ‚Π°ΠΊ: Ρ‡Π΅Ρ€Π΅Π· Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ libatspi.so ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ctypes. Π•ΡΡ‚ΡŒ нСбольшая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² использовании Π½ΡƒΠΆΠ½ΠΎΠΉ вСрсии, вСдь для GTK+ ΠΈ Qt ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ½ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅. ВСроятный выпуск pywinauto 0.7.0 с ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Linux ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ 2018-Π³ΠΎ.

Apple Accessibility API

На MacOS Π΅ΡΡ‚ΡŒ собствСнный язык Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ AppleScript. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π½Π° Python, разумССтся, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· ObjectiveC. Начиная, каТСтся, Π΅Ρ‰Π΅ с MacOS 10.6 Π² прСдустановлСнный ΠΏΠΈΡ‚ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ pyobjc. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ список зависимостСй для Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² pywinauto.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹: ΠšΡ€ΠΎΠΌΠ΅ языка Apple Script, стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ATOMac, ΠΎΠ½ ΠΆΠ΅ pyatom. Он совмСстим ΠΏΠΎ интСрфСйсу с LDTP, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. На Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ iTunes Π½Π° macOs, написанный ΠΌΠΎΠΈΠΌ студСнтом. Π•ΡΡ‚ΡŒ извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π³ΠΈΠ±ΠΊΠΈΠ΅ Ρ‚Π°ΠΉΠΌΠΈΠ½Π³ΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ waitFor*). Но, Π² Ρ†Π΅Π»ΠΎΠΌ, нСплохая Π²Π΅Ρ‰ΡŒ.


Как Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с pywinauto

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ стоит Π²ΠΎΠΎΡ€ΡƒΠΆΠΈΡ‚ΡŒΡΡ инспСктором GUI ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Spy tool). Он ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ: ΠΊΠ°ΠΊ устроСна иСрархия элСмСнтов, ΠΊΠ°ΠΊΠΈΠ΅ свойства доступны. Π‘Π°ΠΌΡ‹Π΅ извСстныС инспСкторы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

  • Spy++ β€” Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² поставку Visual Studio, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Express ΠΈΠ»ΠΈ Community Edition. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Win32 API. Π’Π°ΠΊΠΆΠ΅ извСстСн Π΅Π³ΠΎ ΠΊΠ»ΠΎΠ½ AutoIt Window Info.
  • Inspect.exe β€” Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Windows SDK. Если ΠΎΠ½ Ρƒ вас установлСн, Ρ‚ΠΎ Π½Π° 64-Π±ΠΈΡ‚Π½ΠΎΠΉ Windows ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ C:\Program Files (x86)\Windows Kits\<winver>\bin\x64. Π’ самом инспСкторС Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ UI Automation вмСсто MS AA (Active Accessibility, ΠΏΡ€Π΅Π΄ΠΎΠΊ UI Automation).

ΠŸΡ€ΠΎΡΠ²Π΅Ρ‚ΠΈΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ насквозь, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ бэкСнд, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя бэкСнда ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Application.

  • backend=»win32″ β€” ΠΏΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с MFC, WTL, VB6 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ legacy прилоТСниями.
  • backend=»uia» β€” Π½ΠΎΠ²Ρ‹ΠΉ бэкСнд для MS UI Automation: идСально Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с WPF ΠΈ WinForms; Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆ для Delphi ΠΈ Windows Store ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ; Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Qt5 ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Java прилоТСниями. И Π²ΠΎΠΎΠ±Ρ‰Π΅, Ссли Inspect.exe Π²ΠΈΠ΄ΠΈΡ‚ элСмСнты ΠΈ ΠΈΡ… свойства, Π·Π½Π°Ρ‡ΠΈΡ‚ этот бэкСнд ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ UI Automation (Mozilla ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π° Π₯Ρ€ΠΎΠΌΡƒ ΠΏΡ€ΠΈ запускС Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΡ€ΠΌΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки --force-renderer-accessibility, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ элСмСнты Π½Π° страницах Π² Inspect.exe). ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, конкурСнция с Selenium Π² этой области навряд Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ (ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ для кросс-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²ΠΎΠ³ΠΎ сцСнария).

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ достаточно ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΎ. ΠŸΠΎΡ€Π° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Application ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ. Π­Ρ‚ΠΎ Π½Π΅ просто ΠΊΠ»ΠΎΠ½ стандартного класса subprocess.Popen, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ всС ваши дСйствия Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ процСсса. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ нСсколько экзСмпляров прилоТСния, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π½Π΅ хочСтся.

from pywinauto.application import Application
app = Application(backend="uia").start('notepad.exe')

# ОпишСм ΠΎΠΊΠ½ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ Π² процСссС Notepad.exe
dlg_spec = app. UntitledNotepad
# ΠΆΠ΄Π΅ΠΌ ΠΏΠΎΠΊΠ° ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ появится
actionable_dlg = dlg_spec.wait('visible')

Если хочСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сразу нСсколькими прилоТСниями, Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ класс Desktop. НапримСр, Π² ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€Π΅ Π½Π° Win10 иСрархия элСмСнтов Ρ€Π°Π·ΠΌΠ°Π·Π°Π½Π° Π°ΠΆ ΠΏΠΎ нСскольким процСссам (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ calc.exe). Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Desktop Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ.

from subprocess import Popen
from pywinauto import Desktop

Popen('calc.exe', shell=True)
dlg = Desktop(backend="uia").Calculator
dlg.wait('visible')

ΠšΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Application ΠΈΠ»ΠΈ Desktop) β€” это СдинствСнноС мСсто, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ бэкСнд. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ лоТится Π² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ «ΡΠΏΠ΅Ρ†ΠΈΡ„икация->Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€», ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ дальшС.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠΊΠΎΠ½/элСмСнтов

Π­Ρ‚ΠΎ основная концСпция, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ строится интСрфСйс pywinauto. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ/элСмСнт ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ. БпСцификация ΠΎΠΊΠ½Π° (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ WindowSpecification) Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ элСмСнт.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ спСцификации ΠΎΠΊΠ½Π°:

>>> dlg_spec = app.window(title='Untitled - Notepad')

>>> dlg_spec
<pywinauto.application.WindowSpecification object at 0x0568B790>

>>> dlg_spec.wrapper_object()
<pywinauto.controls.win32_controls.DialogWrapper object at 0x05639B70>

Π‘Π°ΠΌ поиск ΠΎΠΊΠ½Π° происходит ΠΏΠΎ Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .wrapper_object(). Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΊΠΈΠΉ «Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€» для Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°/элСмСнта ΠΈΠ»ΠΈ ΠΊΠΈΠ΄Π°Π΅Ρ‚ ElementNotFoundError (ΠΈΠ½ΠΎΠ³Π΄Π° ElementAmbiguousError, Ссли Π½Π°ΠΉΠ΄Π΅Π½ΠΎ нСсколько элСмСнтов, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ трСбуСтся ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ поиска). Π­Ρ‚ΠΎΡ‚ «Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€» ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия с элСмСнтом ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π½Π΅Π³ΠΎ.

Python ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² .wrapper_object(), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ становится ΠΊΠΎΡ€ΠΎΡ‡Π΅. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ строки Π΄Π΅Π»Π°ΡŽΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅:

dlg_spec.wrapper_object().minimize() # debugging
dlg_spec. minimize() # production

Π•ΡΡ‚ΡŒ мноТСство ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² поиска для спСцификации ΠΎΠΊΠ½Π°. Π’ΠΎΡ‚ лишь нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

# ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ
app.window(title_re='.* - Notepad$').window(class_name='Edit')

# ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ (ΠΊΠ°ΠΊ AND) ΠΈ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈΠΌ процСссом прилоТСния
dlg = Desktop(backend="uia").Calculator
dlg.window(auto_id='num8Button', control_type='Button')

Бписок всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² Π΅ΡΡ‚ΡŒ Π² Π΄ΠΎΠΊΠ°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pywinauto.findwindows.find_elements(…).

Магия доступа ΠΏΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ ΠΈ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ

Python ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС спСцификаций ΠΎΠΊΠ½Π° ΠΈ распознаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° динамичСски (Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ __getattribute__). РазумССтся, Π½Π° имя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ограничСния, ΠΊΠ°ΠΊ ΠΈ Π½Π° имя любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (нСльзя Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, запятыС ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ спСцсимволы). К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, pywinauto ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ «best match» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устойчив ΠΊ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ°ΠΌ ΠΈ нСбольшим вариациям.

app.UntitledNotepad
# Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ
app.window(best_match='UntitledNotepad')

Если всС-Ρ‚Π°ΠΊΠΈ Π½ΡƒΠΆΠ½Ρ‹ Unicode строки (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для русского языка), ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Ρ‚.ΠΏ., ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ доступ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ (ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ):

app['Untitled - Notepad']
# Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ
app.window(best_match='Untitled - Notepad')

ΠŸΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ» для магичСских ΠΈΠΌΠ΅Π½

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ эталонныС магичСскиС ΠΈΠΌΠ΅Π½Π°? Π’Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ элСмСнту ΠΏΠ΅Ρ€Π΅Π΄ поиском. Если Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ имя, достаточно ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° эталон, Π·Π½Π°Ρ‡ΠΈΡ‚ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½.

  1. По Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡƒ (тСкст, имя): app.Properties.OK.click()
  2. По тСксту ΠΈ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ элСмСнта: app.Properties.OKButton.click()
  3. По Ρ‚ΠΈΠΏΡƒ ΠΈ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ: app.Properties.Button3.click() (ΠΈΠΌΠ΅Π½Π° Button0 ΠΈ Button1 привязаны ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ элСмСнту, Button2 β€” ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ, ΠΈ дальшС ΡƒΠΆΠ΅ ΠΏΠΎ порядку β€” Ρ‚Π°ΠΊ историчСски слоТилось)
  4. По статичСскому тСксту (слСва ΠΈΠ»ΠΈ свСрху) ΠΈ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ: app. OpenDialog.FileNameEdit.set_text("") (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для элСмСнтов с динамичСским тСкстом)
  5. По Ρ‚ΠΈΠΏΡƒ ΠΈ ΠΏΠΎ тСксту Π²Π½ΡƒΡ‚Ρ€ΠΈ: app.Properties.TabControlSharing.select("General")

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π²Π°-Ρ‚Ρ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ€Π΅Π΄ΠΊΠΎ большС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΈΠΌΠ΅Π½Π° доступны для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ print_control_identifiers(). Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΠΎ элСмСнтов ΠΊΠ°ΠΊ Π½Π° экран, Ρ‚Π°ΠΊ ΠΈ Π² Ρ„Π°ΠΉΠ». Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ Π΅Π³ΠΎ эталонныС магичСскиС ΠΈΠΌΠ΅Π½Π°. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΠΏΠ°ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ спСцификации Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² скриптС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

app.Properties.child_window(title="Contains:", auto_id="13087", control_type="Edit")

Π‘Π°ΠΌΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ элСмСнтов — ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ довольно большая портянка.

>>> app.Properties.print_control_identifiers()

Control Identifiers:

Dialog - 'Windows NT Properties'    (L688, T518, R1065, B1006)
[u'Windows NT PropertiesDialog', u'Dialog', u'Windows NT Properties']
child_window(title="Windows NT Properties", control_type="Window")
   |
   | Image - ''    (L717, T589, R749, B622)
   | [u'', u'0', u'Image1', u'Image0', 'Image', u'1']
   | child_window(auto_id="13057", control_type="Image")
   |
   | Image - ''    (L717, T630, R1035, B632)
   | ['Image2', u'2']
   | child_window(auto_id="13095", control_type="Image")
   |
   | Edit - 'Folder name:'    (L790, T596, R1036, B619)
   | [u'3', 'Edit', u'Edit1', u'Edit0']
   | child_window(title="Folder name:", auto_id="13156", control_type="Edit")
   |
   | Static - 'Type:'    (L717, T643, R780, B658)
   | [u'Type:Static', u'Static', u'Static1', u'Static0', u'Type:']
   | child_window(title="Type:", auto_id="13080", control_type="Text")
   |
   | Edit - 'Type:'    (L790, T643, R1036, B666)
   | [u'4', 'Edit2', u'Type:Edit']
   | child_window(title="Type:", auto_id="13059", control_type="Edit")
   |
   | Static - 'Location:'    (L717, T669, R780, B684)
   | [u'Location:Static', u'Location:', u'Static2']
   | child_window(title="Location:", auto_id="13089", control_type="Text")
   |
   | Edit - 'Location:'    (L790, T669, R1036, B692)
   | ['Edit3', u'Location:Edit', u'5']
   | child_window(title="Location:", auto_id="13065", control_type="Edit")
   |
   | Static - 'Size:'    (L717, T695, R780, B710)
   | [u'Size:Static', u'Size:', u'Static3']
   | child_window(title="Size:", auto_id="13081", control_type="Text")
   |
   | Edit - 'Size:'    (L790, T695, R1036, B718)
   | ['Edit4', u'6', u'Size:Edit']
   | child_window(title="Size:", auto_id="13064", control_type="Edit")
   |
   | Static - 'Size on disk:'    (L717, T721, R780, B736)
   | [u'Size on disk:', u'Size on disk:Static', u'Static4']
   | child_window(title="Size on disk:", auto_id="13107", control_type="Text")
   |
   | Edit - 'Size on disk:'    (L790, T721, R1036, B744)
   | ['Edit5', u'7', u'Size on disk:Edit']
   | child_window(title="Size on disk:", auto_id="13106", control_type="Edit")
   |
   | Static - 'Contains:'    (L717, T747, R780, B762)
   | [u'Contains:1', u'Contains:0', u'Contains:Static', u'Static5', u'Contains:']
   | child_window(title="Contains:", auto_id="13088", control_type="Text")
   |
   | Edit - 'Contains:'    (L790, T747, R1036, B770)
   | [u'8', 'Edit6', u'Contains:Edit']
   | child_window(title="Contains:", auto_id="13087", control_type="Edit")
   |
   | Image - 'Contains:'    (L717, T773, R1035, B775)
   | [u'Contains:Image', 'Image3', u'Contains:2']
   | child_window(title="Contains:", auto_id="13096", control_type="Image")
   |
   | Static - 'Created:'    (L717, T786, R780, B801)
   | [u'Created:', u'Created:Static', u'Static6', u'Created:1', u'Created:0']
   | child_window(title="Created:", auto_id="13092", control_type="Text")
   |
   | Edit - 'Created:'    (L790, T786, R1036, B809)
   | [u'Created:Edit', 'Edit7', u'9']
   | child_window(title="Created:", auto_id="13072", control_type="Edit")
   |
   | Image - 'Created:'    (L717, T812, R1035, B814)
   | [u'Created:Image', 'Image4', u'Created:2']
   | child_window(title="Created:", auto_id="13097", control_type="Image")
   |
   | Static - 'Attributes:'    (L717, T825, R780, B840)
   | [u'Attributes:Static', u'Static7', u'Attributes:']
   | child_window(title="Attributes:", auto_id="13091", control_type="Text")
   |
   | CheckBox - 'Read-only (Only applies to files in folder)'    (L790, T825, R1035, B841)
   | [u'CheckBox0', u'CheckBox1', 'CheckBox', u'Read-only (Only applies to files in folder)CheckBox', u'Read-only (Only applies to files in folder)']
   | child_window(title="Read-only (Only applies to files in folder)", auto_id="13075", control_type="CheckBox")
   |
   | CheckBox - 'Hidden'    (L790, T848, R865, B864)
   | ['CheckBox2', u'HiddenCheckBox', u'Hidden']
   | child_window(title="Hidden", auto_id="13076", control_type="CheckBox")
   |
   | Button - 'Advanced. ..'    (L930, T845, R1035, B868)
   | [u'Advanced...', u'Advanced...Button', 'Button', u'Button1', u'Button0']
   | child_window(title="Advanced...", auto_id="13154", control_type="Button")
   |
   | Button - 'OK'    (L814, T968, R889, B991)
   | ['Button2', u'OK', u'OKButton']
   | child_window(title="OK", auto_id="1", control_type="Button")
   |
   | Button - 'Cancel'    (L895, T968, R970, B991)
   | ['Button3', u'CancelButton', u'Cancel']
   | child_window(title="Cancel", auto_id="2", control_type="Button")
   |
   | Button - 'Apply'    (L976, T968, R1051, B991)
   | ['Button4', u'ApplyButton', u'Apply']
   | child_window(title="Apply", auto_id="12321", control_type="Button")
   |
   | TabControl - ''    (L702, T556, R1051, B962)
   | [u'10', u'TabControlSharing', u'TabControlPrevious Versions', u'TabControlSecurity', u'TabControl', u'TabControlCustomize']
   | child_window(auto_id="12320", control_type="Tab")
   |    |
   |    | TabItem - 'General'    (L704, T558, R753, B576)
   |    | [u'GeneralTabItem', 'TabItem', u'General', u'TabItem0', u'TabItem1']
   |    | child_window(title="General", control_type="TabItem")
   |    |
   |    | TabItem - 'Sharing'    (L753, T558, R801, B576)
   |    | [u'Sharing', u'SharingTabItem', 'TabItem2']
   |    | child_window(title="Sharing", control_type="TabItem")
   |    |
   |    | TabItem - 'Security'    (L801, T558, R851, B576)
   |    | [u'Security', 'TabItem3', u'SecurityTabItem']
   |    | child_window(title="Security", control_type="TabItem")
   |    |
   |    | TabItem - 'Previous Versions'    (L851, T558, R947, B576)
   |    | [u'Previous VersionsTabItem', u'Previous Versions', 'TabItem4']
   |    | child_window(title="Previous Versions", control_type="TabItem")
   |    |
   |    | TabItem - 'Customize'    (L947, T558, R1007, B576)
   |    | [u'CustomizeTabItem', 'TabItem5', u'Customize']
   |    | child_window(title="Customize", control_type="TabItem")
   |
   | TitleBar - 'None'    (L712, T521, R1057, B549)
   | ['TitleBar', u'11']
   |    |
   |    | Menu - 'System'    (L696, T526, R718, B548)
   |    | [u'System0', u'System', u'System1', u'Menu', u'SystemMenu']
   |    | child_window(title="System", auto_id="MenuBar", control_type="MenuBar")
   |    |    |
   |    |    | MenuItem - 'System'    (L696, T526, R718, B548)
   |    |    | [u'System2', u'MenuItem', u'SystemMenuItem']
   |    |    | child_window(title="System", control_type="MenuItem")
   |    |
   |    | Button - 'Close'    (L1024, T519, R1058, B549)
   |    | [u'CloseButton', u'Close', 'Button5']
   |    | child_window(title="Close", control_type="Button")

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ всСго Π΄Π΅Ρ€Π΅Π²Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² iTunes Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π°ΠΆ Ρ‚Ρ€ΠΈ тысячи элСмСнтов!), Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ depth (Π³Π»ΡƒΠ±ΠΈΠ½Π°): depth=1 β€” сам элСмСнт, depth=2 β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпосрСдствСнныС Π΄Π΅Ρ‚ΠΈ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π•Π³ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² спСцификациях ΠΏΡ€ΠΈ создании child_window.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠœΡ‹ постоянно пополняСм список ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Из свСТих стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ сСтСвого Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° WireShark (это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Qt5 прилоТСния; хотя эту Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈ Π±Π΅Π· GUI, вСдь Π΅ΡΡ‚ΡŒ scapy.Sniffer ΠΈΠ· питоновского ΠΏΠ°ΠΊΠ΅Ρ‚Π° scapy). Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ MS Paint с Π΅Π³ΠΎ Ribbon Ρ‚ΡƒΠ»Π±Π°Ρ€ΠΎΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, написанный ΠΌΠΎΠΈΠΌ студСнтом: пСрСтаскиваниС Ρ„Π°ΠΉΠ»Π° ΠΈΠ· explorer.exe Π½Π° Chrome страницу для Google Drive (ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΡ‡ΡƒΠ΅Ρ‚ Π² Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅).

И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ подписки Π½Π° события ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ (hot keys) ΠΈ ΠΌΡ‹ΡˆΠΈ:
hook_and_listen.py.

Благодарности

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ спасибо β€” Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ постоянно ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для мСня ΠΈ Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½Π° это постоянноС Ρ…ΠΎΠ±Π±ΠΈ. Π”Π²ΠΎΠ΅ ΠΌΠΎΠΈΡ… студСнтов ΠΈΠ· ННГУ Π½Π΅Π΄Π°Π²Π½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΠ»ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΡ‹ Π±Π°ΠΊΠ°Π»Π°Π²Ρ€Π° ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅. АлСксандр внСс большой Π²ΠΊΠ»Π°Π΄ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ MS UI Automation ΠΈ Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π°Ρ‡Π°Π» Π΄Π΅Π»Π°Ρ‚ΡŒ автоматичСский Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «Π·Π°ΠΏΠΈΡΡŒ-воспроизвСдСниС» Π½Π° основС тСкстовых свойств (это самая слоТная Ρ„ΠΈΡ‡Π°), ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для «uia» бэкСнда. Иван Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ бэкСнд ΠΏΠΎΠ΄ Linux Π½Π° основС AT-SPI (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ mouse ΠΈ keyboard Π½Π° основС python-xlib β€” ΡƒΠΆΠ΅ Π² Ρ€Π΅Π»ΠΈΠ·Π°Ρ… 0.6.x).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я довольно Π΄Π°Π²Π½ΠΎ Ρ‡ΠΈΡ‚Π°ΡŽ спСцкурс ΠΏΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Python, Ρ‡Π°ΡΡ‚ΡŒ студСнтов-магистров Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ домашниС задания, рСализуя нСбольшиС Ρ„ΠΈΡ‡ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ. НСкоторыС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π½Π° стадии исслСдований Ρ‚ΠΎΠΆΠ΅ ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ раскопали ΠΈΠΌΠ΅Π½Π½ΠΎ студСнты. Π₯отя ΠΈΠ½ΠΎΠ³Π΄Π° Π·Π° качСством ΠΊΠΎΠ΄Π° приходится строго ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ. Π’ этом сильно ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ статичСскиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ (QuantifiedCode, Codacy ΠΈ Landscape) ΠΈ автоматичСскиС тСсты Π² ΠΎΠ±Π»Π°ΠΊΠ΅ (сСрвис AppVeyor) с ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° Π² Ρ€Π°ΠΉΠΎΠ½Π΅ 95%.

Π’Π°ΠΊΠΆΠ΅ спасибо всСм, ΠΊΡ‚ΠΎ оставляСт ΠΎΡ‚Π·Ρ‹Π²Ρ‹, Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ Π±Π°Π³ΠΈ ΠΈ присылаСт ΠΏΡƒΠ»Π» рСквСсты!

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы

Π—Π° вопросами ΠΌΡ‹ слСдим ΠΏΠΎ Ρ‚Π΅Π³Ρƒ Π½Π° StackOverflow (Π½Π΅Π΄Π°Π²Π½ΠΎ появился Ρ‚Π΅Π³ Π² русской вСрсии SO) ΠΈ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову Π½Π° ВостСрС. Π•ΡΡ‚ΡŒ русскоязычный Ρ‡Π°Ρ‚ Π² Gitter’Π΅.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц обновляСм Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ open-source Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для GUI тСстирования. По количСству Π·Π²Π΅Π·Π΄ Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅ быстрСС растут Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Autohotkey (Ρƒ Π½ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ большоС сообщСство ΠΈ длинная история) ΠΈ PyAutoGUI (Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ благодаря популярности ΠΊΠ½ΠΈΠ³ Π΅Π΅ Π°Π²Ρ‚ΠΎΡ€Π° Al Sweigart: «Automate the Boring Stuff with Python» ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…).

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ GUI Π½Π° Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Tkinter. Tkinter Text

Tkinter β€” графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Python, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСского интСрфСйса Π½Π° Python (начиная с Python 3.0, Tkinter ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π° Π² tkinter). Tkinter являСтся интСрфСйсом ΠΊ tcl/tk ΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Tk interface. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° кроссплатформСнна ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΈΡ… распространённых ОБ: Linux, Mac OS X, Windows. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Tkinter Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² стандартный дистрибутив Python.

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Tkinter β€” это достаточно ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ интСрфСйс ΠΊ tcl/tk, Ρ‚ΠΎ основной источник ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Π½Π΅Ρ‘ β€” man-страницы tcl/tk. Π”Π°Π½Π½Ρ‹Π΅ страницы Π΅ΡΡ‚ΡŒ Π² любой Unix-систСмС ΠΈ доступны ΠΎΠ½Π»Π°ΠΉΠ½.

Π˜ΠΌΠΏΠΎΡ€Ρ‚

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Tkinter Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любая другая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Python:

# для python 2. 7 и ниТС
import Tkinter

# для python 3.0 ΠΈ Π²Ρ‹ΡˆΠ΅
import tkinter

Π›ΠΈΠ±ΠΎ Ρ‚Π°ΠΊ:

# для python 2.7 и ниТС
from Tkinter import *

# для python 3.0 ΠΈ Π²Ρ‹ΡˆΠ΅
from tkinter import *

Π’ Tkinter Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Ρ‹ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ (widget β€” стандартизированный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ графичСского интСрфСйса, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ осущСствляСт взаимодСйствиС).

Text Π² Tkinter

Text прСдставляСт собой Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ любоС количСство тСкста. Text ΠΈΠΌΠ΅Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ свойство wrap, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° пСрСнос (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎ словам, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ WORD).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

from Tkinter import *
root=Tk()
text1=Text(root,height=7,width=7,font='Arial 14',wrap=WORD)
text1.pack()
root.mainloop()

Π’ нашСм случаС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ insert, get ΠΈ delete Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊcΡ‚Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ являСтся мСстом вставки Π² Π²ΠΈΠ΄Π΅ ‘x.y’, Π³Π΄Π΅ x являСтся строкой, Π° y – столбцом.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

text1.insert(1.0,'Π”ΠΎΠ±Π°Π²ΠΈΠΌ ВСкст\n\ Π² Π½Π°Ρ‡Π°Π»ΠΎ 1-ΠΉ строки')
text1.delete('1.0', END)   # Π£Π΄Π°Π»ΠΈΠΌ всё
text1.get('1.0', END)      # Π˜Π·Π²Π»Π΅Ρ‡Π΅ΠΌ всё

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Text Π² Tkinter ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ многострочноС тСкстовоС ΠΏΠΎΠ»Π΅. К слову, Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ web-Ρ„ΠΎΡ€ΠΌ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ составляСт 80 знакомСст ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ 24 ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ.

Но Π΄Π°Π½Π½Ρ‹Π΅ свойства ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΡ†ΠΈΠΈ width ΠΈ height. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚, Ρ†Π²Π΅Ρ‚ ΠΈ ΠΏΡ€.

from tkinter import *
root = Tk()

text = Text(width=25, height=5, bg="darkgreen", fg='white', wrap=WORD)

text.pack()
root.mainloop()

Text ΠΈ Scrollbar

Когда Π² тСкстовоС ΠΏΠΎΠ»Π΅ вводят большС Π»ΠΈΠ½ΠΈΠΉ тСкста, Ρ‡Π΅ΠΌ Π΅Π³ΠΎ высота, ΠΏΠΎΠ»Π΅ само Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π²Π½ΠΈΠ·. Для ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ колСсико ΠΌΡ‹ΡˆΠΊΠΈ, стрСлки Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ ΠΈΠ»ΠΈ скроллСр β€” полосу ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ.

Π’ Tkinter скроллСры производятся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Scrollbar. Π’ этом случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-скроллСр связываСтся с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. И Ρ€Π΅Ρ‡ΡŒ сСйчас ΠΈΠ΄Ρ‘Ρ‚ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎ многострочном тСкстовом ΠΏΠΎΠ»Π΅. НСрСдко полосы ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ Π² списках.

from tkinter import *
root = Tk()

text = Text(width=20, height=7)
text.pack(side=LEFT)

scroll = Scrollbar(command=text.yview)
scroll.pack(side=LEFT, fill=Y)

text.config(yscrollcommand=scroll.set)

root.mainloop()

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаём скроллСр, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ†ΠΈΡŽ command привязываСм ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΡƒ тСкстового поля ΠΏΠΎ оси y – text.yview. Π”Π°Π»Π΅Π΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, тСкстовому полю устанавливаСм Ρ€Π°Π½Π΅Π΅ созданный скроллСр – scroll.set, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ для этого ΠΎΠΏΡ†ΠΈΡŽ yscrollcommand.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Text

Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρƒ Text ΠΌΡ‹ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ – get(), insert(), delete(). Но Ссли Π² случаС с однострочным тСкстовым ΠΏΠΎΠ»Π΅ΠΌ достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ индСкс элСмСнта ΠΏΡ€ΠΈ Π΅Π³ΠΎ вставкС Π»ΠΈΠ±ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ, Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ многострочном ΠΏΠΎΠ»Π΅, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π²Π° – ΠΊΠ°ΠΊ Π½ΠΎΠΌΠ΅Ρ€ строки, Ρ‚Π°ΠΊ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ символа Π² Π΄Π°Π½Π½ΠΎΠΉ строкС (ΠΈΠ½Ρ‹ΠΌΠΈ словами, Π½ΠΎΠΌΠ΅Ρ€ столбца). Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ нумСрация строк здСсь начинаСтся с Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Π° нумСрация столбцов – с нуля.

from tkinter import *

def insertText():
    s = "Hello World"
    text.insert(1.0, s)

def getText():
    s = text.get(1.0, END)
    label['text'] = s

def deleteText():
    text.delete(1.0, END)

root = Tk()

text = Text(width=25, height=5)
text.pack()

frame = Frame()
frame.pack()

b_insert = Button(frame, text="Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ", command=insertText)
b_insert.pack(side=LEFT)

b_get = Button(frame, text="Π’Π·ΡΡ‚ΡŒ", command=getText)
b_get.pack(side=LEFT)

b_delete = Button(frame, text="Π£Π΄Π°Π»ΠΈΡ‚ΡŒ", command=deleteText)
b_delete.pack(side=LEFT)

label = Label()
label.pack()

root.mainloop()

БобствСнно говоря, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ get() ΠΈ delete() способны ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π΅ Π΄Π²Π°, Π° лишь ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС обрабатываСтся лишь ΠΎΠ΄ΠΈΠ½ символ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

Π’Π΅Π³ΠΈ

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ тСкстового поля Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Tkinter β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст нСпосрСдствСнно Π² Π½Ρ‘ΠΌ, придавая Ρ€Π°Π·Π½Ρ‹ΠΌ Π΅Π³ΠΎ частям Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅. РСализуСтся это посрСдством ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² tag_add() ΠΈ tag_config(). ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ добавляСт Ρ‚Π΅Π³, Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ имя ΠΈ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ тСкста, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π§Ρ‚ΠΎ касаСтся Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° tag_config(), Ρ‚ΠΎ ΠΎΠ½ настраиваСт Ρ‚Π΅Π³Ρƒ стили оформлСния.

from tkinter import *
root = Tk()

text = Text(width=50, height=10)
text.pack()
text.insert(1.0, "Hello world!\nline two")

text.tag_add('title', 1.0, '1.end')
text.tag_config('title', font=("Verdana", 24, 'bold'), justify=CENTER)

root.mainloop()

Вставка Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π² тСкстовоС ΠΏΠΎΠ»Π΅

Π’ Text ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ window_creat(). ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΠΈ особой Π² этом Π½Π΅Ρ‚, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° Canvas. Π’ Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ вставляСм ΠΌΠ΅Ρ‚ΠΊΡƒ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ (INSERT) ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ курсора:

from tkinter import *

def smile():
    label = Label(text=":)", bg="yellow")
    text.window_create(INSERT, window=label)

root = Tk()

text = Text(width=50, height=10)
text. pack()

button = Button(text=":)", command=smile)
button.pack()

root.mainloop()

РазмСстив ΠΌΠ΅Ρ‚ΠΊΡƒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ смоТСм ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ. Π’ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ случаС, Ссли Π±Ρ‹ ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π² основной Π²Π΅Ρ‚ΠΊΠ΅ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, прСдыдущая Π±Ρ‹ исчСзала.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Tkinter ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ GUI Π½Π° Python Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π½Π° ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… сайтах. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½Ρ‹ΠΉ курс Python-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… IT-спСциалистов:

.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ способ создания графичСского интСрфСйса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python — Настоящий Python

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ простого графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (GUI), Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТной Π·Π°Π΄Π°Ρ‡Π΅ΠΉ. Но Ρ‚Π°ΠΊ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ PySimpleGUI для создания красивых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понравятся Π²Π°ΠΌ ΠΈ вашим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ! PySimpleGUI — это новая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Python, которая Π² послСднСС врСмя Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ большой интСрСс.

Из этого руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ:

  • УстановитС ΠΏΠ°ΠΊΠ΅Ρ‚ PySimpleGUI
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PySimpleGUI
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ срСдство просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ PySimpleGUI
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ PySimpleGUI с Matplotlib
  • ИспользованиС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния Π² PySimpleGUI
  • Π£ΠΏΠ°ΠΊΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ PySimpleGUI для Windows

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΡ€Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ!

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с PySimpleGUI

PySimpleGUI Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π² 2018 Π³ΠΎΠ΄Ρƒ, поэтому это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ wxPython ΠΈΠ»ΠΈ PyQt.

PySimpleGUI ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠΎΡ€Ρ‚Π°:

  1. Π’ΠΊΠΈΠ½Ρ‚Π΅Ρ€
  2. PyQt
  3. wxPython
  4. Π Π΅ΠΌΠΈ

PySimpleGUI ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ части ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΡ… использованиС. Однако ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

PySimpleGUI являСтся ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΎΠΉ для Tkinter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся с Python. PySimpleGUI ΠΎΠ±Π΅Ρ€Π½ΡƒΠ» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ PySide2, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ wxPython. Когда Π²Ρ‹ устанавливаСтС PySimpleGUI, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Tkinter .Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Tkinter см. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ графичСского интСрфСйса Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Tkinter.

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ PySimpleGUI Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создаСтС с PySimpleGUI, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ для ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Но ΠΏΡƒΡΡ‚ΡŒ это Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI. PySimpleGUI ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ достаточно ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π΄Π°Ρ‡ с нСбольшой Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ.

Установка PySimpleGUI

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PySimpleGUI Π»Π΅Π³ΠΊΠΎ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ pip. Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚ PySimpleGUI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Tkinter.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

  $ python -m pip install pysimplegui
  

Π­Ρ‚ΠΎ установит PySimpleGUI Π½Π° любой установлСнный Python Π² вашСй систСмС. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PySimpleGUI Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду Python. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ срСдами Python, Π²Π°ΠΌ слСдуСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Python Virtual Environments: A Primer.

Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ PyQt, Ρ‚ΠΎ вмСсто этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pip install PySimpleGUIQt . Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас установлСн PySimpleGUI, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ!

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² PySimpleGUI

Если Π²Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ использовали инструмСнтарий GUI Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ .Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ — это ΠΎΠ±Ρ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для описания элСмСнтов, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс (UI), Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΎΠΊΠ½Π° ΠΈ Ρ‚. Π”. Π’ PySimpleGUI Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ , элСмСнты , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ ΠΊΠ°ΠΊ Elements .

Одним ΠΈΠ· основных ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² PySimpleGUI являСтся ΠΎΠΊΠ½ΠΎ Window () . Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Окно () , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  # hello_world.py

ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg

sg.Window (title = "Hello World", layout = [[]], margins = (100, 50)). Read ()
  

Window () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² — ΠΈΡ… слишком ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ здСсь. Однако Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Window () Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ поля , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² пиксСлях.

read () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ Π² Window () , Π² Π²ΠΈΠ΄Π΅ строки, Π° Ρ‚Π°ΠΊΠΆΠ΅ словаря Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ .Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± этом большС Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… этого руководства.

Когда Π²Ρ‹ запуститС этот ΠΊΠΎΠ΄, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ возмоТности отобраТСния сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты ΠΏΠΎΠΌΠΈΠΌΠΎ Window () Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ тСкста ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² смСсь.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ hello_psg.py ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ этот ΠΊΠΎΠ΄:

  # hello_psg.Ρ€Ρƒ

ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg

layout = [[sg.Text ("ΠŸΡ€ΠΈΠ²Π΅Ρ‚ ΠΎΡ‚ PySimpleGUI")], [sg.Button ("OK")]]

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
window = sg.Window ("Π”Π΅ΠΌΠΎ", ΠΌΠ°ΠΊΠ΅Ρ‚)

# Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» событий
Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ True:
    событиС, значСния = window.read ()
    # Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ
    # Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ ОК
    Ссли событиС == "ОК" ΠΈΠ»ΠΈ событиС == sg.WIN_CLOSED:
        ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π°

window.close ()
  

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π°Π±ΠΎΡ€ΠΎΠ² инструмСнтов графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ элСмСнты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ позволяя графичСскому интСрфСйсу Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… динамичСски .НапримСр, wxPython ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Sizers для динамичСской ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ элСмСнтов. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ wxPython, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ «Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Python с графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ wxPythonΒ».

PySimpleGUI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки Python для размСщСния своих элСмСнтов. Π’ этом случаС Π²Ρ‹ добавляСтС элСмСнт Text () ΠΈ элСмСнт Button () . Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ создаСтС ΠΎΠΊΠ½ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ свой собствСнный ΠΌΠ°ΠΊΠ΅Ρ‚ .

ПослСдний Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° — это Ρ†ΠΈΠΊΠ» событий .ГрафичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΈ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сдСлаСт. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС ΠΈΠ»ΠΈ ввСсти Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Когда ΠΎΠ½ΠΈ это Π΄Π΅Π»Π°ΡŽΡ‚, эти события ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»ΠΎΠΌ событий.

Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ PySimpleGUI, Π²Ρ‹ создаСтС Ρ†ΠΈΠΊΠ» событий, создавая бСсконСчный Ρ†ΠΈΠΊΠ» ΠΈ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считываСт события ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠΊΠ½Π° . Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ OK, ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π’Ρ‹Ρ…ΠΎΠ΄Β», Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π°ΡΡŒ.Для этого Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°, Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ () ΠΎΠΊΠ½ΠΎ .

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ создаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ простых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PySimpleGUI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ большоС количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… кроссплатформСнных графичСских интСрфСйсов. ДСмовСрсии, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов использования PySimpleGUI. Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, ΠΏΠΎΠΌΠΈΠΌΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ руководствС. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ свСдСния, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ дСмонстрациями, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² PySimpleGUI.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ срСдства просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ PySimpleGUI

Одна ΠΈΠ· дСмонстраций Π½Π° страницС PySimpleGUI GitHub — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python — это вСсСло. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄ для просмотра Π²Π°ΡˆΠΈΡ… собствСнных Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ для просмотра Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный Π² PySimpleGUI элСмСнт Image () для просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. К соТалСнию, элСмСнт Image () ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ PNG ΠΈ GIF Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ вСрсии PySimpleGUI.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Pillow, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ TIFF, JPG ΠΈ BMP. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ PySimpleGUI Π½Π° GitHub, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ссли Π²Ρ‹ установитС ΠΏΠΎΡ€Ρ‚ PySimpleGUIQt, Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Qt ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ большС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Π΅ΠΌ Tkinter.

Π’ΠΎΡ‚ ΠΌΠ°ΠΊΠ΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡ‚Π΅ΡΡŒ. ПозТС Π²Ρ‹ рассмотритС Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ частями.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ img_viewer.py Π² любом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ Python. Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

  1 # img_viewer.py
 2
 3ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ PySimpleGUI ΠΊΠ°ΠΊ sg
 4import os.path
 5
 6 # Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΎΠΊΠ½Π° Π² 2 столбца
 7
 8file_list_column = [
 9 [
10 сг.ВСкст («Папка с изобраТСниями»),
11 sg.In (size = (25, 1), enable_events = True, key = "- FOLDER-"),
12 sg.FolderBrowse (),
13],
14 [
15 sg.Listbox (
16 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ = [], enable_events = True, size = (40, 20), key = "- БПИБОК Π€ΠΠ™Π›ΠžΠ’-"
17)
18],
19]
20
21 # Пока Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°
22image_viewer_column = [
23 [sg.Text ("Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· списка слСва:")],
24 [sg.Text (size = (40, 1), key = "- TOUT-")],
25 [sg.Image (key = "- IMAGE-")],
26]
27
28 # ----- ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ -----
29layout = [
30 [
31 sg.Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† (file_list_column),
32 sg.VSeperator (),
33 sg.Column (image_viewer_column),
34]
35]
36
37window = sg.Window ("БрСдство просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ", ΠΌΠ°ΠΊΠ΅Ρ‚)
38
39 # Запуск Ρ†ΠΈΠΊΠ»Π° событий
40 ΠΏΠΎΠΊΠ° Π’Π΅Ρ€Π½ΠΎ:
41 событиС, values ​​= window. read ()
42, Ссли событиС == "Π’Ρ‹Ρ…ΠΎΠ΄" ΠΈΠ»ΠΈ событиС == sg.WIN_CLOSED:
43 ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²
44 # Имя ΠΏΠ°ΠΏΠΊΠΈ Π±Ρ‹Π»ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΡΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅
45, Ссли event == "-FOLDER-":
46 ΠΏΠ°ΠΏΠΊΠ° = значСния ["- FOLDER-"]
47 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ:
48 # ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅
49 список_Ρ„Π°ΠΉΠ»ΠΎΠ² = os.listdir (ΠΏΠ°ΠΏΠΊΠ°)
50 ΠΊΡ€ΠΎΠΌΠ΅:
51 file_list = []
52
53 fnames = [
54 ΠΆ
55 для f в file_list
56, Ссли os.path.isfile (os.path.join (папка, f))
57 ΠΈ f.lower () .ndswith ((". Png", ".gif"))
58]
59 ΠΎΠΊΠ½ΠΎ ["- БПИБОК Π€ΠΠ™Π›ΠžΠ’ -"]. Update (fnames)
60 elif event == "-FILE LIST-": ​​# Π€Π°ΠΉΠ» Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠ· списка
61 ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°:
62 filename = os.path.join (
63 значСния ["- ПАПКА-"], значСния ["- БПИБОК Π€ΠΠ™Π›ΠžΠ’ -"] [0]
64)
65 ΠΎΠΊΠ½ΠΎ ["- TOUT-"].ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ (имя Ρ„Π°ΠΉΠ»Π°)
66 ΠΎΠΊΠ½ΠΎ ["- Π˜Π—ΠžΠ‘Π ΠΠ–Π•ΠΠ˜Π• -"]. Update (filename = filename)
67
68, ΠΊΡ€ΠΎΠΌΠ΅:
69 Ρ‡Π΅Π».
70
71window.close ()
  

Π£Ρ„! Π­Ρ‚ΠΎ довольно ΠΌΠ½ΠΎΠ³ΠΎ строк ΠΊΠΎΠ΄Π°! Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим это ΠΏΠΎ частям.

Π’ΠΎΡ‚ нСсколько ΠΏΠ΅Ρ€Π²Ρ‹Ρ… строк:

  1 # img_viewer.py
 2
 3ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ PySimpleGUI ΠΊΠ°ΠΊ sg
 4import os. path
 5
 6 # Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΎΠΊΠ½Π° Π² 2 столбца
 7
 8file_list_column = [
 9 [
10 sg.Text («Папка ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ»),
11 sg.In (size = (25, 1), enable_events = True, key = "- FOLDER-"),
12 сг.FolderBrowse (),
13],
14 [
15 sg.Listbox (
16 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ = [], enable_events = True, size = (40, 20), key = "- БПИБОК Π€ΠΠ™Π›ΠžΠ’-"
17)
18],
19]
  

Π—Π΄Π΅ΡΡŒ, Π² строках 3 ΠΈ 4 , Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ PySimpleGUI ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ os Python. Π—Π°Ρ‚Π΅ΠΌ Π² строках с 8 ΠΏΠΎ 19 Π²Ρ‹ создаСтС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список элСмСнтов, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ столбСц ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π­Ρ‚ΠΎ создаст ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠ±Π·ΠΎΡ€Β», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°ΠΏΠΊΡƒ с изобраТСниями.

ΠšΠ»ΡŽΡ‡ , ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π²Π°ΠΆΠ΅Π½. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта Π² вашСм графичСском интСрфСйсС. Для элСмСнта управлСния Π²Π²ΠΎΠ΄ΠΎΠΌ тСкста In () Π²Ρ‹ присваиваСтС Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ "-FOLDER-" . Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это ΠΏΠΎΠ·ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ содСрТимому элСмСнта. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ события для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° enable_events .

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Listbox () ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ список ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ изобраТСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для отобраТСния.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Listbox () значСниями, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² список строк.

Когда Π²Ρ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ свой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Listbox () Π±Ρ‹Π» пустым, поэтому Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π΅ΠΌΡƒ пустой список. Π’Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ события для этого элСмСнта, устанавливаСтС Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ присваиваСтС Π΅ΠΌΡƒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠ°ΠΊ Π²Ρ‹ сдСлали с элСмСнтом input.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ элСмСнтов:

  21 # Пока Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°
22image_viewer_column = [
23 [sg.ВСкст ("Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· списка слСва:")],
24 [sg.Text (size = (40, 1), key = "- TOUT-")],
25 [sg.Image (key = "- IMAGE-")],
26]
  

Бписок списков Π² строках с 22 ΠΏΠΎ 26 создаСт Ρ‚Ρ€ΠΈ элСмСнта. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт сообщаСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для отобраТСния. Π’Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ имя Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ () .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ элСмСнт Image () Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ , Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ элСмСнту ΠΏΠΎΠ·ΠΆΠ΅.Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± элСмСнтС Image () см. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° опрСдСляСт ваш ΠΌΠ°ΠΊΠ΅Ρ‚:

  28 # ----- ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΌΠ°ΠΊΠ΅Ρ‚ -----
29layout = [
30 [
31 sg.Column (столбСц_Ρ„Π°ΠΉΠ»ΠΎΠ²),
32 sg.VSeperator (),
33 sg.Column (image_viewer_column),
34]
35]
  

ПослСдний список, Π² строках с 29 ΠΏΠΎ 35 , содСрТит ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт располоТСниСм элСмСнтов Π½Π° экранС. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ содСрТит Π΄Π²Π° элСмСнта Column () с VSeperator () ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. VSeperator () — это псСвдоним для VerticalSeparator () . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Column () ΠΈ VSeperator () , ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ страницы Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚ Π² ΠΎΠΊΠ½ΠΎ , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

  37window = sg.Window («БрСдство просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉΒ», ΠΌΠ°ΠΊΠ΅Ρ‚)
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠΎΠ΄ Ρ†ΠΈΠΊΠ»Π° событий. Π’ΠΎΡ‚ пСрвая ΡˆΡ‚ΡƒΠΊΠ°:

  39 ΠΏΡ€ΠΈ этом True:
40 событиС, значСния = ΠΎΠΊΠ½ΠΎ.Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ()
41, Ссли событиС == "Π’Ρ‹Ρ…ΠΎΠ΄" ΠΈΠ»ΠΈ событиС == sg.WIN_CLOSED:
42 ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²
  

Π¦ΠΈΠΊΠ» событий содСрТит Π»ΠΎΠ³ΠΈΠΊΡƒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ события ΠΈ значСния ΠΈΠ· ΠΎΠΊΠ½Π° . Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ строкой ΠΊΠ»ΡŽΡ‡Π° любого элСмСнта, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ взаимодСйствуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ values ​​ содСрТит ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт ΠΊΠ»ΡŽΡ‡ элСмСнта со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. НапримСр, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ°ΠΏΠΊΡƒ, Ρ‚ΠΎ Β«-FOLDER-Β» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅.

УсловныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для управлСния происходящим. Если событиС Ρ€Π°Π²Π½ΠΎ Β«Π’Ρ‹Ρ…ΠΎΠ΄Β», ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ , Ρ‚ΠΎ Π²Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² Ρ†ΠΈΠΊΠ»Π΅:

  44 # Имя ΠΏΠ°ΠΏΠΊΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅
45if event == "-FOLDER-":
46 ΠΏΠ°ΠΏΠΊΠ° = значСния ["- FOLDER-"]
47 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ:
48 # ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΠ°ΠΏΠΊΠ΅
49 список_Ρ„Π°ΠΉΠ»ΠΎΠ² = os.listdir (ΠΏΠ°ΠΏΠΊΠ°)
50 ΠΊΡ€ΠΎΠΌΠ΅:
51 file_list = []
52
53 fnames = [
54 ΠΆ
55 для f в file_list
56, Ссли os.path.isfile (os.path.join (папка, f))
57 ΠΈ f.lower () .ndswith ((". Png", ".gif"))
58]
59 ΠΎΠΊΠ½ΠΎ ["- БПИБОК Π€ΠΠ™Π›ΠžΠ’ -"]. Update (fnames)
  

На этот Ρ€Π°Π· Π²Ρ‹ сравнитС событиС с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Β«-FOLDER-Β» , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся Π½Π° элСмСнт In () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создали Ρ€Π°Π½Π΅Π΅. Если событиС сущСствуСт, Π·Π½Π°Ρ‡ΠΈΡ‚, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» ΠΏΠ°ΠΏΠΊΡƒ, ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ os.listdir () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚Π΅ этот список Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ ".png" ΠΈΠ»ΠΈ ".gif" .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ суТСния Ρ‚ΠΈΠΏΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ вмСсто этого Pillow ΠΈΠ»ΠΈ PySimpleGUIQt.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ условного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

  60elif event == "-FILE LIST-": ​​# Π€Π°ΠΉΠ» Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ ΠΈΠ· списка
61 ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°:
62 имя_Ρ„Π°ΠΉΠ»Π° = os.path.join (
63 значСния ["- ПАПКА-"], значСния ["- БПИБОК Π€ΠΠ™Π›ΠžΠ’ -"] [0]
64)
65 ΠΎΠΊΠ½ΠΎ ["- TOUT -"]. Update (имя Ρ„Π°ΠΉΠ»Π°)
66 ΠΎΠΊΠ½ΠΎ ["- Π˜Π—ΠžΠ‘Π ΠΠ–Π•ΠΠ˜Π• -"]. Update (filename = filename)
67, ΠΊΡ€ΠΎΠΌΠ΅:
68 Ρ‡Π΅Π».
  

Если событиС Ρ€Π°Π²Π½ΠΎ "-FILE LIST-" , Ρ‚ΠΎ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» Ρ„Π°ΠΉΠ» Π² спискС Listbox () , ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ элСмСнт Image () , Π° Ρ‚Π°ΠΊΠΆΠ΅ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Text () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π° справа.

ПослСдний Π±ΠΈΡ‚ ΠΊΠΎΠ΄Π° - это Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π’Ρ‹Ρ…ΠΎΠ΄Β», ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ. Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ window.close () .

ВСхничСски Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ эту строку Π² своСм ΠΊΠΎΠ΄Π΅, ΠΈ Python всС Ρ€Π°Π²Π½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½ΠΎ всСгда ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ послС сСбя. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π²Π΅Π±-ΠΏΠΎΡ€Ρ‚ PySimpleGUI ΠΈ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΎΠΊΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΡ€Ρ‚ останСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ запуститС ΠΊΠΎΠ΄, ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ интСрфСйс:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΠ±Π·ΠΎΡ€Β», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠ°ΠΏΠΊΡƒ с изобраТСниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄.Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π² элСмСнт Text () .

Когда Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚Π΅ просмотр ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Matplotlib с PySimpleGUI.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Matplotlib с PySimpleGUI

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² - ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ. Один ΠΈΠ· самых популярных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² для Python - Matplotlib. Matplotlib ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ самыС Ρ€Π°Π·Π½Ρ‹Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом большС, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Python Plotting With Matplotlib (Guide).

Matplotlib ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ с PySimpleGUI, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ довольно Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π² свой графичСский интСрфСйс, Ссли Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Matplotlib.

Если Ρƒ вас Π½Π΅ установлСн Matplotlib, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip :

  $ python -m pip install matplotlib
  

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ ΠΈΠ· дСмонстраций PySimpleGUI. Matplotlib ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ NumPy, поэтому Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ:

  $ python -m pip install numpy
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ всС части, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для написания ΠΊΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ psg_matplotlib.py .

Π”Π΅ΠΌΠΎ-ΠΊΠΎΠ΄ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, поэтому Π²Ρ‹ добавляСтС ΠΊΠΎΠ΄ частями, начиная с этого:

  ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ numpy ΠΊΠ°ΠΊ np
ΠΈΠ· matplotlib.backends.backend_tkagg ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ FigureCanvasTkAgg
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ matplotlib

fig = matplotlib. figure.Figure (figsize = (5, 4), dpi = 100)
t = np.arange (0, 3, .01)
fig.add_subplot (111) .plot (t, 2 * np.sin (2 * np.pi * t))
  

Π­Ρ‚ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ понадобится для Ρ€Π°Π±ΠΎΡ‚Ρ‹ вашСго ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСт Matplotlib Figure () ΠΈ добавляСт Π³Ρ€Π°Ρ„ΠΈΠΊ с использованиСм add_subplot () .Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΠΎΡ€Ρ‚ PySimpleGUIQt Π² настоящСС врСмя Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ Π½Π°Π΄ этим ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ выпуска.

И Π² PySimpleGUI, ΠΈ Π² Tkinter для рисования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ элСмСнт Canvas () . ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом элСмСнтС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для рисования Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π² PySimpleGUI Canvas () . Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ функция - это ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ нСсколько Ρ€Π°Π·.ВзглянитС:

  matplotlib.use (Β«TkAggΒ»)

def draw_figure (холст, рисунок):
    figure_canvas_agg = FigureCanvasTkAgg (рисунок, холст)
    figure_canvas_agg. draw ()
    figure_canvas_agg.get_tk_widget (). pack (side = "top", fill = "both", expand = 1)
    Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ figure_canvas_agg
  

Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ figure_canvas_agg.draw () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ для элСмСнта PySimpleGUI Canvas () .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI Canvas () , Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² FigureCanvasTkAgg () вмСстС с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Figure Matplotlib . FigureCanvasTkAgg () происходит ΠΈΠ· Matplotlib ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Tkinter для встраивания Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² PySimpleGUI. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π±Ρ‹ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Ссли Π±Ρ‹ Π²Ρ‹ использовали PySimpleGUIQt.

ПослСдний шаг - Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс с PySimpleGUI:

  # ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΎΠΊΠ½Π°
layout = [
    [sg.Text («ВСст ΡΡŽΠΆΠ΅Ρ‚Π°Β»)],
    [sg.Canvas (key = "- CANVAS-")],
    [sg.Button ("Π₯ΠΎΡ€ΠΎΡˆΠΎ")],
]

# Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π΅ Π±Π΅Π· ΡΡŽΠΆΠ΅Ρ‚Π°
ΠΎΠΊΠ½ΠΎ = sg.Window (
    "Π•Π΄ΠΈΠ½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ Matplotlib",
    ΠΌΠ°ΠΊΠ΅Ρ‚,
    располоТСниС = (0, 0),
    finalize = True,
    element_justification = "Ρ†Π΅Π½Ρ‚Ρ€",
    font = "Helvetica 18",
)

# ДобавляСм ΡΡŽΠΆΠ΅Ρ‚ Π² ΠΎΠΊΠ½ΠΎ
draw_figure (ΠΎΠΊΠ½ΠΎ ["- CANVAS-"]. TKCanvas, рис)

событиС, значСния = window.read ()

window.close ()
  

Для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это элСмСнт Text () , элСмСнт Canvas () ΠΈ элСмСнт Button () . Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ добавляСтС всС это Π² Window () ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ draw_figure () для рисования Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Ρ†ΠΈΠΊΠ» событий, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с элСмСнтами этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊ:

Π’ PySimpleGUI Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСмонстрации Matplotlib, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ OpenCV с PySimpleGUI.

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ OpenCV с PySimpleGUI

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅ сСйчас являСтся горячСй Ρ‚Π΅ΠΌΠΎΠΉ. Python позволяСт Π²Π°ΠΌ Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° opencv-python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ для популярного прилоТСния OpenCV . Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ Π·Ρ€Π΅Π½ΠΈΠΈ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ «РаспознаваниС Π»ΠΈΡ† с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PythonΒ» Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π”ΠΎ 25 строк ΠΊΠΎΠ΄Π°Β».

PySimpleGUI ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ OpenCV.Однако сначала Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ OpenCV, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pip :

  $ python -m pip ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ opencv-python
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас установлСн OpenCV, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π±Π°Π²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!

Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ PySimpleGUI, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ OpenCV ΠΈ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²ΠΈΠ΄Π΅ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Код этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, Π½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ Π½Π΅ ΠΎ Ρ‡Π΅ΠΌ. ПозТС это Π±ΡƒΠ΄Π΅Ρ‚ объяснСно Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ psg_opencv.py ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

  1ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ SG
  2ΠΈΠΌΠΏΠΎΡ€Ρ‚ cv2
  3ΠΈΠΌΠΏΠΎΡ€Ρ‚ numpy ΠΊΠ°ΠΊ np
  4
  5def main ():
  6 sg.theme ("Π‘Π²Π΅Ρ‚Π»ΠΎ-Π·Π΅Π»Π΅Π½Ρ‹ΠΉ")
  7
  8 # ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΎΠΊΠ½Π°
  9 layout = [
 10 [sg. Text ("OpenCV Demo", size = (60, 1), justification = "center")],
 11 [sg.Image (filename = "", key = "- IMAGE-")],
 12 [sg.Radio ("НСт", "Π Π°Π΄ΠΈΠΎ", True, size = (10, 1))],
 13 [
 14 ΡˆΡ‚.Radio ("ΠΏΠΎΡ€ΠΎΠ³", "Radio", size = (10, 1), key = "- THRESH-"),
 15 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
 16 (0, 255),
 17 128,
 18 1,
 19 ориСнтация = "h",
 20 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
 21 клавиша = "- ΠŸΠžΠ ΠžΠ“ΠžΠ’Π«Π™ БЛАЙДЕР-",
 22),
 23],
 24 [
 25 sg.Radio ("canny", "Radio", size = (10, 1), key = "- CANNY-"),
 26 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
 27 (0, 255),
 28 128,
 29 1,
 30 ориСнтация = "Ρ‡",
 31 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (20, 15),
 32 key = "- CANNY SLIDER A-",
 33),
 34 sg.Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
 35 (0, 255),
 36 128,
 37 1,
 38 ориСнтация = "h",
 39 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (20, 15),
 40 key = "- CANNY SLIDER B-",
 41),
 42],
 43 [
 44 sg.Radio ("Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅", "Π Π°Π΄ΠΈΠΎ", size = (10, 1), key = "- BLUR-"),
 45 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
 46 (1, 11),
 47 1,
 48 1,
 49 ориСнтация = "h",
 50 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
 51 key = "- BLUR SLIDER-",
 52),
 53],
 54 [
 55 сг.Radio ("ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ", "Π Π°Π΄ΠΈΠΎ", size = (10, 1), key = "- HUE-"),
 56 sg.  Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
 57 (0, 225),
 58 0,
 59 1,
 60 ориСнтация = "Ρ‡",
 61 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
 62 key = "- БЛАЙДЕР ΠžΠ’Π’Π•ΠΠžΠš-",
 63),
 64],
 65 [
 66 sg.Radio ("ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ", "Π Π°Π΄ΠΈΠΎ", size = (10, 1), key = "- ENHANCE-"),
 67 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
 68 (1, 255),
 69 128,
 70 1,
 71 ориСнтация = "h",
 72 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
 73 key = "- Π£Π›Π£Π§Π¨Π•ΠΠ˜Π• БЛАЙДЕРА-",
 74),
 75],
 76 [sg.Кнопка ("Π’Ρ‹Ρ…ΠΎΠ΄", size = (10, 1))],
 77]
 78
 79 # Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΅Π³ΠΎ Π±Π΅Π· ΡΡŽΠΆΠ΅Ρ‚Π°
 80 window = sg.Window ("Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ OpenCV", layout, location = (800, 400))
 81 Π³ΠΎΠ΄
 82 cap = cv2.VideoCapture (0)
 83
 84, ΠΏΠΎΠΊΠ° True:
 85 событиС, значСния = window.read (Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ = 20)
 86, Ссли событиС == "Π’Ρ‹Ρ…ΠΎΠ΄" ΠΈΠ»ΠΈ событиС == sg.WIN_CLOSED:
 87 ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²
 88
 89 Ρ€Π΅Ρ‚, frame = cap.read ()
 90
 91, Ссли значСния ["- THRESH-"]:
 92 frame = cv2.cvtColor (frame, cv2.COLOR_BGR2LAB) [:,:, 0]
 93 ΠΊΠ°Π΄Ρ€ = cv2.ΠΏΠΎΡ€ΠΎΠ³(
 94 ΠΊΠ°Π΄Ρ€, значСния ["- THRESH SLIDER-"], 255, cv2.THRESH_BINARY
 95) [1]
 96 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ elif ["- CANNY-"]:
 97 ΠΊΠ°Π΄Ρ€ = cv2.Canny (
 ΠšΠ°Π΄Ρ€ 98, значСния ["- CANNY SLIDER A-"], значСния ["- CANNY SLIDER B-"]
 99)
100 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ elif ["- BLUR-"]:
101 ΠΊΠ°Π΄Ρ€ = cv2. GaussianBlur (ΠΊΠ°Π΄Ρ€, (21, 21), значСния ["- БЛАЙДЕР Π ΠΠ—ΠœΠ«Π¨Π›Π•ΠΠ˜Π―-"])
102 значСния elif ["- HUE-"]:
103 ΠΊΠ°Π΄Ρ€ = cv2.cvtColor (ΠΊΠ°Π΄Ρ€, cv2.COLOR_BGR2HSV)
104 frame [:,:, 0] + = int (values ​​["- HUE SLIDER-"])
105 ΠΊΠ°Π΄Ρ€ΠΎΠ² = cv2.cvtColor (ΠΊΠ°Π΄Ρ€, cv2.COLOR_HSV2BGR)
106 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ elif ["- ENHANCE-"]:
107 enh_val = values ​​["- БЛАЙДЕР Π£Π›Π£Π§Π¨Π•ΠΠ˜Π―-"] / 40
108 clahe = cv2.createCLAHE (clipLimit = enh_val, tileGridSize = (8, 8))
109 lab = cv2.cvtColor (Ρ€Π°ΠΌΠΊΠ°, cv2.COLOR_BGR2LAB)
110 lab [:,:, 0] = clahe.apply (lab [:,:, 0])
111 frame = cv2.cvtColor (lab, cv2.COLOR_LAB2BGR)
112
113 imgbytes = cv2.imencode (". Png", frame) [1] .tobytes ()
114 ΠΎΠΊΠ½ΠΎ ["- Π˜Π—ΠžΠ‘Π ΠΠ–Π•ΠΠ˜Π• -"]. Update (data = imgbytes)
115
116 ΠΎΠΊΠ½ΠΎ.Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ()
117
118 основной ()
  

Π­Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°! Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ частям:

  1ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ SG
 2ΠΈΠΌΠΏΠΎΡ€Ρ‚ cv2
 3ΠΈΠΌΠΏΠΎΡ€Ρ‚ numpy ΠΊΠ°ΠΊ np
 4
 5def main ():
 6 sg.theme ("Π‘Π²Π΅Ρ‚Π»ΠΎ-Π·Π΅Π»Π΅Π½Ρ‹ΠΉ")
 7
 8 # ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΎΠΊΠ½Π°
 9 layout = [
10 [sg.Text ("OpenCV Demo", size = (60, 1), justification = "center")],
11 [sg. Image (filename = "", key = "- IMAGE-")],
12 [sg.Radio ("НСт", "Π Π°Π΄ΠΈΠΎ", True, size = (10, 1))],
13 [
14 ΡˆΡ‚.Radio ("ΠΏΠΎΡ€ΠΎΠ³", "Radio", size = (10, 1), key = "- THRESH-"),
15 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
16 (0, 255),
17 128,
18 1,
19 ориСнтация = "h",
20 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
21 клавиша = "- ΠŸΠžΠ ΠžΠ“ΠžΠ’Π«Π™ БЛАЙДЕР-",
22),
23],
  

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с 1 ΠΏΠΎ 3 - это ΠΈΠΌΠΏΠΎΡ€Ρ‚ для Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ устанавливаСтС Ρ‚Π΅ΠΌΡƒ Π½Π° строкС 6 .

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом, начиная со строки , являСтся созданиС ΠΌΠ°ΠΊΠ΅Ρ‚Π° для всСх элСмСнтов графичСского интСрфСйса.ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ элСмСнтов Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя элСмСнт Text (), , элСмСнт Image (), ΠΈ элСмСнт Radio () . Π’Ρ‹ устанавливаСтС ΠΊΠ»ΡŽΡ‡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° для элСмСнта Image Π½Π° "-IMAGE-" . Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Π΅ элСмСнт Radio () ΠΈ элСмСнт Slider () ΠΈ устанавливаСтС ΠΈΡ… ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π½Π° "-THRESH-" ΠΈ "-THRESH SLIDER-" соотвСтствСнно.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ нСсколько элСмСнтов Π² ΠΌΠ°ΠΊΠ΅Ρ‚ :

  24 [
25 сг.Radio ("canny", "Radio", size = (10, 1), key = "- CANNY-"),
26 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
27 (0, 255),
28 128,
29 1,
30 ориСнтация = "Ρ‡",
31 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (20, 15),
32 key = "- CANNY SLIDER A-",
33),
34 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
35 (0, 255),
36 128,
37 1,
38 ориСнтация = "h",
39 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (20, 15),
40 key = "- CANNY SLIDER B-",
41),
42],
  

Π’ строках с 24 ΠΏΠΎ 42 Π²Ρ‹ добавляСтС Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт Radio () ΠΈ Π΄Π²Π° элСмСнта Slider () для управлСния ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‡Π΅Ρ‚ΠΊΠΈΡ… ΠΊΡ€Π°Π΅Π² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ установитС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ способ размытия ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

  43 [
44 sg.Radio ("Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅", "Π Π°Π΄ΠΈΠΎ", size = (10, 1), key = "- BLUR-"),
45 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
46 (1, 11),
47 1,
48 1,
49 ориСнтация = "h",
50 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
51 key = "- BLUR SLIDER-",
52),
53],
  

Π—Π΄Π΅ΡΡŒ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ элСмСнтов для управлСния Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅ΠΌ изобраТСния , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ извСстно ΠΊΠ°ΠΊ сглаТиваниС изобраТСния . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ большС ΠΎΠ± этой Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ OpenCV.

Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Π²Π° Π½Π°Π±ΠΎΡ€Π° элСмСнтов управлСния. Π”Π°Π»Π΅Π΅ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ элСмСнты управлСния ΠΎΡ‚Ρ‚Π΅Π½ΠΊΠΎΠΌ:

  54 [
55 sg.Radio ("ΠΎΡ‚Ρ‚Π΅Π½ΠΎΠΊ", "Π Π°Π΄ΠΈΠΎ", size = (10, 1), key = "- HUE-"),
56 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
57 (0, 225),
58 0,
59 1,
60 ориСнтация = "Ρ‡",
61 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
62 key = "- БЛАЙДЕР ΠžΠ’Π’Π•ΠΠžΠš-",
63),
64],
  

Π­Ρ‚ΠΈ элСмСнты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ пространствами .Π¦Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ пространства выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ этого руководства, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π½ΠΈΡ… большС Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ «ИзмСнСниС Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… пространств» Π½Π° Π²Π΅Π±-сайтС OpenCV.

ПослСдниС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для управлСния контрастом:

  65 [
66 sg.Radio ("ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ", "Π Π°Π΄ΠΈΠΎ", size = (10, 1), key = "- ENHANCE-"),
67 sg. Π‘Π»Π°ΠΉΠ΄Π΅Ρ€ (
68 (1, 255),
69 128,
70 1,
71 ориСнтация = "h",
72 Ρ€Π°Π·ΠΌΠ΅Ρ€ = (40, 15),
73 key = "- Π£Π›Π£Π§Π¨Π•ΠΠ˜Π• БЛАЙДЕРА-",
74),
75],
76 [sg.Кнопка ("Π’Ρ‹Ρ…ΠΎΠ΄", size = (10, 1))],
77]
78
79 # Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π±Π΅Π· ΡΡŽΠΆΠ΅Ρ‚Π°
80window = sg. Window ("Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ OpenCV", ΠΌΠ°ΠΊΠ΅Ρ‚, располоТСниС = (800, 400))
81 Π³ΠΎΠ΄
82cap = cv2.VideoCapture (0)
  

Π­Ρ‚ΠΈ послСдниС нСсколько элСмСнтов позволят Π²Π°ΠΌ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ выравнивания гистограммы с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ контраста.

На этом ΠΌΠ°ΠΊΠ΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½. . Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ свой ΠΌΠ°ΠΊΠ΅Ρ‚ Π² ΠΎΠΊΠ½ΠΎ () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ свой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π½Π° экранС.

НаконСц, Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ cv2.VideoCapture (0) для доступа ΠΊ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Π΅ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ с запросом Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° использованиС ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹. Если Π²Ρ‹ это сдСлаСтС, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΈΠ½Π°Ρ‡Π΅ этот ΠΊΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°:

.

  84 ΠΏΠΎΠΊΠ° True:
 85 событиС, значСния = window.read (Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚ = 20)
 86, Ссли событиС == "Π’Ρ‹Ρ…ΠΎΠ΄" ΠΈΠ»ΠΈ событиС == sg.WIN_CLOSED:
 87 ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π²
 88
 89 Ρ€Π΅Ρ‚, Ρ€Π°ΠΌΠΊΠ° = ΠΊΠ°ΠΏ.Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ()
 90
 91, Ссли значСния ["- THRESH-"]:
 92 frame = cv2. cvtColor (frame, cv2.COLOR_BGR2LAB) [:,:, 0]
 93 ΠΊΠ°Π΄Ρ€ = cv2.threshold (
 94 ΠΊΠ°Π΄Ρ€, значСния ["- THRESH SLIDER-"], 255, cv2.THRESH_BINARY
 95) [1]
 96 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ elif ["- CANNY-"]:
 97 ΠΊΠ°Π΄Ρ€ = cv2.Canny (
 ΠšΠ°Π΄Ρ€ 98, значСния ["- CANNY SLIDER A-"], значСния ["- CANNY SLIDER B-"]
 99)
100 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ elif ["- BLUR-"]:
101 ΠΊΠ°Π΄Ρ€ = cv2.GaussianBlur (ΠΊΠ°Π΄Ρ€, (21, 21), значСния ["- БЛАЙДЕР Π ΠΠ—ΠœΠ«Π¨Π›Π•ΠΠ˜Π―-"])
102 значСния elif ["- HUE-"]:
103 ΠΊΠ°Π΄Ρ€ = cv2.cvtColor (ΠΊΠ°Π΄Ρ€, cv2.COLOR_BGR2HSV)
104 frame [:,:, 0] + = int (values ​​["- HUE SLIDER-"])
105 ΠΊΠ°Π΄Ρ€ = cv2.cvtColor (ΠΊΠ°Π΄Ρ€, cv2.COLOR_HSV2BGR)
106 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ elif ["- ENHANCE-"]:
107 enh_val = values ​​["- БЛАЙДЕР Π£Π›Π£Π§Π¨Π•ΠΠ˜Π―-"] / 40
108 clahe = cv2.createCLAHE (clipLimit = enh_val, tileGridSize = (8, 8))
109 lab = cv2.cvtColor (Ρ€Π°ΠΌΠΊΠ°, cv2.COLOR_BGR2LAB)
110 lab [:,:, 0] = clahe.apply (lab [:,:, 0])
111 frame = cv2.cvtColor (lab, cv2.COLOR_LAB2BGR)
112
113 imgbytes = cv2.imencode (". png", frame) [1] .tobytes ()
114 ΠΎΠΊΠ½ΠΎ ["- Π˜Π—ΠžΠ‘Π ΠΠ–Π•ΠΠ˜Π• -"]. Update (data = imgbytes)
115
116 window. close ()
117
118 основной ()
  

Π­Ρ‚ΠΎ Ρ†ΠΈΠΊΠ» событий для вашСго интСрфСйса PySimpleGUI. Когда Π²Ρ‹ мСняСтС ΠΏΠΎΠ»Π·ΡƒΠ½ΠΎΠΊ Π² своСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС, PySimpleGUI Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ событиС ΠΈ значСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ OpenCV ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ инкапсулирован Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main () .Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ основная Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Python.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ графичСский интСрфСйс:

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΡ€Π° ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» вашСго прилоТСния для Windows.

Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° вашСго прилоТСния PySimpleGUI для Windows

БущСствуСт мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для прСобразования ΠΊΠΎΠ΄Π° Python Π² исполняСмый Ρ„Π°ΠΉΠ» для Windows. Один ΠΈΠ· самых популярных - PyInstaller.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyInstaller, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pip :

  $ python -m pip ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ pyinstaller
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PyInstaller, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с использованиСм PyInstaller для простого распространСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python.

Π’Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PyInstaller для прСобразования созданного Π²Π°ΠΌΠΈ Ρ€Π°Π½Π΅Π΅ прилоТСния просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² исполняСмый Ρ„Π°ΠΉΠ».

  $ pyinstaller img_viewer.py
  

Когда Π²Ρ‹ запуститС эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ:

  177 ИНЀОРМАЦИЯ: PyInstaller: 3.6
178 ИНЀОРМАЦИЯ: Python: 3.8.2
179 ИНЀОРМАЦИЯ: ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°: Windows-10-10.0.10586-SP0
186 ИНЀОРМАЦИЯ: написал C: \ Users \ mike \ OneDrive \ Documents \ image_viewer_psg.spec
192 ИНЀОРМАЦИЯ: UPX нСдоступСн.
221 ИНЀОРМАЦИЯ: Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ PYTHONPATH путями
---- Π²Ρ‹Π²ΠΎΠ΄ ΠΎΠ±Ρ€Π΅Π·Π°Π½ ----
13476 ИНЀОРМАЦИЯ: Π‘Π±ΠΎΡ€ΠΊΠ° COLLECT, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ COLLECT-00.toc Π½Π΅ сущСствуСт
13479 ИНЀОРМАЦИЯ: Π—Π΄Π°Π½ΠΈΠ΅ COLLECT COLLECT-00. toc
25851 ИНЀОРМАЦИЯ: Π‘Π±ΠΎΡ€ΠΊΠ° COLLECT COLLECT-00.toc Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.
  

Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π²ΠΎΠ΄ сокращСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PyInstaller довольно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ.Когда это Π±ΡƒΠ΄Π΅Ρ‚ сдСлано, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ dist Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΠ΅, которая содСрТит img_viewer.py . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ dist , Π½Π°ΠΉΡ‚ΠΈ img_viewer.exe ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π’ ΠΏΠ°ΠΏΠΊΠ΅ dist Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ исполняСмый Ρ„Π°ΠΉΠ».

Если Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ», Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Π»Π°Π³ --onefile :

  $ pyinstaller --onefile img_viewer.Ρ€Ρƒ
  

Π­Ρ‚ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ dist , Π½ΠΎ Π½Π° этот Ρ€Π°Π· Π² Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π—Π°Ρ‰ΠΈΡ‚Π½ΠΈΠΊ Windows ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ваш исполняСмый Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ вирус, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ„Π»Π°Π³ --onefile . Если это Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Windows Security, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ Windows Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ подписаны Π² Windows 10.

Когда Π²Ρ‹ запуститС исполняСмый Ρ„Π°ΠΉΠ», Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΠΊΠ½ΠΎ консоли Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ интСрфСйсу.Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ консоль, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ --noconsole ΠΈΠ»ΠΈ --windowed ΠΏΡ€ΠΈ запускС PyInstaller.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом руководствС Π²Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ PySimpleGUI! ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π²Ρ‹ познакомились с основами использования PySimpleGUI для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ:

  • УстановитС ΠΏΠ°ΠΊΠ΅Ρ‚ PySimpleGUI
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса с PySimpleGUI
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ нСсколько ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ срСдство просмотра ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ , с PySimpleGUI
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ PySimpleGUI с Matplotlib
  • ИспользованиС ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ зрСния Π² PySimpleGUI
  • Π£ΠΏΠ°ΠΊΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ PySimpleGUI для Windows

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ Π² этом руководствС, для создания собствСнных интСрСсных ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠ°ΠΊΠ΅Ρ‚ PySimpleGUI ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… дСмонстрационных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС инструмСнты Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π½ΠΈΠΌΠΈ, ΠΈ вскорС Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ создаСтС свои собствСнныС кроссплатформСнныС прилоТСния с графичСским интСрфСйсом

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ PySimpleGUI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… рСсурсов:

PySimpleGUI Β· PyPI

ГрафичСский интСрфСйс Python для людСй

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ tkinter, Qt, WxPython ΠΈ Remi (Π½Π° основС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°) Π² Π±ΠΎΠ»Π΅Π΅ простой интСрфСйс.ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΎ Π·Π° счСт использования основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Python, понятных Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ (списки ΠΈ словари). Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ происходит Π·Π° счСт измСнСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий с ΠΌΠΎΠ΄Π΅Π»ΠΈ, основанной Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅, Π½Π° модСль ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний.

Π’Π°Ρˆ ΠΊΠΎΠ΄ Π½Π΅ трСбуСтся , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, которая Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΌ для использования Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ. Π₯отя Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° проста для понимания, ΠΎΠ½Π° Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ вас Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простыми ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ.

Однако Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ подходят для PySimpleGUI.По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ PySimpleGUI Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ подмноТСство возмоТностСй Π±Π°Π·ΠΎΠ²Ρ‹Ρ… структур графичСского интСрфСйса. Π’Ρ€ΡƒΠ΄Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ подходят для PySimpleGUI, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅Ρ‚. Π­Ρ‚ΠΎ зависит ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Excel Π²ΠΎ всСх дСталях - это ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для PySimpleGUI.

Японская вСрсия этого Ρ€ΠΈΠ΄ΠΌΠΈ.


PyPI устанавливаСт

tkinter
tkinter 2.7
Qt
WxPython
Π‘Π΅Ρ‚ΡŒ (Π Π΅ΠΌΠΈ)

GitHub

Бамая послСдняя вСрсия PyPI

tkinter

Qt

Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

WxPython


PySimpleGUI - это ΠΏΠ°ΠΊΠ΅Ρ‚ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт программистам Python всСх ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСскиС интСрфСйсы. Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ своС ΠΎΠΊΠ½ΠΎ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Β«ΠΌΠ°ΠΊΠ΅Ρ‚Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ (Π² PySimpleGUI ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «элСмСнтами»). Π’Π°Ρˆ ΠΌΠ°ΠΊΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΎΠΊΠ½Π° с использованиСм ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· 4 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ для отобраТСния ΠΈ взаимодСйствия с вашим ΠΎΠΊΠ½ΠΎΠΌ. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ tkinter, Qt, WxPython ΠΈΠ»ΠΈ Remi. Π’Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°Β» ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π’Π°Ρˆ ΠΊΠΎΠ΄ PySimpleGUI ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с использованиСм Π±Π°Π·ΠΎΠ²ΠΎΠΉ инфраструктуры, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ PySimpleGUI Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ «шаблонного ΠΊΠΎΠ΄Π°Β» Π·Π° вас.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, интСрфСйсы ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Ρ‹: для получСния ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° трСбуСтся ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС ΠΊΠΎΠ΄Π°. Π’ зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ PySimpleGUI ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ 1/2 Π΄ΠΎ 1/10 объСма ΠΊΠΎΠ΄Π° для создания ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° с использованиСм ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Π₯отя Ρ†Π΅Π»ΡŒ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ / ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ GUI, ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ зависимым Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌ ΠΈ ΠΎΠΊΠ½Π°ΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈΠ»ΠΈ функция Π΅Ρ‰Π΅ Π½Π΅ прСдоставлСны ΠΈΠ»ΠΈ нСдоступны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API-интСрфСйсов PySimpleGUI, Π²Ρ‹ Π½Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности, Π½Π΅ измСняя нСпосрСдствСнно сам ΠΏΠ°ΠΊΠ΅Ρ‚ PySimpleGUI.

УстранСниС Ρ€Π°Π·Ρ€Ρ‹Π²Π° Π² графичСском интСрфСйсС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Python ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊ большоС количСство людСй Π² сообщСство программистов. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… областСй ΠΏΠΎΡ€Π°ΠΆΠ°ΡŽΡ‚ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Но Ρ‡Π°Ρ‰Π΅ всСго эти Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ нСдоступны для всСх, ΠΊΡ€ΠΎΠΌΠ΅ горстки людСй. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Python основаны Π½Π° Β«ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС». Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° для программистов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· тСкстовый интСрфСйс.Π₯отя Ρƒ программистов Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с интСрфСйсами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Β«Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… людСй» Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π­Ρ‚ΠΎ создаСт Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Ρ€Π°Π·Ρ€Ρ‹Π², Β«Ρ€Π°Π·Ρ€Ρ‹Π² графичСского интСрфСйса».

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ графичСского интСрфСйса Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π­Ρ‚ΠΎ становится Π±ΠΎΠ»Π΅Π΅ доступным. ГрафичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ взаимодСйствиС с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Π΄Π°ΠΆΠ΅ для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π΅Π½ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ трСбуСтся графичСский интСрфСйс.


ΠŸΡ€ΠΈΠ²Π΅Ρ‚! Π― Майк. Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ мСня прямо здСсь, Π½Π° PySimpleGUI GitHub, Π³Π΄Π΅ я Ρ€Π΅ΡˆΠ°ΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ постоянно ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡŽ PySimpleGUI.Π― посвятил свои Π΄Π½ΠΈ, Π½ΠΎΡ‡ΠΈ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ PySimpleGUI. Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ наши успСхи Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚. Π― ΡƒΡΠΏΠ΅ΡˆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ΅Π½.

Π― ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² Python, Π½ΠΎ ΠΏΠΈΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС с 70-Ρ… Π³ΠΎΠ΄ΠΎΠ². Π‘ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСй ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ я посвятил созданию ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π² ΠšΡ€Π΅ΠΌΠ½ΠΈΠ΅Π²ΠΎΠΉ Π΄ΠΎΠ»ΠΈΠ½Π΅. Π― ΠΏΡ€ΠΈΠ²Π½ΠΎΡˆΡƒ Π² PySimpleGUI Ρ‚ΠΎΡ‚ ΠΆΠ΅ профСссионализм ΠΈ ΠΏΡ€Π΅Π΄Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹.

Π¦Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: goal_net:

Π”Π²Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° PySimpleGUI:

Fun ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒ Π² ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π·Π²ΡƒΡ‡ΠΈΡ‚ странно, Π½ΠΎ это ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ Ρ†Π΅Π»ΡŒ. Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с графичСским интСрфСйсом ΠΎΡ‡Π΅Π½ΡŒ вСсСло. Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½ΡƒΠΆΠ½ΠΎ для написания ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Если Π½Π°ΠΌ Π½Π΅ нравится процСсс, Ρ‚ΠΎΠ³Π΄Π° ΠΊΡ‚ΠΎ-Ρ‚ΠΎ сдастся.

БущСствуСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ объСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, кулинарная ΠΊΠ½ΠΈΠ³Π°, сотни дСмонстрационных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ сразу ΠΆΠ΅ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, подробная справка ΠΏΠΎ Π·Π²ΠΎΠ½ΠΊΠ°ΠΌ, Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube, ΠΎΠ½Π»Π°ΠΉΠ½-дСмонстрации Π±Ρ€Π΅Π»ΠΊΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ... всС это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ созданиСм ... ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°.

Π’Π°Ρˆ успСх - это общая Ρ†Π΅Π»ΡŒ. PySimpleGUI Π±Ρ‹Π» создан для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².Π’Ρ‹ ΠΌΠΎΠΈ взгляды. Π‘Ρ‹Π»ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΉ Π½Π°Π³Ρ€Π°Π΄ΠΎΠΉ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ совмСстных усилий ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ PySimpleGUI. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для создания своСго прилоТСния. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Π² вопрос Π½Π° сайтС PySimpleGUI GitHub. ВзглянитС Π½Π° Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½ΠΈΠΆΠ΅.


www.PySimpleGUI.org Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ находится докумСнтация. Π’Π²Π΅Ρ€Ρ…Ρƒ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².ДокумСнтация находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽΒ», поэтому для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎ Π½ΠΈΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ.

Π•ΡΡ‚ΡŒ сотни страниц письмСнной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ сотни ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ быстро ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π½Π΅ΠΉ ΠΈΠ»ΠΈ нСдСль инвСстиций для изучСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° GUI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° ΠΎΠ΄ΠΈΠ½ дСнь, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ PySimpleGUI.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1 - Окно One-Shot

Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ называСтся Β«ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌΒ» ΠΎΠΊΠ½ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ отобраТаСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, значСния ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΎ закрываСтся.Он Π½Π΅ остаСтся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя, ΠΊΠ°ΠΊ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅.

Анатомия простой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ PySimpleGUI

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ PySimpleGUI 5 Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ²

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ PySimpleGUI ΠΊΠ°ΠΊ sg # Π§Π°ΡΡ‚ΡŒ 1 - Π˜ΠΌΠΏΠΎΡ€Ρ‚

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС ΠΎΠΊΠ½Π°
layout = [[sg.Text ("Как вас Π·ΠΎΠ²ΡƒΡ‚?")], # Π§Π°ΡΡ‚ΡŒ 2 - ΠœΠ°ΠΊΠ΅Ρ‚
            [sg. Input ()],
            [sg.Button ('Π₯ΠΎΡ€ΠΎΡˆΠΎ')]]

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
window = sg.Window ('Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°', ΠΌΠ°ΠΊΠ΅Ρ‚) # Π§Π°ΡΡ‚ΡŒ 3 - ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ взаимодСйствиС с ΠΎΠΊΠ½ΠΎΠΌ
событиС, значСния = ΠΎΠΊΠ½ΠΎ.read () # Π§Π°ΡΡ‚ΡŒ 4 - Π¦ΠΈΠΊΠ» событий ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ² Window.read

# Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ с собранной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ
print ('Hello', values ​​[0], "! Бпасибо, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ PySimpleGUI")

# Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ с экрана
window.close () # Π§Π°ΡΡ‚ΡŒ 5 - Π—Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ
 

Код создаСт это ΠΎΠΊΠ½ΠΎ


ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2 - Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ нашС ΠΎΠΊΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° экранС Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ Π½Π°ΠΆΠΌΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π’Ρ‹ΠΉΡ‚ΠΈΒ».ОсновноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Β«Π¦ΠΈΠΊΠ»Π° событий». Π¦ΠΈΠΊΠ» событий считываСт события ΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· вашСго ΠΎΠΊΠ½Π°. Π‘Π΅Ρ€Π΄Ρ†Π΅ вашСго прилоТСния находится Π² Ρ†ΠΈΠΊΠ»Π΅ событий.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ содСрТимоС ΠΎΠΊΠ½Π°
layout = [[sg. Text ("Как вас Π·ΠΎΠ²ΡƒΡ‚?")],
          [sg.Input (key = '- INPUT-')],
          [sg.Text (size = (40,1), key = '- OUTPUT-')],
          [sg.Button ('Π₯ΠΎΡ€ΠΎΡˆΠΎ'), sg.Button ('Π’Ρ‹ΠΉΡ‚ΠΈ')]]

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
ΠΎΠΊΠ½ΠΎ = sg.Окно ('Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°', ΠΌΠ°ΠΊΠ΅Ρ‚)

# ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° ΠΈ взаимодСйствиС с Π½ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° событий
Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ True:
    событиС, значСния = window.read ()
    # ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, Ρ…ΠΎΡ‡Π΅Ρ‚ Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ ΠΎΠΊΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ
    Ссли event == sg.WINDOW_CLOSED или event == 'Quit':
        ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π°
    # ВывСсти сообщСниС Π² ΠΎΠΊΠ½ΠΎ
    window ['- OUTPUT -']. update ('Hello' + values ​​['- INPUT-'] + "! Бпасибо Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ PySimpleGUI")

# Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ с экрана
window.close ()
 

Π­Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ, созданноС Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 2.

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ОК.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ этим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΎΠΊΠ½ΠΎΠΌ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ различия Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅. Π’ особСнности Π²Π°ΠΆΠ½Ρ‹ Π΄Π²Π° измСнСния. Одним ΠΈΠ· Π½ΠΈΡ… являСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° key ΠΊ элСмСнту Input ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· элСмСнтов Text . ΠšΠ»ΡŽΡ‡ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° имя элСмСнта.Или, говоря языком Python, это ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ словаря. ΠšΠ»ΡŽΡ‡ элСмСнта Input Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΊΠ»ΡŽΡ‡Π° словаря ΠΏΠΎΠ·ΠΆΠ΅ Π² ΠΊΠΎΠ΄Π΅.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ этого элСмСнта Text :

 [sg.Text (size = (40,1), key = '- OUTPUT-')],
 

Π•ΡΡ‚ΡŒ 2 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠ»ΡŽΡ‡ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ рассмотрСли. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ size опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта Π² символах. Π’ этом случаС ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ этот элСмСнт Text ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ 40 символов ΠΈ высоту 1 символ.ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ тСкстовая строка Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ пустой. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ эту ΠΏΡƒΡΡ‚ΡƒΡŽ строку Π² созданном ΠΎΠΊΠ½Π΅.

Π•Ρ‰Π΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π’Ρ‹ΠΉΡ‚ΠΈΒ».

Π¦ΠΈΠΊΠ» событий ΠΈΠΌΠ΅Π΅Ρ‚ наш Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² window. read () .

ПослС прочтСния слСдуСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if:

, Ссли event == sg.WINDOW_CLOSED или event == 'Quit':
        ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π°
 

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ провСряСт, Π·Π°ΠΊΡ€Ρ‹Π» Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠΊΠ½ΠΎ, Ρ‰Π΅Π»ΠΊΠ½ΡƒΠ² Β«XΒ», ΠΈΠ»ΠΈ ΠΎΠ½ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π’Ρ‹ΠΉΡ‚ΠΈΒ».Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· этого ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΊΠΎΠ΄ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий.

Если ΠΎΠΊΠ½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«Π’Ρ‹ΠΉΡ‚ΠΈΒ» Π½Π΅ Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ продолТаСтся. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ «ОК». ПослСдний ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Ρ†ΠΈΠΊΠ»Π΅ событий:

.

 window ['- OUTPUT -']. Update ('Hello' + values ​​['- INPUT-'] + "! Бпасибо Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ PySimpleGUI")
 

Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ обновляСт элСмСнт Text , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡ -OUTPUT- со строкой. window ['- OUTPUT-'] Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ элСмСнт с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -OUTPUT- . Π­Ρ‚ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π½Π°ΡˆΠ΅ΠΌΡƒ пустому элСмСнту Text . Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ этот элСмСнт возвращаСтся ΠΈΠ· поиска, вызываСтся Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ update . ΠŸΠΎΡ‡Ρ‚ΠΈ всС элСмСнты ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ обновлСния . Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния значСния элСмСнта ΠΈΠ»ΠΈ для измСнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ элСмСнта.

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ тСкст Π±Ρ‹Π» ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ text_color Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ update , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ читался Ρ‚Π°ΠΊ:

Окно

 ['- Π’Π«Π₯ΠžΠ”-'].update ('Hello' + values ​​['- INPUT-'] + "! Бпасибо, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ PySimpleGUI",
                              text_color = 'ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ')
 

ПослС добавлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° text_color это нашС Π½ΠΎΠ²ΠΎΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, доступныС для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π² справочной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ, Ρ‚Π°ΠΊ ΠΈ Π² строках Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. PySimpleGUI ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±ΡˆΠΈΡ€Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π²ΠΎ всСх доступных Π²Π°ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…. Если Π²Ρ‹ посмотритС ΠΌΠ΅Ρ‚ΠΎΠ΄ update для элСмСнта Text , Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ для Π²Ρ‹Π·ΠΎΠ²Π°:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для элСмСнта Text ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько Π²Π΅Ρ‰Π΅ΠΉ. Бправочная докумСнтация ΠΏΠΎ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ - Ρ†Π΅Π½Π½Ρ‹ΠΉ рСсурс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдСлаСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² PySimpleGUI, ΠΌΠΌΠΌ, простым.


ΠœΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡΠΌΠ΅ΡˆΠ½Ρ‹Π΅ LOL! : смСясь:

ΠœΠ°ΠΊΠ΅Ρ‚ вашСго ΠΎΠΊΠ½Π° прСдставляСт собой «список списков» (LOL). Окна Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° «ряды». КаТдая строка Π² вашСм ΠΎΠΊΠ½Π΅ становится списком Π² вашСм ΠΌΠ°ΠΊΠ΅Ρ‚Π΅. Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ вмСстС всС списки, ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ°ΠΊΠ΅Ρ‚ ... список списков.

Π’ΠΎΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтом Text , Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ строки:

 layout = [[sg.Text ('Row 1'), sg.Text ("Как тСбя Π·ΠΎΠ²ΡƒΡ‚?")],
            [sg.Text ('Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2'), sg.Input ()],
            [sg.Text ('Row 3'), sg.Button ('Ok')]]
 

КаТдая строка этого ΠΌΠ°ΠΊΠ΅Ρ‚Π° прСдставляСт собой список элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² этой строкС Π² вашСм ΠΎΠΊΠ½Π΅.

ИспользованиС списков для опрСдСлСния вашСго графичСского интСрфСйса ΠΈΠΌΠ΅Π΅Ρ‚ ряд ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… прСимущСств ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ графичСского интСрфСйса выполняСтся с использованиСм Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ списка Python для создания сСтки ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°.

Π­Ρ‚ΠΈ 3 строки ΠΊΠΎΠ΄Π°:

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg

layout = [[sg.Button (f '{row}, {col}') для столбца Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (4)] для строки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (4)]

event, values ​​= sg.Window ('БоставлСниС списка', ΠΌΠ°ΠΊΠ΅Ρ‚) .read (close = True)
 

создаСт это ΠΎΠΊΠ½ΠΎ с сСткой ΠΊΠ½ΠΎΠΏΠΎΠΊ 4 x 4:

Напомним, ΠΊΠ°ΠΊ Β«Ρ€Π°Π·Π²Π»Π΅Ρ‡ΡŒΡΡΒ» - ΠΎΠ΄Π½Π° ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΡΡ‚Π½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ возмоТности Python для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с графичСским интСрфСйсом. ВмСсто страниц ΠΊΠΎΠ΄Π° для создания графичСского интСрфСйса это нСсколько (Π° часто ΠΈ 1) строк ΠΊΠΎΠ΄Π°.

Π‘Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠ΄

Код ΠΎΠΊΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ строки ΠΊΠΎΠ΄Π°. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚Π°, созданиС ΠΎΠΊΠ½Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ сбор Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ записаны Π² этой строкС ΠΊΠΎΠ΄Π°:

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅

, values ​​= sg.Window ('Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°', [[sg.Text («Как тСбя Π·ΠΎΠ²ΡƒΡ‚?Β»)], [Sg.Input ()], [sg. Button ('Ok')]]). Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ (Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ = True)
 

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ΡΡ Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ значСния, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ PySimpleGUI.Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ с Ρ‚Π°ΠΊΠΈΠΌ ΠΌΠ°Π»Ρ‹ΠΌ количСством рСсурсов позволяСт быстро ΠΈ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ графичСскиС интСрфСйсы Π² свой ΠΊΠΎΠ΄ Python. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² строкС ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π½Π° страницС ΠΊΠΎΠ΄Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ сокращСнныС псСвдонимы, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ большС мСста Π² своСм ΠΊΠΎΠ΄Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мСньшС символов. ВсС элСмСнты ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, элСмСнт Text ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ просто ΠΊΠ°ΠΊ T .Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Input ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан ΠΊΠ°ΠΊ I , Π° Button - ΠΊΠ°ΠΊ B . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ваш однострочный ΠΊΠΎΠ΄ ΠΎΠΊΠ½Π° становится:

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅

, values ​​= sg.Window ('Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°', [[sg.T («Как тСбя Π·ΠΎΠ²ΡƒΡ‚?Β»)], [Sg. I ()], [sg.B ('Π₯ΠΎΡ€ΠΎΡˆΠΎ')]]). Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ (Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ = True)
 

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°

PySimpleGUI Π² настоящСС врСмя ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° 4-Ρ… Python GUI Framework. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ структура указываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚, ΠΈ Π²Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру графичСского интСрфСйса.Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π΅ трСбуСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° для запуска Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ срСдС графичСского интСрфСйса. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° с PySimpleGUI Π½Π° PySimpleGUIQt , PySimpleGUIWx , PySimpleGUIWeb ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ структуру.

ЗаявлСниС ΠΎΠ± ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Окно Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²
PySimpleGUI
PySimpleGUIQt
PySimpleGUIWx
PySimpleGUIWeb

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΠΊΠΎΠ΄Π° графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,Π³Ρ€Π°ΠΌΠΌ. пСрСнос ΠΊΠΎΠ΄Π° с tkinter Π½Π° Qt) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ пСрСписывания ΠΊΠΎΠ΄Π°. PySimpleGUI Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ. Иногда ΠΎΡ‚ вас Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния, Π½ΠΎ ваша Ρ†Π΅Π»ΡŒ - ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ пСрСносимый ΠΊΠΎΠ΄ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ измСнСниями.

НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π½Π°Ρ‡ΠΎΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ‡, доступны Π½Π΅ Π½Π° всСх ΠΏΠΎΡ€Ρ‚Π°Ρ…. Ѐункция Π·Π½Π°Ρ‡ΠΊΠ° Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ‡ доступна Π½Π° ΠΏΠΎΡ€Ρ‚Π°Ρ… Qt ΠΈ WxPython. БмодСлированная вСрсия доступна Π½Π° tkinter. Π—Π½Π°Ρ‡ΠΎΠΊ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ‡ Π² ΠΏΠΎΡ€Ρ‚Ρƒ PySimpleGUIWeb Π½Π΅ поддСрТиваСтся.

Π‘Ρ€Π΅Π΄Ρ‹ выполнСния

ΠžΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π°Ρ срСда ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ
Python Python 3.4+
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Windows, Linux, Mac
ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ПК, Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΈ, Raspberry Pi, устройства Android ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ PyDroid3
Онлайн repli.it, Trinket.com (ΠΎΠ±Π° Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ tkinter Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅)
Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ графичСского интСрфСйса tkinter, pyside2, WxPython, Remi

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ

Π‘Ρ€Π΅Π΄ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 200 «дСмонстрационных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΒ» Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ популярныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Python Π² ваш графичСский интСрфСйс.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ рисунок Matplotlib Π² своС ΠΎΠΊΠ½ΠΎ? НСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, скопируйтС дСмонстрационный ΠΊΠΎΠ΄ ΠΈ сразу ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ рисунок вашСй ΠΌΠ΅Ρ‡Ρ‚Ρ‹ Π² Matplotlib Π² свой графичСский интСрфСйс.

Π­Ρ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ для добавлСния Π² графичСский интСрфСйс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ доступны дСмонстрационныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ дСмонстрационноС Ρ€Π΅ΠΏΠΎ:

Упаковка ОписаниС
Matplotlib МногиС Ρ‚ΠΈΠΏΡ‹ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ²
OpenCV ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ΅ Π·Ρ€Π΅Π½ΠΈΠ΅ (часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ИИ)
VLC ВоспроизвСдСниС Π²ΠΈΠ΄Π΅ΠΎ
ΠΏΠΈΠΌΡƒΠ½ ЀизичСский Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ
psutil Бтатистика систСмной срСды
ΠΊΡ€Π΅Π²Π΅Ρ‚ΠΊΠΈ Reddit API
json PySimpleGUI являСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ API для хранСния Β«ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… настроСк»
ΠΏΠΎΠ³ΠΎΠ΄Π° Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ с нСсколькими ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹ΠΌΠΈ API для создания ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΌΠΈΠ΄ΠΎ ВоспроизвСдСниС MIDI
красивый суп Π’Π΅Π±-парсинг (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ GitHub)

Π”Π²Π° распространСнных способа установки PySimpleGUI:

  1. pip для установки ΠΈΠ· PyPI
  2. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» PySimpleGUI. py ΠΈ помСститС Π² ΠΏΠ°ΠΏΠΊΡƒ вашСго прилоТСния

Установка ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΡƒΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ способ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pip - Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с использованиСм Python. Π Π°Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° pip ΠΈΠ»ΠΈ pip3 Π±Ρ‹Π»Π° нСпосрСдствСнно Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС / ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ способ

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ установка для Windows:

python -m pip install PySimpleGUI

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ установка для Linux ΠΈ MacOS:

python3 -m pip install PySimpleGUI

Для обновлСния с использованиСм pip Π²Π°ΠΌ просто Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ 2 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² строкС --upgrade --no-cache-dir .

Установка обновлСния Π² Windows:

python -m pip install --upgrade --no-cache-dir PySimpleGUI

ОбновлСниС для Linux и MacOS:

python3 -m pip install --upgrade --no-cache-dir PySimpleGUI

Установка ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

PySimpleGUI Π±Ρ‹Π» создан ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» . py, поэтому Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ Π² систСмах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ, ΠΊΠ°ΠΊ Raspberry Pi. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ просто, ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ PySimpleGUI.py Π² Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠ°ΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΅Π³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚. Python Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

ΠŸΡ€ΠΈ установкС с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ»Π° .py, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π»ΠΈΠ±ΠΎ ΠΈΠ· PyPI, Π»ΠΈΠ±ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΡΠ°ΠΌΡƒΡŽ послСднюю Π½Π΅Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π΅Π΅ с GitHub.

Для установки ΠΈΠ· PyPI Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Π»ΠΈΠ±ΠΎ колСсо, Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ» .gz ΠΈ распакуйтС Ρ„Π°ΠΉΠ». Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» .whl Π² .zip, Π²Ρ‹ смоТСтС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ любой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ zip-Ρ„Π°ΠΉΠ». Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ PySimpleGUI.py Ρ„Π°ΠΉΠ» Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ°ΠΏΠΎΠΊ. Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ этот Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡƒ вашСго прилоТСния, ΠΈ всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ.

Бсылка PyPI для вСрсии PySimpleGUI для tkinter:
https://pypi.org/project/PySimpleGUI/#files

ПослСднюю Π²Π΅Ρ€ΡΠΈΡŽ рСпозитория GitHub ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь:
https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/master/PySimpleGUI. py

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· вас Π΄ΡƒΠΌΠ°ΡŽΡ‚: Β«Π”Π°, Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ исходный Ρ„Π°ΠΉΠ» - уТасная идСя». И Π΄Π°, ΠΈΠ½ΠΎΠ³Π΄Π° это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ уТасная идСя.Π’ этом случаС прСимущСства Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ пСрСвСсили ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ сторону. МногиС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ компромиссными ΠΈΠ»ΠΈ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ. Как Π±Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ, Π½Π΅ всС Ρ‡Π΅Ρ€Π½ΠΎΠ΅ ΠΈ Π±Π΅Π»ΠΎΠ΅. Часто ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос - это зависит ΠΎΡ‚ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π².

Π“Π°Π»Π΅Ρ€Π΅ΠΈ: art:

Π Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ Π±ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π³Π°Π»Π΅Ρ€Π΅Π΅ΠΉ графичСских интСрфСйсов, прСдставлСнных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° GitHub, продолТаСтся, Π½ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π’ настоящСС врСмя Π΅ΡΡ‚ΡŒ 2 мСста, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹.Π‘ΡƒΠ΄Π΅ΠΌ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² блиТайшСС врСмя ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Wiki ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ творСниям людСй.

ГалСрСя, размСщСнная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° со ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π°ΠΌΠΈ, отправлСнная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π½Π° GitHub. Π­Ρ‚ΠΎ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ способ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ сдСлали. Π­Ρ‚ΠΎ Π½Π΅ идСально, Π½ΠΎ это Π±Ρ‹Π»ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ.

ΠœΠ°ΡΡΠΈΠ²Π½Ρ‹Π΅ скопированныС ΠΎΠ±Ρ€Π°Π·Ρ‹ GitHub

Π’Ρ‚ΠΎΡ€ΠΎΠΉ - это огромная галСрСя ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 3000 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, взятых ΠΈΠ· 1000 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° GitHub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ сообщаСтся, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ PySimpleGUI.Он Π½Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π»ΡΡ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈ Π² Ρ€Π°Π½Π½Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ использовалось мноТСство старых ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ΠΎΠ². Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±ΡƒΠΆΠ΄Π°Π΅Ρ‚ вашС Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.


Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ‡Π°ΡΡ‚ΡŒ использования PySimpleGUI. Волько Π½Π° GitHub сущСствуСт Π±ΠΎΠ»Π΅Π΅ 1000 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… PySimpleGUI. ΠŸΠΎΠΈΡΡ‚ΠΈΠ½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈΡΡŒ для ΡΡ‚ΠΎΠ»ΡŒΠΊΠΈΡ… людСй. МногиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½Π΅Π΅ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ графичСский интСрфСйс Π½Π° Python ΠΈ Ρ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, Π½ΠΎ Π½Π°ΠΊΠΎΠ½Π΅Ρ† достигли своСй ΠΌΠ΅Ρ‡Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ PySimpleGUI.

Π’Π°Ρˆ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ графичСский интСрфСйс

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ PySimpleGUI - это Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ вас ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСскиС интСрфСйсы для Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с простого запроса ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· «высокоуровнСвых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉΒ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ popup . Π’ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠΊΠ½Π° Π±Ρ‹Π²Π°ΡŽΡ‚ всСвозмоТныС, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½ΠΎ само Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ для отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ.Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с popup_get_ , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ popup_get_filename .

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ строки для получСния ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° вмСсто указания ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Ρ‚Π°ΠΊΡƒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Β«Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ людям» Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg

filename = sg.popup_get_file ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ')
sg.popup ('Π’Ρ‹ вошли', имя Ρ„Π°ΠΉΠ»Π°)
 

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ 2 Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΎΠΊΠ½Π°.Один для получСния ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°.

Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ собрано.

Окна Π² стилС Rainmeter

Настройки ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² графичСского интСрфСйса Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ самыС красивыС ΠΎΠΊΠ½Π°. Однако, ΡƒΠ΄Π΅Π»ΠΈΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ дСталям, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ нСсколько Π²Π΅Ρ‰Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠ½Π° выглядСли ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. PySimpleGUI ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ ΠΈ функциями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строки Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΊΠ½Π° tkinter.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ваш Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ tkinter Π² ΠΎΠΊΠ½Π°Ρ…. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΎΠΊΠΎΠ½ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΈ использовании Rainmeter, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ ΠΎΠΊΠ½Π°. Π’ΠΎΡ‚ Π΅Ρ‰Π΅ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стола Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ стилС Rainmeter. НСкоторыС ΠΈΠ· Π½ΠΈΡ… выглядят тусклыми, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹.

Оба этих эффСкта, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ строки Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΈ созданиС ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ установкой 2 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ создании ΠΎΠΊΠ½Π°. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ PySimpleGUI обСспСчиваСт Π»Π΅Π³ΠΊΠΈΠΉ доступ ΠΊ функциям. И ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ PySimpleGUI пСрСносится ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, эти ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΡ€Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Qt.

ИзмСнСниС Π²Ρ‹Π·ΠΎΠ²Π° создания ΠΎΠΊΠ½Π° Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1 Π½Π° эту строку ΠΊΠΎΠ΄Π° Π΄Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ:

 окно = sg.Окно ('МоС окно', layout, no_titlebar = True, alpha_channel = 0.5)
 

Π˜Π³Ρ€Ρ‹

Π₯отя PySimpleGUI ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ написан ΠΊΠ°ΠΊ SDK для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€, ΠΎΠ½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Chess Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹, Π½ΠΎ ΠΈ интСгрируСтся с ИИ ΠΈΠ³Ρ€Ρ‹ Π² ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Ρ‹ Stockfish.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ выпустили нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Minesweeper.

ΠšΠ°Ρ€Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с PySimpleGUI, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСниями просто ΠΏΡ€ΠΈ использовании элСмСнта PySimpleGUI Graph .

Π₯отя PySimpleGUI ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ написан ΠΊΠ°ΠΊ SDK для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€, ΠΎΠ½ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€.

Π—Π°Ρ…Π²Π°Ρ‚ ΠΈ воспроизвСдСниС ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°

Π—Π°Ρ…Π²Π°Ρ‚ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ с Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ Π² графичСском интСрфСйсС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ - это 4 строки ΠΊΠΎΠ΄Π° PySimpleGUI. Π•Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ эти 4 строки ΠΊΠΎΠ΄Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ tkinter, Qt ΠΈ Web. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ свою Π²Π΅Π±-ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tkinter.

ВоспроизвСдСниС ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°, Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достигнуто с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ проигрыватСля VLC.Π’Π°ΠΌ прСдоставляСтся дСмонстрационноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ. ВсС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π² этом Ρ„Π°ΠΉΠ»Π΅ readme, доступно Π²Π°ΠΌ Π² качСствС ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ для Π²Π°ΡˆΠΈΡ… собствСнных Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈΠΉ.

Π˜ΡΠΊΡƒΡΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚

AI ΠΈ Python Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½ΠΎΠΉ свСрхдСрТавой, Ссли ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ вмСстС. Однако Ρ‡Π΅Π³ΠΎ часто Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Ρ‚Π°ΠΊ это Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с этими Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ИИ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ графичСский интСрфСйс.

Π­Ρ‚ΠΈ дСмонстрации YOLO - ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ графичСский интСрфСйс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ взаимодСйствии с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ИИ.ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠ° Π²Π½ΠΈΠ·Ρƒ этих ΠΎΠΊΠΎΠ½. Π­Ρ‚ΠΈ 2 ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠ°Ρ€Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ YOLO.

Если Π²Ρ‹ настраивали Π΄Π΅ΠΌΠΎ YOLO, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΈ запускС прилоТСния, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ эти шаги с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ графичСского интСрфСйса.ГрафичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

БущСствуСт Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ИИ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π‘Π°ΠΌΠΎ ΠΏΠΎ сСбС это Π½Π΅ являСтся ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ прСпятствиСм, Π½ΠΎ этого достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ввСсти / Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ просмотра Ρ„Π°ΠΉΠ»ΠΎΠ². .

ГрафичСскиС интСрфСйсы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. заполняСт Β«ΠŸΡ€ΠΎΠ±Π΅Π» графичСского интСрфСйса».Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ раскраски ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ, ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° / Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для Ρ€Π°ΡΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ Π±Ρ‹Π»ΠΈ Π² свободном доступС ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию. Π§Π΅Π³ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ, Ρ‚Π°ΠΊ это простоты использования, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠ³ Π΄Π°Ρ‚ΡŒ графичСский интСрфСйс.


Π“Ρ€Π°Ρ„ΠΈΠΊΠΈ

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ взаимодСйствиС с Π½ΠΈΠΌΠΈ Π² графичСском интСрфСйсС ΠΎΡ‡Π΅Π½ΡŒ просто с PySimpleGUI. Π£ вас Π΅ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнныС возмоТности рисования / построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² для создания настраиваСмых Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ использования ЦП ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ элСмСнт Graph

Matplotlib - популярный Π²Ρ‹Π±ΠΎΡ€ срСди ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Python. PySimpleGUI ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π²Π°ΠΌ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Matplotlib прямо Π² ΠΎΠΊΠ½ΠΎ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ элСмСнты управлСния Π² своС ΠΎΠΊΠ½ΠΎ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Matplotlib.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ PySimpleGUI, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° ΡΡ‚ΡƒΠΏΠ΅Π½ΡŒΠΊΡƒ Π²Ρ‹ΡˆΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π² Matplotlib.


Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄

Упомянутый Ρ€Π°Π½Π΅Π΅ "ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π² графичСском интСрфСйсС" ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PySimpleGUI.Π’Π°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ графичСский интСрфСйс. Β«Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹ΠΉΒ» графичСский интСрфСйс - это Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ собираСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая Π·Π°Ρ‚Π΅ΠΌ пСрСдаСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹ΠΉ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ - это фантастичСский способ для программиста Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠΌ Π±Ρ‹Π»ΠΎ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π­Ρ‚ΠΈ графичСскиС интСрфСйсы - ваш СдинствСнный Π²Ρ‹Π±ΠΎΡ€ для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ вас Π½Π΅Ρ‚ доступа ΠΊ исходному ΠΊΠΎΠ΄Ρƒ.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прСдставляСт собой интСрфСйс для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Jump CutterΒ». ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· графичСский интСрфСйс, с использованиСм этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² создаСтся командная строка, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° выполняСтся с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, направляСмой Π² интСрфСйс графичСского интСрфСйса. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΆΠ΅Π»Ρ‚Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ отобраТаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°.


Raspberry Pi

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ PySimpleGUI ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстим с Python 3.4, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСский интСрфСйс для Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Raspberry Pi.ОсобСнно Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² сочСтании с сСнсорным экраном. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUIWeb для управлСния своим Pi, Ссли ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€.


ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ доступ ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΌ функциям

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ функциям Π±Π°Π·ΠΎΠ²Ρ‹Ρ… структур графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ возмоТности для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ созданы нСпосрСдствСнно с использованиСм инфраструктуры графичСского интСрфСйса.

НапримСр, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ / внСшний Π²ΠΈΠ΄ строки Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tkinter ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½ΠΎ с PySimpleGUI Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выглядят Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ настраиваСмая строка Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

НСвСроятно, Π½ΠΎ это ΠΎΠΊΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ tkinter для создания Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ заставки.

Π’ Windows tkinter ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„ΠΎΠ½ ΠΈΠ· вашСго прилоТСния. И снова PySimpleGUI Π΄Π΅Π»Π°Π΅Ρ‚ доступ ΠΊ этим возмоТностям Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ добавлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт вашС ΠΎΠΊΠ½ΠΎ Window . Одно ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ простому ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ с Ρ‚Π°ΠΊΠΈΠΌ эффСктом:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ со всСм Π½Π° своСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ столС, щСлкая Ρ‡Π΅Ρ€Π΅Π· полноэкранноС ΠΎΠΊΠ½ΠΎ.


Устали ΠΎΡ‚ сСрого графичСского интСрфСйса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ? PySimpleGUI ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ внСшний Π²ΠΈΠ΄ вашСго ΠΎΠΊΠ½Π°, сдСлав ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΌΡ‹ . На ваш Π²Ρ‹Π±ΠΎΡ€ доступно Π±ΠΎΠ»Π΅Π΅ 150 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ:

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² GUI Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ создаваСмого Π²Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°. PySimpleGUI Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя эту Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ автоматичСски Ρ€Π°ΡΠΊΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ элСмСнты Π² соотвСтствии с Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ Ρ‚Π΅ΠΌΠΎΠΉ.

Для использования Ρ‚Π΅ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ theme с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚Π΅ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄ созданиСм ΠΎΠΊΠ½Π°.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ для удобства чтСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΡƒ Β«Π’Π΅ΠΌΠ½ΠΎ-сСрый 9Β»:

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PySimpleGUI ΠΊΠ°ΠΊ sg

sg.theme ('Ρ‚Π΅ΠΌΠ½ΠΎ-сСрый 9')
 

Π­Ρ‚Π° СдинствСнная строка ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ мСняСт внСшний Π²ΠΈΠ΄ ΠΎΠΊΠ½Π°:

Π’Π΅ΠΌΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π°, тСкста, Ρ„ΠΎΠ½Π° Π²Π²ΠΎΠ΄Π°, тСкста Π²Π²ΠΎΠ΄Π° ΠΈ Ρ†Π²Π΅Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΎΠΊ. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для измСнСния Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… схСм, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… этой, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ многочислСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² вашСм ΠΊΠΎΠ΄Π΅.


Π’Π°ΡˆΠ° пСрвая остановка - это докумСнтация ΠΈ дСмонстрационныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если Ρƒ вас всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ вопрос ΠΈΠ»ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ... Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ... ΠΏΠΎΠΌΠΎΡ‰ΡŒ доступна для вас бСсплатно. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ PySimpleGUI GitHub, ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒ.

ΠŸΠΎΡ‡Ρ‚ΠΈ всС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡ‹, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π­Ρ‚ΠΎ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΎΠ±ΠΌΠ΅Π½ ... Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ. Π­Ρ‚Π° информация ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ быстро Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ‚Π²Π΅Ρ‚.

Помимо запроса ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π½ΠΎΠΌΠ΅Ρ€Π° вСрсий PySimpleGUI ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… графичСских интСрфСйсов, Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ список элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ бСссмыслСнным. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ, Π΄Π°ΠΆΠ΅ Ссли это длится всСго ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ быстрСС Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Если это Π½Π΅ Π±Ρ‹Π»Π° полСзная ΠΈ нСобходимая информация, которая ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ быстро ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, вас Π½Π΅ попросят Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅. Β«ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌΒ».

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π·Π° Ρ„ΠΈΠ½Π°Π½ΡΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Если чСстно, Π½ΡƒΠΆΠ½Π° финансовая ΠΏΠΎΠΌΠΎΡ‰ΡŒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ свСт Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π΄ΠΎΡ€ΠΎΠ³ΠΎ. РСгистрация Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список подписок Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ Π‘Ρ€Π΅Π»ΠΎΠΊΠΈ, ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ Ρ‚. Π”., быстро ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… расходов.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅

PySimpleGUI Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΈΠ· Π΄Π΅ΡˆΠ΅Π²Ρ‹Ρ…. Π­Ρ‚ΠΎ Π±Ρ‹Π» Ρ‚Ρ€ΡƒΠ΄ любви, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΠΎΠΏΠΎΡ‚Π»ΠΈΠ²Ρ‹ΠΉ. ВрСбуСтся Π±ΠΎΠ»Π΅Π΅ 2 Π»Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 7 Π΄Π½Π΅ΠΉ Π² нСдСлю, Ρ‡Ρ‚ΠΎΠ±Ρ‹ довСсти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π΄ΠΎ уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ сСгодня.

PySimpleGUI ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Ссли Π±Ρ‹ ΠΎΠ½Π° ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ Ρ‚Π°ΠΊΠΎΠΉ. Если Π²Ρ‹ ΠΈΠ»ΠΈ ваша компания (особСнно Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ PySimpleGUI Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ) ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Ρ„ΠΈΠ½Π°Π½ΡΠΎΠ²ΡƒΡŽ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ использования PySimpleGUI, Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π»ΠΈΡ‚ΡŒ срок слуТбы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для вас ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠšΡƒΠΏΠΈ ΠΌΠ½Π΅ ΠΊΠΎΡ„Π΅

Buy Me a Coffee - ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ быстро, Π»Π΅Π³ΠΊΠΎ, ΠΈ ваш Π²ΠΊΠ»Π°Π΄ записываСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ PySimpleGUI. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ своС ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ.

Бпонсорство GitHub

РСгулярноС спонсорство GitHub - это Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΏΠΎΠ½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… уровнях ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° постоянной основС. Π­Ρ‚ΠΎ количСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΏΠΎΠ½ΡΠΎΡ€ΡΠΊΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ Π·Π° Π²Π°ΡˆΡƒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² финансовом Π²ΠΊΠ»Π°Π΄Π΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π‘Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ слоТно с финансовой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Тизнь созданиСм Π²ΠΈΠ΄Π΅ΠΎΡ€ΠΎΠ»ΠΈΠΊΠΎΠ². Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ это Π΅Ρ‰Π΅ Π½Π΅ Ρ‚Π°ΠΊ просто.

Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½Π° откровСнная дискуссия. Π’ΠΎΠ½ΠΊΠΈΠ΅ Π½Π΅ сработали.

Ѐинансовая Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π½Π΅ часто ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ обсуТдаСтся. Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π΅ сущСствуСт автоматичСской Ρ„ΠΎΡ€ΠΌΡ‹ входящих событий, особСнно с Python, Π³Π΄Π΅ исходный ΠΊΠΎΠ΄ ΠΏΠΎ сущСству Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ прСдоставлСн.Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Сю обходятся Π΄ΠΎΡ€ΠΎΠ³ΠΎ. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ‡Π΅ΡΠΊΡƒΡŽ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡŽ - большоС прСпятствиС. Адвокаты, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π», Π½Π΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это происходило ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Π˜Ρ‚Π°ΠΊ, Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ - Π½Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ - Π΄ΠΎΡ€ΠΎΠ³ΠΎ. Π’Ρ€ΡƒΠ΄ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½. Как Π·Π° это платят? Ну это ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° исходит ΠΊΠ°ΠΊ. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ YouTube нСсут расходы Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ для ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ врСмя Π½Π° созданиС своСго ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Ρ‚ΠΎΠΆΠ΅.

PySimpleGUI нуТдаСтся Π² вашСй ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π‘Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ финансирования этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ закончится, скорСС всСго, Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅. Π›ΠΈΡ†Π° с наибольшСй ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Π»Π°Ρ‚ΡŒ финансовый Π²ΠΊΠ»Π°Π΄ - это ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ PySimpleGUI Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ слоТно ΠΈ Π½Π΅ прСдставляСт финансовых трудностСй для ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π’Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ‡ΡƒΠΆΠΈΠ΅ дСньги. Если Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρƒ ΠΎΡ‚ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ PySimpleGUI, Π²Ρ‹ Β«ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΒ». НС ΠΈΠΌΠ΅Π΅Ρ‚ значСния, поставляСтся Π»ΠΈ PySimpleGUI Π² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΡ€ΠΎΠ΄Π°Π΅Ρ‚Π΅.Π’Π°ΡˆΠ° компания ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΎΡ‚ использования PySimpleGUI. Если Π±Ρ‹ это Π±Ρ‹Π»ΠΎ Π½Π΅ Ρ‚Π°ΠΊ, Π²Ρ‹ Π±Ρ‹ Π½Π΅ использовали Π΅Π³ΠΎ. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ Π² вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ усилиям PySimpleGUI, - это Π²Ρ‹, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Π’Π°Ρˆ финансовый Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ Π½Π΅ собираСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Π΅ΠΆ автоматичСски. Π’Π°ΡˆΠ° ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ ΠΈΡ‰Π΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π― Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π» Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΎΠ½Π½Ρ‹Ρ… соглашСний Π½ΠΈ с вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ, Π½ΠΈ с ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π­Ρ‚ΠΎ Π²Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС PySimpleGUI Π½Π΅ являСтся ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ AI-Π±ΠΎΡ‚Π°. НСт ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚. Π•ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ±Ρ€Ρ‹Ρ…, Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½Ρ‹Ρ…, Ρ‰Π΅Π΄Ρ€Ρ‹Ρ… людСй), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт всю эту Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π― дСлаю это, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ нравится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π΄Π°Π²Π°Ρ‚ΡŒ людям Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΡ€ΡƒΡ‚Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. Но эта любовь Π½Π΅ ΠΎΠΏΠ»Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ счСта. ЭнСргия, влоТСнная Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π½Π΅ создаСт элСктричСство. Π― дСлаю Π²Π΅Ρ‰ΠΈ, элСктричСство ΠΊ ΠΈΡ… числу Π½Π΅ относится.

Patreon Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° YouTube. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Но доступно нСсколько ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ PayPal, спонсорство GitHub ΠΈ BuyMeACoffee. ВсС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹, Ссли Ρ‡Ρ‚ΠΎ. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ для этого трСбуСтся, - это дСйствиС со стороны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ PySimpleGUI. Если Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС ΠΏΠΎΠΌΠΎΡ‡ΡŒ, Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ бСсплатно. Π”Π΅Π»Π°ΠΉΡ‚Π΅ ΠΊΡ€ΡƒΡ‚Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ. Π‘Π΄Π΅Π»Π°ΠΉΡ‚Π΅ ΠΌΠΈΡ€ Π»ΡƒΡ‡ΡˆΠ΅, ΠΏΡ€ΠΎΡ‰Π΅ Π² использовании. Если Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС ΠΏΠΎΠΌΠΎΡ‡ΡŒ, рассмотритС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поТСртвования Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΏΠΎ ΡƒΠ²Π°ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅.

ВсСм, ΠΊΡ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π», Ρ‡Π΅ΠΌ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ, я ΠΎΡ‡Π΅Π½ΡŒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½.И спасибо всСм, ΠΊΡ‚ΠΎ нашСл ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ «спасибо», это нСбольшая Ρ†Π΅Π½Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ, ΠΈ ΠΎΠ½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π₯отя PySimpleGUI Π² настоящСС врСмя находится ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, сам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ структурирован ΠΊΠ°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Запросы Π½Π° вытягиваниС Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ.

Один ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… способов внСсти свой Π²ΠΊΠ»Π°Π΄ Π² ΠΊΠΎΠ΄ - это ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ прилоТСния. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ GitHub, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ΄ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ снимок экрана Π² Ρ„Π°ΠΉΠ» readme Ρ€Π΅ΠΏΠΎ.

Если отсутствуСт какая-Π»ΠΈΠ±ΠΎ функция, которая Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π°, ΠΈΠ»ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ

.

Π­Ρ‚Π° вСрсия Readme PySimpleGUI Π½Π΅ смогла Π±Ρ‹ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· ΠΏΠΎΠΌΠΎΡ‰ΠΈ @ M4cs. Он фантастичСский Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ PySimpleGUI с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° запуска ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. @ israel-ΡΡƒΡˆΠΈΠ»ΠΊΠ° являСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Π΄Π°Π²Π½ΠΈΠΌ сторонником ΠΈ написал нСсколько ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ PySimpleGUI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»ΠΈ возмоТности ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Ρ€Π°Π»ΡŒΡ‰ΠΈΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для доски, Π±Ρ‹Π» создан Π˜Π·Ρ€Π°ΠΈΠ»Π΅ΠΌ.@ jason9

ΡƒΠ΄ΠΈΠ²ΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΈΡ…, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ с использованиСм PySimpleGUI, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ ΠΏΡ€ΠΎ сапСров, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PySimpleGUI. Японская вСрсия readme Π±Ρ‹Π»Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ @ okajun35.

Π‘ΠΎΠ»Π΅Π΅ 1 200 Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² GitHub, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… PySimpleGUI, Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ благодарности, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²Ρ‹ Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π—Π°Ρ€ΡƒΠ±Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ сообщСния Π² Π’Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅ Π² ΠΎΠ΄Π½ΠΎΡ‡Π°ΡΡŒΠ΅, - это искра, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся днСвная Ρ€Π°Π±ΠΎΡ‚Π° Π½Π°Π΄ PySimpleGUI.Они Π±Ρ‹Π»ΠΈ источником ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ энСргии, которая запускала Π΄Π²ΠΈΠΆΠΎΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ заставляла Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь. Π’ Π·Π½Π°ΠΊ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ этот Ρ„Π°ΠΉΠ» readme Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ Π½Π° японский язык.

Π’Ρ‹ всС Π±Ρ‹Π»ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΌ сообщСством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ³ Π½Π°Π΄Π΅ΡΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

Β© АвторскоС ΠΏΡ€Π°Π²ΠΎ 2020 PySimpleGUI.org

10 Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Python для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² | ΠšΠ»ΡΡ€ Π”. ΠšΠΎΡΡ‚Π°

БосрСдоточСниС внимания Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса - это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс. , - Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ, Π½Π΅ тратя Π½Π° это абсурдно большоС количСство рСсурсов, Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ. .Python ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСских интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈ ΠΌΡ‹ собрали Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· самых популярных Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² графичСского интСрфСйса Python Π² нашСм спискС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСчислСны Π½ΠΈΠΆΠ΅.

ΠŸΠ°ΠΊΠ΅Ρ‚ PyQt построСн Π½Π° основС Qt framework, , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для создания мноТСства ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. ΠŸΠ°ΠΊΠ΅Ρ‚ PyQt5 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ привязок для Python, основанный Π½Π° послСднСй вСрсии v5 Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Qt.

Подобно Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ Qt5, PyQt5 Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ кроссплатформСнный .Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ возмоТности PyQt5, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния для Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΊΠ°ΠΊ Windows, Mac, Linux, iOS, Android ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ создания графичСских интСрфСйсов, арсСнал PyQt5 ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠΉ QtGui ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ QtDesigner , , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ многочислСнныС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ простым пСрСтаскиваниСм. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания этих элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ позволяСт с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ΅Π»ΠΊΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ прилоТСния. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² PyQt5 Π² Π²ΠΈΠ΄Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, прСдоставляя Π²Π°ΠΌ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС возмоТностСй, Ρ‡Π΅ΠΌ просто созданиС графичСского интСрфСйса. Если Π²Π°ΠΌ нравится Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ здСсь, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ PyQt5 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«pip install PyQt5Β».

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ΠΎΠΌ инструмСнтов для графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Tkinter Π±Ρ‹Π» создан для оснащСния соврСмСнных Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² стандартным интСрфСйсом инструмСнтария Tk GUI с Π΅Π³ΠΎ привязками ΠΊ Python. Π’ ΠΌΠΈΡ€Π΅ Tkinter Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… Π½Π°ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ , ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ настраиваСмости.

Tkinter встроСн Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ установщики Python для всСх основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ, ΠΌΡ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹. НСкоторыС ΠΈΠ· этих Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов пСрСчислСны Π½ΠΈΠΆΠ΅:

● Π Π°ΠΌΠΊΠ°: для прСдоставлСния структуры Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ

● Кнопки: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

● ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π°

● Π―Ρ€Π»Ρ‹ΠΊΠΈ: для отобраТСния тСкстовая информация

● Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Π΅ ΠΎΠΊΠ½Π°: для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² / ΠΈΠ· прилоТСния

● Π₯олст: прСдоставляСт пространство для рисования / Ρ€Π°ΡΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

Написано с использованиСм Python ΠΈ Cython , Kivy - это срСда графичСского интСрфСйса с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для создания Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡΠ΅Π½ΡΠΎΡ€Π½Ρ‹Π΅ прилоТСния , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ СстСствСнный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс (NUI) .

NUI - это своСго Ρ€ΠΎΠ΄Π° интСрфСйс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ·Π½Π°Π΅Ρ‚ ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… взаимодСйствиях, обСспСчиваСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом, хотя ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kivy Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ интСрфСйсов ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… , Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ встроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OpenGL ES 2 позволяСт ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ соврСмСнныС ΠΈ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. НаиболСС частоС использованиС инфраструктуры графичСского интСрфСйса Kivy Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π½Π°ΡˆΠΈΡ… прилоТСниях для Android ΠΈ iOS.Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсах устройств Linux, Windows, Raspberry Pi ΠΈ Mac OS . Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту структуру Π² свою срСду, слСдуя инструкциям ΠΏΠΎ установкС, прСдставлСнным Π½Π° ΠΈΡ… Π²Π΅Π±-сайтС.

wxPython - это, ΠΏΠΎ сути, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСйствуСт ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для API wxWidgets. wxPython позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Python ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.ΠšΡ€ΠΎΡΡΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ возмоТности wxPython ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΊΠ°ΠΊ Windows, Mac OS, Linux ΠΈ систСмы Π½Π° основС Unix, практичСски Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Дуэт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ·ΠΆΠ΅ выпустил Project Phoenix Π² качСствС ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΠΊΠ° wxPython с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Python 3 . Он Π±Ρ‹Π» создан с нуля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡΡ‚ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Python Π½Π°Π±ΠΎΡ€Π° инструмСнтов wxWidgets. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π΄Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ послСднСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ v4.1.1 Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΅Π³ΠΎ Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python. Π‘ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ PyPI Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° стала Π±ΠΎΠ»Π΅Π΅ ΠΏΠ»Π°Π²Π½ΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«pip install wxPython == 4.1.1Β».

Написано Π½Π° C ++ Π£Π»ΡŒΡ€ΠΈΡ…ΠΎΠΌ Ρ„ΠΎΠ½ Π—Π°Π΄ΠΎΡƒ, срСда графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ L ibavg с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Python Π² качСствС языка сцСнариСв Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ слуТит ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… срСд для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов для соврСмСнных сСнсорных устройств . ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° графичСских элСмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΠΎ, Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ эффСкты ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ½Π³, осущСствляСтся Π·Π° счСт Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния, достигаСмого с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€ΠΎΠ² OpenGL ΠΈ графичСского процСссора, Ρ‡Ρ‚ΠΎ обСспСчиваСт ΠΏΠ»Π°Π²Π½Ρ‹Π΅ ΠΈ насыщСнныС Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ эффСкты.

libavg ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сСнсорных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ тСкста, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, эффСкты графичСского процСссора, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΡ‹Ρ‚ΠΈΠ΅, Ρ‚Π΅Π½ΠΈ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π’Π°ΠΊΠΆΠ΅ имССтся ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ экрана, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π΅ΠΆΠΈΠΌΡ‹ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ±Ρ€Π΅Π·ΠΊΠΈ, налоТСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ управлСния Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ элСмСнтами.

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ с использованиСм C ++ для обСспСчСния нСвСроятно быстрого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ своСго прилоТСния ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½Ρ‹ libavg.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ инструкции ΠΏΠΎ установкС Π½Π° страницС Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΈΡ… Π²Π΅Π±-сайта.

Π Π°Π·Π²Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ этого Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π½Π΅ являСтся явной дСмонстрациСй Ρ‚ΠΎΠ³ΠΎ, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½? Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ Ρ‚Π΅ΠΌΠ΅, Ρ‚Π΅, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½Π°Ρ‡Π°Π»Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Python GUI ΡƒΡΡ‚Ρ€Π°ΡˆΠ°ΡŽΡ‰ΠΈΠΌΠΈ. Майк Π‘. создал PySimpleGUI Π² 2018 Π³ΠΎΠ΄Ρƒ. – ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ Python Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ графичСского интСрфСйса , Π½Π΅ тратя слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ тонкостСй Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… доступных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСского интСрфСйса.

PySimpleGUI ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 4 ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнных графичСских интСрфСйса Python, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Qt, Tkinter, WxPython ΠΈ Remi , ΠΈ сниТаСт ΠΈΡ… ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π° нСсколько ступСнСй Π·Π° счСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ большСй части стандартного ΠΊΠΎΠ΄Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?

Новички ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ графичСского интСрфСйса ΠΏΠΎ своСму Π²Ρ‹Π±ΠΎΡ€Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π»Π΅Π³ΠΊΠΈΠΉ доступ ΠΊ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ вмСстС с Π½ΠΈΠΌ, для создания ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов Π±Π΅Π· Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ погруТСния Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ. Π­Ρ‚ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΌ вСрсиям своих Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ всС Π΅Ρ‰Π΅ сущСствуСт.

Π‘Ρ€Π΅Π΄Π° графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ PyForms - это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Python, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Π² основС ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстной Windows Forms , которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. ΠšΡ€ΠΎΡΡ-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ возмоТности PyForms ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ созданиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ с нСбольшими измСнСниями ΠΊΠΎΠ΄Π°, устраняя Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ замСдлСния. PyForms прСдоставляСт экзСмпляры Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… популярных графичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PyQt, OpenGL, , , ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы для своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PyForms Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° 3 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ PyForms-GUI, PyForms-Web ΠΈ PyForms-Terminal. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ PyForms Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈ Π² графичСском интСрфСйсС Windows. ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡΡΡŒ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, PyForms идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для быстрого создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ быстро Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ обслуТиваниС Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ… этапах прилоТСния. Установка выполняСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«pip install pyformsΒ», которая добавляСт всС Ρ‚Ρ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΠ»ΠΈ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, это Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ wxPython, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ обсуТдали нСсколько ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π°Π·Π°Π΄? Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ wxPython Π±Ρ‹Π» ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для Π½Π°Π±ΠΎΡ€Π° инструмСнтов графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ wxWidgets, срСда графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ воск являСтся Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ wxPython. Как ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ популярныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, воск Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Python. А для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ интСрСсно, Π΄Π°, воск ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ созданиС кроссплатформСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ИдСя воска состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ простой доступ ΠΊ элСмСнтам ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Python для создания графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΡƒΠ΄Π°Π»ΠΈΠ² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ аспСкты wxPython.ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ базовая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° wxWindows сама ΠΏΠΎ сСбС Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ эффСктивна, структура графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Wax Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ эффСктивности ΠΈ скорости, Ρ‡Ρ‚ΠΎ ΠΈ собствСнныС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, прСдоставляСмыС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ.

PySide2 - это , созданный Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ , которая прСдоставила Π½Π°ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎ популярный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Qt. ΠŸΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Π²ΡˆΠΈΡΡŒ, Π²Ρ‹ встрСтитС Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Qt для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° PythonΒ», , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π½Π΅ Ρ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ пСрСноса PySide для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Qt5, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ сама структура Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ называСтся PySide2.

БСйчас ΠΎΠ½ называСтся ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ кроссплатформСнным ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Python для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Qt for Python. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Python доступ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΌΡƒ Π½Π°Π±ΠΎΡ€Ρƒ инструмСнтов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для быстрого ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ создания ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΡ… инструмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Qt5 ΠΈ Π²Ρ‹ΡˆΠ΅.

PySide2 Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ сообщСства для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ‰ΡƒΡ‚ Π΅Π³ΠΎ. Π Π°Π·Π΄Π΅Π» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ PySide2 Π±Ρ‹Π» Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ области, ΠΊΠ°ΠΊ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ пособия , видСоруководства, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ API, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ мноТСство Ρ‚Π΅ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² структуру. AMD Radeon Control Software , Ρ€Π°Π·Π²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΊΠ°Π±ΠΈΠ½Π΅ для Mercedes Mini Cooper ΠΈ TomTom Navigation Systems - это лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· высокотСхнологичных ΠΈ соврСмСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° Qt.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Python GUI , ΠΈΠ»ΠΈ инфраструктура PyGUI , ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстна, прСдставляСт собой простой API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы с использованиСм собствСнных элСмСнтов для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ довольно Π»Π΅Π³ΠΊΠΈΠΌ API , срСда PyGUI добавляСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Python ΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ. PyGUI Π² настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ созданиС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для систСм Π½Π° Π±Π°Π·Π΅ Unix, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² с Windows ΠΈ устройств Mac OS.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², докумСнтация для всСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ написана Π½Π° Python, Ρ‡Ρ‚ΠΎ избавляСт ΠΎΡ‚ нСобходимости ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ графичСского интСрфСйса. PyGUI доступСн для Python 2 ΠΈ 3, ΠΈ Π΄Π°, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ OpenGL ΠΈ GTK.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ с графичСским интСрфСйсом - Автостопом ΠΏΠΎ Python

Алфавитный список ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с графичСским интСрфСйсом.

Какао

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Cocoa доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² OS X. НС Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ кроссплатформСнноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅!

GTk

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

PyGTK прСдоставляСт привязки Python для Π½Π°Π±ΠΎΡ€Π° инструмСнтов GTK +. Однако ΠΎΠ½ Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½Π΅Π½ PyGObject. PyGTK Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ слСдуСт ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ Π² PyGObject.

PyGObject ΠΈΠ½Π°Ρ‡Π΅ (PyGi)

PyGObject прСдоставляСт Python
привязки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ доступ ΠΊΠΎ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ GNOME.Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ
совмСстим с GTK + 3. Π’ΠΎΡ‚ руководство ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Python GTK + 3
Руководство.

Бсылка API

Киви

Kivy - Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‚Π°Ρ‡
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹Π΅ прилоТСния. ЦСль состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ быстро ΠΈ Π»Π΅Π³ΠΊΠΎ
Π΄ΠΈΠ·Π°ΠΉΠ½ взаимодСйствия ΠΈ быстроС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, дСлая ваш ΠΊΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈ
Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ.

Kivy написан Π½Π° Python, основан Π½Π° OpenGL ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ устройства Π²Π²ΠΎΠ΄Π°.
Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: ΠΌΡ‹ΡˆΡŒ, двойная ΠΌΡ‹ΡˆΡŒ, TUIO, WiiMote, WM_TOUCH, HIDtouch, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ Apple,
ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Kivy Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ развиваСтся сообщСством ΠΈ бСсплатСн. Он дСйствуСт
Π½Π° всСх основных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… (Linux, OS X, Windows, Android).

Основной источник ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ - сайт: http://kivy.org

PyObjC

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² OS X. НС Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ кроссплатформСнноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Pyjs Desktop (Ρ€Π°Π½Π΅Π΅ Pyjamas Desktop)

Pyjs Desktop - это Π½Π°Π±ΠΎΡ€ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² для Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΈ кроссплатформСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Ρ€Π°ΠΌΠΊΠΈ.Π­Ρ‚ΠΎ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ исходный ΠΊΠΎΠ΄ Π²Π΅Π±-прилоТСния Python
выполняСтся ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Основной сайт: pyjs.

Qt

Qt - это кроссплатформСнная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, которая
ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с графичСским интСрфСйсом, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.

PySimpleGUI

PySimpleGUI - это ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для Tkinter
ΠΈ Qt (Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π² ΠΏΡƒΡ‚ΠΈ). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ
ГрафичСскиС интСрфСйсы Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅ с использованиСм PySimpleGUI, Ρ‡Π΅ΠΌ Ссли Π±Ρ‹ Π±Ρ‹Π» написан Ρ‚ΠΎΡ‚ ΠΆΠ΅ графичСский интСрфСйс.
Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Tkinter ΠΈΠ»ΠΈ Qt.Код PySimpleGUI ΠΌΠΎΠΆΠ½ΠΎ Β«ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ» ΠΌΠ΅ΠΆΠ΄Ρƒ GUI.
frameworks, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

 $ pip install pysimplegui
 

PySimpleGUI содСрТится Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ PySimpleGUI. py. Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΈΠΏ
установка Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°, ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° PySimpleGUI.py Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
ΠΏΠ°ΠΏΠΊΠ° - это всС, Ρ‡Ρ‚ΠΎ трСбуСтся для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈ Π½Π°Ρ‡Π°Π»Π° использования.

Π’ΠΎΠ³Π°

Toga - это Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Python, Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ОБ,
кроссплатформСнный инструмСнтарий GUI. Toga состоит ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² с
ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс для упрощСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСского интСрфСйса, Π½Π΅ зависящСго ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Toga доступСн Π½Π° macOS, Windows, Linux (GTK) ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ
Android ΠΈ iOS.

Tk

Tkinter - это Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ слой ΠΏΠΎΠ²Π΅Ρ€Ρ… Tcl / Tk. Π˜ΠΌΠ΅Π΅Ρ‚ прСимущСство
Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅
ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΈ совмСстимый инструмСнтарий для программирования.

И Tk, ΠΈ Tkinter доступны Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Unix, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Windows.
ΠΈ систСмы Macintosh. Начиная с вСрсии 8.0, Tk ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ собствСнный внСшний Π²ΠΈΠ΄ ΠΈ
Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сСбя Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Π’ TkDocs Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ многоязычный ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ Tk с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Python. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация
доступно Π² Python Wiki.

wxPython

wxPython - это Π½Π°Π±ΠΎΡ€ инструмСнтов с графичСским интСрфСйсом для языка программирования Python. Π­Ρ‚ΠΎ позволяСт Python
программисты для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ, Π²Ρ‹ΡΠΎΠΊΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ графичСским ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
интСрфСйс, просто ΠΈ Π»Π΅Π³ΠΊΠΎ. Он Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Python.
(собствСнный ΠΊΠΎΠ΄), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ популярной кроссплатформСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ графичСского интСрфСйса wxWidgets, которая
написан на C ++.

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ (ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΡƒΡŽ) wxPython
ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу https://www.wxpython.org/pages/downloads/ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ
ΠΏΠ°ΠΊΠ΅Ρ‚ для вашСй ОБ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса с использованиСм Tkinter Π² Python

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ прилоТСния ΡƒΠ΄ΠΎΠ±Π½Ρ‹ Π² использовании. ВзаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π΅ ограничиваСтся Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ с консоли. Π£ Π½ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ эргономичный графичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (GUI) благодаря высокоскоростным процСссорам ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠΌΡƒ графичСскому ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΡŽ. Π­Ρ‚ΠΈ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠ² ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ списков ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов графичСского интСрфСйса (ΠΈΠ»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ²).

Π’Π°ΠΊΠΈΠ΅ прилоТСния Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ с использованиСм ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… доступных графичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. ГрафичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° - это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ инструмСнтарий, содСрТащий Π½Π°Π±ΠΎΡ€ классов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… элСмСнтов графичСского интСрфСйса. Π­Ρ‚ΠΈ графичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ написаны Π½Π° C / C ++. МногиС ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π»ΠΈ пСрСнСсСны Π½Π° Python Π² Π²ΠΈΠ΄Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. НСкоторыС ΠΈΠ· Π½ΠΈΡ… пСрСчислСны Π½ΠΈΠΆΠ΅:

Tkinter - это ΠΏΠΎΡ€Ρ‚ Python для Tcl-Tk GUI toolkit , Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π€Ρ€Π΅Π΄Ρ€ΠΈΠΊΠΎΠΌ Π›ΡƒΠ½Π΄ΠΎΠΌ.Π­Ρ‚ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² стандартныС дистрибутивы Python для всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

PyQtis, интСрфСйс Python для Qt, являСтся ΠΎΡ‡Π΅Π½ΡŒ популярной кроссплатформСнной срСдой графичСского интСрфСйса.

PyGTK - это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСносит Python Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ популярный инструмСнтарий Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² с графичСским интСрфСйсом ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ GTK.

WxPython - это ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Python для WxWidgets, Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ кроссплатформСнной графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π’ этом руководствС ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ использованиС Tkinter ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Python Π½Π° основС графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π‘Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с графичСским интСрфСйсом

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ графичСского интСрфСйса ΠΈ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Tkinter.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ дСмонстрируСт шаги ΠΏΠΎ созданию ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса.

  ΠΈΠ· tkinter import *
ΠΎΠΊΠ½ΠΎ = Tk ()
# Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ сюда Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹

ΠΎΠΊΠ½ΠΎ.title ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python')
window.geometry ("300x200 + 10 + 20")
window.mainloop ()
  

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ TKinter. ПослС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° настройтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прилоТСния, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Tk () .
Π­Ρ‚ΠΎ создаст ΠΎΠΊΠ½ΠΎ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (ΠΊΠΎΡ€Π΅Π½ΡŒ), ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ Ρ„Ρ€Π΅ΠΉΠΌ со строкой Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Π±Π»ΠΎΠΊ управлСния с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ свСртывания ΠΈ закрытия, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для хранСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ².
ΠœΠ΅Ρ‚ΠΎΠ΄ geometry () опрСдСляСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ, высоту ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΡƒΠ³Π»Π° ΠΊΠ°Π΄Ρ€Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ (всС значСния Π² пиксСлях): ΠΎΠΊΠ½ΠΎ .гСомСтрия ("ΡˆΠΈΡ€ΠΈΠ½Π° x высота + XPOS + YPOS")
Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прилоТСния Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ событий, вызывая ΠΌΠ΅Ρ‚ΠΎΠ΄ mainloop () .
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ постоянно ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ любого события, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ элСмСнтами Π² Π½Π΅ΠΌ. Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тСкстом, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² тСкстовоС ΠΏΠΎΠ»Π΅, Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ· Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ / Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΌΡ‹ΡˆΠΈ ΠΈ Ρ‚. Π”.
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прилоТСния Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° события ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠœΡ‹ обсудим ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ событий ΠΏΠΎΠ·ΠΆΠ΅ Π² этом руководствС. Π¦ΠΈΠΊΠ» событий Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° закрытия Π² строкС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.
ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ создаст ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ:

Окно Python-Tkinter

ВсС классы Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Tkinter унаслСдованы ΠΎΡ‚ класса Widget. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹.

Кнопка

Кнопка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Button.ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ класса Button трСбуСтся ссылка Π½Π° Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Подпись: Кнопка (ΠΎΠΊΠ½ΠΎ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹)

Для настройки ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ свойства:

  • тСкст: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ
  • bg: Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π°
  • fg: Ρ†Π²Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π°
  • font: Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°
  • ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: для отобраТСния вмСсто тСкста
  • ΠΊΠΎΠΌΠ°Π½Π΄Π°: функция, вызываСмая ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ
  ΠΈΠ· tkinter import *
ΠΎΠΊΠ½ΠΎ = Tk ()
btn = Button (window, text = "Π­Ρ‚ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ", fg = 'blue')
btn. мСсто (x = 80, y = 100)
window.title ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python')
window.geometry ("300x200 + 10 + 10")
window.mainloop ()
  

Π­Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΊΠ°

Π―Ρ€Π»Ρ‹ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса Label. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρƒ Label Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΊΠ½Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠΏΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Button.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ добавляСт ΠΌΠ΅Ρ‚ΠΊΡƒ Π² ΠΎΠΊΠ½ΠΎ.

  ΠΈΠ· tkinter import *
ΠΎΠΊΠ½ΠΎ = Tk ()
lbl = Label (window, text = "Π­Ρ‚ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Label", fg = 'red', font = ("Helvetica", 16))
Ρ„ΡƒΠ½Ρ‚. мСсто (x = 60, y = 50)
window.title ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python')
window.geometry ("300x200 + 10 + 10")
window.mainloop ()
  

Π—Π΄Π΅ΡΡŒ подпись ΠΌΠ΅Ρ‚ΠΊΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ с использованиСм ΡˆΡ€ΠΈΡ„Ρ‚Π° Helvetica Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 16 ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ².

Π—Π°ΠΏΠΈΡΡŒ

Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ однострочноС тСкстовоС ΠΏΠΎΠ»Π΅ для принятия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. Для Π²Π²ΠΎΠ΄Π° многострочного тСкста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ «ВСкст».
Помимо ΡƒΠΆΠ΅ упомянутых свойств, конструктор класса Entry ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • bd: Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ тСкстового поля; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - 2 пиксСля.
  • show: для прСобразования тСкстового поля Π² ΠΏΠΎΠ»Π΅ пароля установитС для свойства show Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«*Β».

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ добавляСт тСкстовоС ΠΏΠΎΠ»Π΅.

txtfld = Entry (window, text = "Π­Ρ‚ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π°", bg = 'black', fg = 'white', bd = 5)

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся ΠΎΠΊΠ½ΠΎ с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ ΠΈ ΠΏΠΎΠ»Π΅ΠΌ Π²Π²ΠΎΠ΄Π°.

  ΠΈΠ· tkinter import *
ΠΎΠΊΠ½ΠΎ = Tk ()
btn = Button (window, text = "Π­Ρ‚ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ", fg = 'blue')
btn. мСсто (x = 80, y = 100)
lbl = Label (window, text = "Π­Ρ‚ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Label", fg = 'red', font = ("Helvetica", 16))
Ρ„ΡƒΠ½Ρ‚. мСсто (x = 60, y = 50)
txtfld = Entry (window, text = "Π­Ρ‚ΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π°", bd = 5)
txtfld.place (x = 80, y = 150)
window.title ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python')
window.geometry ("300x200 + 10 + 10")
window.mainloop ()
  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² Python-Tkinter

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π°

Radiobutton: Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ-ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ Π² состоянии Π’ΠšΠ› / Π’Π«ΠšΠ›.ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Checkbutton: Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ΠŸΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ появится ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°ΠΆΠΎΠΊ. Π•Π³ΠΎ состояниС Β«Π’ΠšΠ›.Β» ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ΡΡ Π³Π°Π»ΠΎΡ‡ΠΊΠΎΠΉ Π² ​​полС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ исчСзаСт ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Β«Π’Π«ΠšΠ›. Β».

Combobox: Π­Ρ‚ΠΎΡ‚ класс ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ttk ΠΏΠ°ΠΊΠ΅Ρ‚Π° tkinterpackage. Он заполняСт Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ»ΠΈ список, Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Listbox: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Combobox, этот Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ всю ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ строковых элСмСнтов. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько элСмСнтов.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ дСмонстрируСтся ΠΎΠΊΠ½ΠΎ с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ Π²Ρ‹Π±ΠΎΡ€Π°: Radiobutton, Checkbutton, Listbox ΠΈ Combobox:

  ΠΈΠ· tkinter import *
ΠΈΠ· tkinter.ttk import Combobox
ΠΎΠΊΠ½ΠΎ = Tk ()
var = StringVar ()
var.set ("ΠΎΠ΄ΠΈΠ½")
data = ("ΠΎΠ΄ΠΈΠ½", "Π΄Π²Π°", "Ρ‚Ρ€ΠΈ", "Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅")
cb = Combobox (ΠΎΠΊΠ½ΠΎ, значСния = Π΄Π°Π½Π½Ρ‹Π΅)
cb.place (x = 60, y = 150)

lb = Listbox (ΠΎΠΊΠ½ΠΎ, высота = 5, selectmode = 'multiple')
для числа Π² Π΄Π°Π½Π½Ρ‹Ρ…:
    lb.insert (ΠšΠžΠΠ•Π¦, число)
Ρ„ΡƒΠ½Ρ‚ Π½Π° мСсто (x = 250, y = 150)

v0 = IntVar ()
v0. set (1)
r1 = Radiobutton (ΠΎΠΊΠ½ΠΎ, тСкст = "муТской", пСрСмСнная = v0, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 1)
r2 = Radiobutton (ΠΎΠΊΠ½ΠΎ, тСкст = "ТСнский", пСрСмСнная = v0, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = 2)
r1.place (x = 100, y = 50)
r2.мСсто (x = 180, y = 50)
                
v1 = IntVar ()
v2 = IntVar ()
C1 = Checkbutton (window, text = "Cricket", variable = v1)
C2 = Checkbutton (window, text = "Tennis", variable = v2)
C1.мСсто (x = 100, y = 100)
C2.мСсто (x = 180, y = 100)

window.title ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python')
window.geometry ("400x300 + 10 + 10")
window.mainloop ()
  

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π² Python-Tkinter

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ - это ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ прилоТСния ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Application всСгда ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ события, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ запускаСт Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ событий. ДСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ, Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ΠΊΠΎΠ³Π΄Π° элСмСнт управлСния находится Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкстового поля,
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт становится Π½Π΅ Π² фокусС ΠΈΠ»ΠΈ Π½Π΅ Π² фокусС ΠΈ Ρ‚. Π΄.

Бобытия Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Π²ΠΈΠ΄Π΅ строк Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ <Ρ‚ΠΈΠΏ-ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°>.

МногиС события прСдставлСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹.Π’ΠΈΠΏ опрСдСляСт класс события.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Tkinter распознаСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события:

ΠœΠ΅Ρ€ΠΎΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π’ΠΈΠΏ ΠšΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ДСйствиС
<Кнопка 1> Кнопка 1 Π©Π΅Π»Ρ‡ΠΎΠΊ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.
<Кнопка 2> Кнопка 2 Π©Π΅Π»Ρ‡ΠΎΠΊ срСднСй ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ.
<Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ> Π Π°Π·Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Окно Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ.
<Двойная ΠΊΠ½ΠΎΠΏΠΊΠ° 1> Π”Π²ΠΎΠΉΠ½ΠΎΠΉ Кнопка 1 Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ 1.
Π’ΠΎΠΉΡ‚ΠΈ ΠšΡƒΡ€ΡΠΎΡ€ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΎΠΊΠ½ΠΎ.
<Π Π°Π·ΠΎΠ±Π»Π°Ρ‡ΠΈΡ‚ΡŒ> Π Π°Π·ΠΎΠ±Π»Π°Ρ‡Π°Ρ‚ΡŒ Окно ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ частично ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ.
НаТатиС клавиши Π° НаТата любая клавиша.
KeyRelease ΠžΡ‚ΠΏΡƒΡ‰Π΅Π½ любой ΠΊΠ»ΡŽΡ‡.
<ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ> ΠŸΠΎΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠšΡƒΡ€ΡΠΎΡ€ ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ.
<ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ> Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ НаТата клавиша PRINT.
Π‘ΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ фокус.
FocusOut Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ тСряСт фокус.

Π‘ΠΎΠ±Ρ‹Ρ‚ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ зарСгистрировано с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² графичСского интСрфСйса Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½. Π’ Tkinter Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ событиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°.
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ bind () , Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² конструкторС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ Bind ()

bind () ΠœΠ΅Ρ‚ΠΎΠ΄ связываСт событиС с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ чСтности функция вызываСтся.

 Π’ΠΈΠ΄ΠΆΠ΅Ρ‚.ΠΏΡ€ΠΈΠ²ΡΠ·Π°Ρ‚ΡŒ (событиС, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²)
 

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MyButtonClicked () ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

  ΠΈΠ· tkinter import *
ΠΎΠΊΠ½ΠΎ = Tk ()
btn = Кнопка (ΠΎΠΊΠ½ΠΎ, тСкст = 'ОК')
btn.bind ('', MyButtonClicked)
  

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ события характСризуСтся ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ свойствами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ исходный Π²ΠΈΠ΄ΠΆΠ΅Ρ‚, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ полоТСния, Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ ΠΈ Ρ‚ΠΈΠΏ события. ΠŸΡ€ΠΈ нСобходимости ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. НапримСр, Button являСтся источником события Button.
Π˜Ρ‚Π°ΠΊ, ΠΎΠ½ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ привязан ΠΊ Π½Π΅ΠΌΡƒ. Π£ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² конструктора ΠΌΠ½ΠΎΠ³ΠΈΡ… классов Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ настроСн Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° происходит связанноС с Π½Π΅ΠΉ событиС.Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π΅Π½, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ bind () .

btn = Кнопка (ΠΎΠΊΠ½ΠΎ, тСкст = 'ОК', ΠΊΠΎΠΌΠ°Π½Π΄Π° = myEventHandlerFunction)

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅, Π² ΠΎΠΊΠ½Π΅ прилоТСния Π΅ΡΡ‚ΡŒ Π΄Π²Π° поля Π²Π²ΠΎΠ΄Π° тСкста ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π•ΡΡ‚ΡŒ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π’Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ.
ΠžΠΆΠΈΠ΄Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π΄Π΅Ρ‚ число Π² Π΄Π²Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Π²Ρ…ΠΎΠ΄Π°. Π˜Ρ… слоТСниС ΠΈΠ»ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ отобраТаСтся Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ.

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° (Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ) настраиваСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π•Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - это ΠΌΠ΅Ρ‚ΠΎΠ΄ add () Π² классС.
Вторая ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ bind () для рСгистрации Ρ‰Π΅Π»Ρ‡ΠΊΠ° Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sub () .
Оба ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ содСрТимоС тСкстовых ΠΏΠΎΠ»Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get () Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° Entry, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ числа, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ слоТСниС / Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ тСкстовом ΠΏΠΎΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° insert () .

  ΠΈΠ· tkinter import *
класс MyWindow:
    def __init __ (self, win):
        self.lbl1 = Label (win, text = 'ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число')
        self.lbl2 = Label (win, text = 'Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число')
        self.lbl3 = ΠœΠ΅Ρ‚ΠΊΠ° (ΠΏΠΎΠ±Π΅Π΄Π°, тСкст = 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚')
        self.t1 = Π—Π°ΠΏΠΈΡΡŒ (bd = 3)
        self.t2 = Π’Ρ…ΠΎΠ΄ ()
        self.t3 = Π’Ρ…ΠΎΠ΄ ()
        self.btn1 = Кнопка (ΠΏΠΎΠ±Π΅Π΄Π°, тСкст = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ')
        self.btn2 = Кнопка (Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ, тСкст = 'Π’Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ')
        сСбя.lbl1.place (x = 100, y = 50)
        self.t1.place (x = 200, y = 50)
        self.lbl2.place (x = 100, y = 100)
        self.t2.place (x = 200, y = 100)
        self.b1 = Кнопка (win, text = 'Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ', command = self.add)
        self.b2 = Кнопка (Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ, тСкст = 'Π’Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ')
        self.b2.bind ('<Кнопка-1>', self.sub)
        self.b1.place (x = 100, y = 150)
        self.b2.place (x = 200, y = 150)
        self.lbl3.place (x = 100, y = 200)
        self.t3.place (x = 200, y = 200)
    def add (self):
        сСбя.t3.delete (0, 'ΠΊΠΎΠ½Π΅Ρ†')
        num1 = int (self.t1.get ())
        число2 = ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» (self.t2.get ())
        Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = число1 + число2
        self.t3.insert (END, str (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚))
    def sub (сСбя, событиС):
        self.t3.delete (0, 'ΠΊΠΎΠ½Π΅Ρ†')
        num1 = int (self.t1.get ())
        число2 = ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» (self.t2.get ())
        Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = число1-число2
        self.t3.insert (END, str (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚))

ΠΎΠΊΠ½ΠΎ = Tk ()
mywin = MyWindow (ΠΎΠΊΠ½ΠΎ)
window.title ('ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Python')
window.geometry ("400x300 + 10 + 10")
ΠΎΠΊΠ½ΠΎ.mainloop ()
  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс Π² Python-Tkinter

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TKinter Π² Python.

Π’ΠΎΠΏ-5 Π»ΡƒΡ‡ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ графичСского интСрфСйса Python

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим 5 Π»ΡƒΡ‡ΡˆΠΈΡ… графичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Π½ΠΈΡ….

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ графичСский интСрфСйс?

ГрафичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ графичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ - это интСрактивная срСда для получСния ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуациях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ„ΠΎΡ€ΠΌΡ‹, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, тСсты ΠΈ Ρ‚. Π”.Он прСдоставляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ экран, Ρ‡Π΅ΠΌ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ интСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (CLI).

Бписок Π»ΡƒΡ‡ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ графичСского интСрфСйса Python

Π”Π°Π²Π°ΠΉΡ‚Π΅ сразу ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π΅Π»Ρƒ ΠΈ рассмотрим Π»ΡƒΡ‡ΡˆΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ графичСского интСрфСйса для Python.

1. PyQT5

PyQT5 - это срСда графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса (GUI) для Python. Он ΠΎΡ‡Π΅Π½ΡŒ популярСн срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈ графичСский интСрфСйс ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π° QT. Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ QT - это Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Π°Ρ срСда, которая позволяСт ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов.

Π­Ρ‚ΠΎ бСсплатноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для привязки, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Windows, Mac, Android, Linux ΠΈ Raspberry PI.

Для установки PyQT5 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install pyqt5
 

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ простой ΠΊΠΎΠ΄:

ΠΈΠ· PyQt5.QtWidgets import QApplication, QMainWindow
import sys

класс Window (QMainWindow):
   def __init __ (сам):
       супСр().__Π² этом__()

       self.setGeometry (300, 300, 600, 400)
       self.setWindowTitle ("Окно PyQt5")
       self.show ()

app = QApplication (sys.argv)
window = Окно ()
sys.exit (app.exec_ ())

 

Π’Ρ‹Π²ΠΎΠ΄ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

PyQt5

Команда ScienceSoft ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅Ρ‚ прСимущСства использования PyQt:

PyQt - это Π·Ρ€Π΅Π»Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ привязок Python ΠΊ Qt для кроссплатформСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ встроСнных Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΈ инструмСнтов для создания настраиваСмых Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² для формирования слоТных графичСских интСрфСйсов, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQL для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ взаимодСйствия с Π½ΠΈΠΌΠΈ.

2. Python Tkinter

Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ графичСского интСрфСйса называСтся Tkinter. Tkinter - ΠΎΠ΄Π½Π° ΠΈΠ· самых популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ графичСского интСрфСйса Python для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ сочСтаниС стандартного графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ TK ΠΈ Python.

Tkinter прСдоставляСт Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, тСкстовыС поля, Ρ„Π»Π°ΠΆΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с графичСским ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом.

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΊΠ½ΠΎΠΏΠΎΠΊ управлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для отобраТСния ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ холста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для рисования Ρ‚Π°ΠΊΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€, ΠΊΠ°ΠΊ Π»ΠΈΠ½ΠΈΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ ΠΈ Ρ‚. Π”. Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Tkinter - это встроСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Python, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π΅, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΡƒΡŽ срСду графичСского интСрфСйса. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ кодирования с использованиСм Tkinter.

ΠΈΠ· tkinter import *

класс Root (Tk):
    def __init __ (сам):
        super (ΠΊΠΎΡ€Π΅Π½ΡŒ, сам) .__ init __ ()

        self.title ("Python Tkinter")
        сСбя.ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½Ρ‹ΠΉ (500 400)

ΠΊΠΎΡ€Π΅Π½ΡŒ = ΠšΠΎΡ€Π΅Π½ΡŒ ()
root.mainloop ()
 

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

Π’ΠΊΠΈΠ½Ρ‚Π΅Ρ€

3. PySide 2

Π’Ρ€Π΅Ρ‚ΡŒΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° графичСского интСрфСйса Python, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ собираСмся ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, - это PySide2 ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ Π΅Π΅ QT для python. Qt для Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ привязки Python для Qt (PySide2), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ API-интСрфСйсы Π² прилоТСниях Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ инструмСнт Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° привязок (Shiboken2), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для прСдставлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² C ++ Π² Python.

Qt для Python доступСн ΠΏΠΎΠ΄ LGPLv3 / GPLv3 ΠΈ коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Qt.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ процСсс установки, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для установки Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

pip ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PySide2
 

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ настройки ΠΊΠ°Π΄Ρ€Π° графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PySide2.

ΠΈΠ· PySide2.QtWidgets ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QtWidgets, QApplication
import sys

Окно класса (QtWidgets):
    def __init __ (сам):
        супСр () .__ init __ ()

        self.setWindowTitle ("Окно Pyside2")
        self.setGeometry (300,300,500,400)


app = QApplication (sys.argv)
window = Окно ()
window.show ()
app.exec_ ()
 

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

Писайд2

4. Киви

Π”Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ графичСского интСрфСйса, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ собираСмся ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, называСтся Kivy. Kivy - это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΡ‚Π°Ρ‡.

Kivy Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Linux, Windows, OS X, Android, iOS ΠΈ Raspberry Pi. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ Π½Π° всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠ΄ΠΎΠ², ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈ устройств, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ WM_Touch, WM_Pen, Mac OS X Trackpad ΠΈ Magic Mouse, Mtdev, Linux Kernel HID.

Kivy Π½Π° 100% бСсплатСн ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ MIT.

Набор инструмСнтов ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½, поддСрТиваСтся ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² коммСрчСском ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ стабилСн ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ API, Π° Ρ‚Π°ΠΊΠΆΠ΅ руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ГрафичСский Π΄Π²ΠΈΠΆΠΎΠΊ Kivy построСн Π½Π° OpenGL ES 2 с использованиСм соврСмСнного ΠΈ быстрого графичСского ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.

Набор инструмСнтов Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 20 Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², всС с высокой ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. МногиС части написаны Π½Π° C с использованиСм Cython ΠΈ протСстированы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгрСссионных тСстов.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ ΠΊ установкС Kivy, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Β«glewΒ». Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pip, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

pip ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
 

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Enter, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ установлСна. ПослС этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ввСсти эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для установки Kivy:

pip install Kivy
 

Π˜Ρ‚Π°ΠΊ, послС установки ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Kivy, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, насколько это просто.

ΠΈΠ· прилоТСния ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° kivy.app
ΠΈΠ· kivy.uix.button import Button

класс TestApp (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅):
    def build (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
        Кнопка Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (text = "Hello Kivy World")

TestApp (). Run ()
 

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

Киви

5. wxPython

Π˜Ρ‚Π°ΠΊ, послСдняя структура графичСского интСрфСйса, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ собираСмся ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, - это wxPython. wxPython - это кроссплатформСнный Π½Π°Π±ΠΎΡ€ инструмСнтов с графичСским интСрфСйсом для языка программирования Python.

Он позволяСт программистам Python просто ΠΈ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ, Π²Ρ‹ΡΠΎΠΊΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ графичСским ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом.Он Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π½Π°Π±ΠΎΡ€Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π΅Ρ€Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ графичСского интСрфСйса популярной кроссплатформСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ wxWidgets, написанной Π½Π° C ++.

Подобно Python ΠΈ wxWidgets, wxPython ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄.

wxPython - кроссплатформСнный инструмСнтарий. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ настоящСС врСмя ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Microsoft Windows, Mac OS X ΠΈ macOS, Π° Ρ‚Π°ΠΊΠΆΠ΅ Linux.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ процСсс установки ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€.ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для установки просто Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ wxPython
 

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠΈΠΌΠΏΠΎΡ€Ρ‚ wx

класс MyFrame (wx.Frame):
    def __init __ (я, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ):
        super (MyFrame, self) .__ init __ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ, title = title, size = (400,300))


    self.panel = MyPanel (сам)


класс MyPanel (wx.Panel):
    def __init __ (я, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ):
        super (MyPanel, self) .__ init __ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ)


класс MyApp (wx.App):
    def OnInit (self):
        self.frame = MyFrame (parent = None, title = "Окно wxPython")
        сСбя.frame.show ()
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ True

app = MyApp ()
app.MainLoop ()
 

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅:

WxPython

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ 5 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ графичСского интСрфСйса Python, ΠΈ, Π½Π° ΠΌΠΎΠΉ взгляд, PySide2 ΠΈ pyQt5 ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ графичСского интСрфСйса. Но ΠΎΠ½ΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с коммСрчСской Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, ΠΈ это ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹. Tkinter, Kivy ΠΈ wxPython - это бСсплатныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ графичСского интСрфСйса для Python.

Какая ваша любимая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° графичСского интСрфСйса Π² Python?

Python Desktop Application: Π»ΡƒΡ‡ΡˆΠ°Ρ срСда Python для создания Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Python - самый популярный язык программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ простой ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ снова ΠΈ снова Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСвосходна.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Python - это ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр ΠΎΠΏΡ†ΠΈΠΉ для срСды GUI (Graphical User Interface) (ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния с графичСским интСрфСйсом простым ΠΈ бСзопасным способом). Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ обсуТдаСтся Π»ΡƒΡ‡ΡˆΠΈΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Python для создания Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ графичСского интСрфСйса.

NB: Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ вас Π±Ρ‹Π»ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания языка программирования Python, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти срСды Python.

Π”Π°Π²Π°ΠΉΡ‚Π΅ углубимся Π² диск

PyQT

PyQt - это Π½Π°Π±ΠΎΡ€ инструмСнтов для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² с графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΈ популярных интСрфСйсов Python. Π­Ρ‚ΠΎ комбинация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Qt (ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Nokia) ΠΈ языка программирования Python, которая оставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΡ€Π°Π²ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡƒΡ‚Π΅ΠΌ кодирования ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Qt Designer.

PyQt - это бСсплатноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для привязки Python с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π½Π°Π±ΠΎΡ€ инструмСнтов для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Qt, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для кросс-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½ΠΎΠΉ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Π’ бСсплатной вСрсии Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны, Π½ΠΎ Ссли вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ бСсплатной Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ.

PyQt доступСн Π² Windows, MacOSX, Linux, Android iOS ΠΈ Raspberry Pi, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях Python ΠΎΡ‚ v2 Π΄ΠΎ Qt v5.

Π’ΠΊΠΈΠ½Ρ‚Π΅Ρ€

Tkinter - самый популярный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ для графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈΠ»ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Он Π½Π°Π·Π²Π°Π½ Ρ‚Π°ΠΊ ΠΈΠ·-Π·Π° своСй простоты. Tkinter - это комбинация стандартного графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Tk ΠΈ Python.

TKinter поставляСтся с ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠ΅ΠΌ рСсурсов ΠΊΠΎΠ΄ΠΎΠ² ΠΈ справочников, Ρ‡Ρ‚ΠΎ являСтся Π³Π»Π°Π²Π½Ρ‹ΠΌ достоинством Π²Ρ‹Π±ΠΎΡ€Π° Π΅Π³ΠΎ Π² качСствС ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Он прСдоставляСт Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ тСкстовыС поля, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с графичСским ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния Button, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отобраТСния ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Canvas ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для рисования Ρ„ΠΈΠ³ΡƒΡ€ (Π»ΠΈΠ½ΠΈΠΉ, ΠΎΠ²Π°Π»ΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠ² ...) Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π›Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠΌΠΎΡ‰ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с прСпятствиСм Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСго прилоТСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Tkinter тысячи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.Tkinter - это ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄, доступный ΠΏΠΎ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Python.

Киви

Kivy Π² качСствС ускорСнной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ OpenGL ES 2 для создания Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах (Windows, MacOSX, Linux, Android iOS ΠΈ Raspberry Pi).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Kivy - это вСсСло, Π»Π΅Π³ΠΊΠΎ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ бСсплатноС ΠΈ прСдставляСт собой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для создания ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ СстСствСнным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом.Π’ Π½Π°Π±ΠΎΡ€Π΅ инструмСнтов Kivy Π΅ΡΡ‚ΡŒ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ².

WxPython

WxPython - это ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Python. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для кроссплатформСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Widget.

Как Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ прилоТСния для Windows, Unix ΠΈ Mac OS.

PyGUI

PyGUI - это самый простой ΠΈ Π»Π΅Π³ΠΊΠΈΠΉ ΠΈΠ· всСх графичСских интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ синхронизирован с языком программирования Python.Π­Ρ‚ΠΎ кроссплатформСнная срСда графичСских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Windows, Mac OS ΠΈ Unix.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ PyGUI вставляСт ΠΎΡ‡Π΅Π½ΡŒ мСньшС ΠΊΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ GUI ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Python, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ СстСствСнный графичСский интСрфСйс ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

РСзюмС

Π’Ρ‹ΡˆΠ΅ пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ доступныС срСды графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Python. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π΅ΠΌΡƒ срСду графичСского интСрфСйса Python.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *