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 pywinautoapp = 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')
ΠΡΡΡ ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠΌΠ΅Π½
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ ΡΡΠ°Π»ΠΎΠ½Π½ΡΠ΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°? Π’Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΠΈΡΠΊΠΎΠΌ. ΠΡΠ»ΠΈ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈΠΌΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅Π΅ Π½Π° ΡΡΠ°Π»ΠΎΠ½, Π·Π½Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½.
- ΠΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΡ (ΡΠ΅ΠΊΡΡ, ΠΈΠΌΡ):
app.Properties.OK.click()
- ΠΠΎ ΡΠ΅ΠΊΡΡΡ ΠΈ ΠΏΠΎ ΡΠΈΠΏΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°:
app.Properties.OKButton.click()
- ΠΠΎ ΡΠΈΠΏΡ ΠΈ ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ:
app.Properties.Button3.click()
(ΠΈΠΌΠ΅Π½Π°Button0
ΠΈButton1
ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ,Button2
β ΠΊΠΎ Π²ΡΠΎΡΠΎΠΌΡ, ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠΆΠ΅ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ β ΡΠ°ΠΊ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ) - ΠΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠ΅ΠΊΡΡΡ (ΡΠ»Π΅Π²Π° ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΡ
Ρ) ΠΈ ΠΏΠΎ ΡΠΈΠΏΡ:
app.
(ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅ΠΊΡΡΠΎΠΌ)OpenDialog.FileNameEdit.set_text("")
- ΠΠΎ ΡΠΈΠΏΡ ΠΈ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡ Π²Π½ΡΡΡΠΈ:
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 ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΠΎΡΡΠ°:
- Π’ΠΊΠΈΠ½ΡΠ΅Ρ
- PyQt
- wxPython
- Π Π΅ΠΌΠΈ
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:
- pip Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈΠ· PyPI
- ΠΠ°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΠ°ΠΉΠ» 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.
.