ΠΠ° ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅Π΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ GUI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅? β Π₯Π°Π±Ρ Q&A
ΠΠ΅ ΡΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠ΅Ρ
, ΠΊΡΠΎ Delphi ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ.
1.ΠΠ½ΠΎ Π½Π΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ (ΡΠ½ΠΈΠΊΠΎΠ΄ Π² 2010(ΠΈΠ»ΠΈ 2009) Π³ΠΎΠ΄Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ!).
2.ΠΠ½ΠΎ ΡΠ°ΠΊΠΈ ΠΌΠ°Π»ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΠΎΠ΅, ΡΠ°ΠΊ Π΅ΡΠ΅ ΠΈ ΠΏΠ»Π°ΡΠ½ΠΎΠ΅!
ΠΠ°ΡΡΠ΅Ρ Π‘++, ΡΠΎ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ·Π°ΡΡ Visual Studio ΠΈ Π²ΡΡΠΊΠΈΠ΅ ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° MFC, ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ·Π³ Π²ΡΠ½Π΅ΡΠ΅ΡΠ΅ ΡΠ΅Π±Π΅ ΠΈ Π²ΠΎΠ·Π½Π΅Π½Π°Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠ»ΡΡΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΌ ΠΏΠΎ ΠΏΡΠ°Π²Π΄Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
Π§ΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ?
Nokia Qt, ΠΏΡΠΈΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π° C++ ΠΊΠΎΠ΄ΠΈΡΡ, ΡΠ°ΠΊ ΠΈ Π½Π° Π»ΡΠ±ΠΈΠΌΡΡ
ruby,python.
C# WPF, ΡΡΡ ΡΠΆ Π·Π° ΠΌΠ΅Π½Ρ Π²ΡΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡΡ.
ΠΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΈΠΌΡ ΠΎ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
Π ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π· web Π½Π΅Π»ΡΠ·Ρ Π²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ? ΠΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈ Π²Π΅Π·Π΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ))
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΡΠ»ΠΈ Π½Π΅Ρ ΠΆΠ΅ΡΡΠΊΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΏΡΠΎΠΈΠ²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎ Ρ Π±Ρ ΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» WPF (ΠΈΠ»ΠΈ Silverlight Π΅ΡΠ»ΠΈ Π³ΠΎΡΠΎΠ²Ρ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π΄ΠΈ ΠΌΠ°ΠΊΠΎΡΠΈ ΠΈ ΡΠ°Π±ΠΎΡΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ°).
C# Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΡΠ΄Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π΅Π΅ ΡΠ΅ΠΌ C++. Π₯ΠΎΡΡ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π ΠΈΡ ΡΠ΅ΡΠ° ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠΎΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΡΠ΅ ΠΊΡΡΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° C# ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ΄ΠΎΠ²ΠΈΡΠ½ΠΎ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ
ΠΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ ΡΡΠΎ-ΡΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈ ΠΏΡΠΎΡΠ΅ C# WinForms. ΠΡΠ»ΠΈ Π·Π°Π΄Π°ΡΠ° ΡΡΠΎΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Β«Π·Π΄Π΅ΡΡ ΠΈ ΡΠ΅ΠΉΡΠ°ΡΒ», ΡΠΎ, imho, Π½Π°Π΄ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΡΠ»ΠΈ ΡΡΠΈΡΡΡΡ Π½Π° ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Ρ Ρ ΡΠ΅Π»ΡΡ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠ΅ΠΌΡ-ΡΠΎ Π½ΠΎΠ²ΠΎΠΌΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΌΡ, Ρ Π±Ρ Π²ΡΠ±ΡΠ°Π» WPF. Π‘ΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π½Π°Π²Π΅ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Ρ ΠΎΡΠΎΡΠΈΠΉ Javascript UI toolkit ΠΈ Π΄Π΅Π»Π°ΡΡ Π²ΡΡ Π½Π° web-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ .
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
Π’ΠΎ C# ΠΏΠ»ΡΡ WPF.
Π Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΡ, ΠΏΠ»ΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ β ΡΠΎ ΠΠΈΡΠΎΠ½, Π»ΠΈΠ±ΠΎ Π ΡΠ±ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ)
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΠΎΠΈΡ Π·Π°Π΄Π°ΡΠ° Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΊΡ, ΠΈ ΠΏΡΠΈ ΡΡΠΎ Π²Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Ruby, ΡΠΎ Ρ Π±Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ IronRuby β ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π½Π°ΠΊΠΎΠΌΠΎΠΌ ΡΠΆΠ΅ Π²Π°ΠΌ ΡΠ·ΡΠΊΠ΅, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΌΠΎΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π½Π°ΡΠ°ΡΡ ΡΡΠΈΡΡ Java, C# ΠΈΠ»ΠΈ C++, Π½ΠΎ ΡΡΠΎ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΡΡΠ΄ΠΎΠ·Π°ΡΡΠ°ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ
ΠΠΎΠΉ Π²ΡΠ±ΠΎΡ: Nokia Qt. Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π²ΡΡΠΎΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΈ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΡΠΎΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ Π²Ρ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΠ΅ ΡΠΎΡ ΠΆΠ΅ Delphi ΠΊΠ°ΠΊ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠ°? ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΠ° Ρ Π½Π΅ Π½Π°ΡΠ΅Π» ΠΏΡΡΠΌΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΡ. ΠΠΎ ΠΏΠΎΠ΄ ΡΠ΅ΠΌ ΠΆΠ΅ Linux Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎΡ Π΄Π΅Π»ΡΡΠ΅Π²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ΄ Wine ΠΏΠΎΠΉΠ΄Π΅Ρ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΡΠ»ΠΈΠΊ Ρ Π²Π°Π»ΠΈΡ ΡΠ²ΠΎΠ΅ Π±ΠΎΠ»ΠΎΡΠΎ π
ΠΡΠ»ΠΈ Π½Π°Π΄ΠΎ Π±ΡΡΡΡΠΎ ΠΈ Ρ ΠΎΡΠΎΡΠΎ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ framework. Π’ΠΎΡΠΌΠΎΠ·ΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ΅, Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΠΊΠΎΡΠΌΠΈΡΡ Β«ΡΠ°Π½ΡΠΎΠΉΒ». Π Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ qt, Π΄ΡΠΌΠ°Ρ, Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ
Delphi?
Java (SWT)?
dotNet (Π»ΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΈΠ· ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π°, ΠΊΠ°ΠΊΠΎΠΉ Π±Π»ΠΈΠΆΠ΅)?
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ 2010, Π² 06:15″> Π±ΠΎΠ»Π΅Π΅ ΡΡΡΡ Π»Π΅Ρ Π½Π°Π·Π°Π΄
ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ: Π΅ΡΠ»ΠΈ ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π±ΡΡΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β Π½ΡΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅, Ρ.Π΅. ΠΠ΅Π»ΡΡΠΈ. ΠΡΠ»ΠΈ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ΅, ΡΠΎ ΠΠΈΡΠΎΠ½, Π΄ΡΠΌΠ°Ρ, Π±ΡΠ΄Π΅Ρ Π²ΠΏΠΎΠ»Π½Π΅ Ρ ΠΎΡΠΎΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ, Ρ.ΠΊ. Π½Π° Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²ΡΠ°Ρ, Ρ.Π΅. ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ΅Π½Π½ΡΠΉ ΠΎΠΏΡΡ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π»Π΅ΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ: ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π΄ΡΡΠ΅Π²ΠΎ ΠΈ ΡΠ΅ΡΠ΄ΠΈΡΠΎ, ΡΠΎ
ΠΠΈΡΠ°ΡΡ ΡΡΠΎΠΈΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π·Π½Π°Π΅ΡΡ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΈΠ»ΠΈ ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠΈΡΡ. ΠΠ»Ρ Π²ΠΈΠ½Π΄Ρ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΠΎΡΠΈΡΠΎΠΌ β MS Access β Π²ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΊ SQL ΡΠ΅ΡΠ²Π΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΊ ΡΠ°ΠΉΠ»-ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Access Runtime β Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΠΊΡΠ΅ΡΠ°.
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π΄ΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ, ΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ°ΡΠ΅ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π° ΡΠ°ΠΉΡΠ°Ρ ΡΡΠΈΠ»Π°Π½ΡΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π±ΠΎΡΡ.
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠ΅ ΠΎΡΠ΅Π½Ρ Π΄Π°Π²Π½ΠΎ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π» ΠΠ° ΡΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΊΡ?
ΠΡΠ²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½
ΠΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ GUI / Π₯Π°Π±Ρ
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ Π₯Π°Π»ΠΈΡΠΎΠ² ΠΠΈΡΠΈΠ»Π», Ρ Π°ΡΠΏΠΈΡΠ°Π½Ρ ΠΈΠ· ΠΠΠ£ΠΠ’ (ΠΠΎΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (ΠΠΠ£ΠΠ’) ). Π ΠΌΠΎΠ΅ΠΉ Π΄ΠΈΡΡΠ΅ΡΡΠ°ΡΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π·Π°Π΄Π°ΡΠ° ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠ°Π±ΠΆ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π»ΡΠ±Π°Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ (ΠΠ) Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π·Π°ΠΏΡΡΠΊ ΡΡΠΎΠ³ΠΎ ΠΠ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (ΠΠ‘), Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ²ΠΎΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² ΠΠ‘ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microsoft. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΡΡ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π½Π° ΡΠ°Π·Π½ΡΡ ΠΠ‘, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΠ‘.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΠ²ΡΠ·ΠΈ Ρ Π±ΡΡΠ½ΡΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ ΡΡΠ°Π»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ). ΠΠ±ΡΡΠ½ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ ΠΊ ΠΌΠ΅ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Ρ ΠΈΠ· Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΌΠΈΡΠ°, Π³Π΄Π΅ Π΅ΡΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ C++, ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ, Π΄Π»Ρ ΠΠ‘ Microsoft Windows (MS Windows) ΠΈ ΠΠ‘ Linux. ΠΠ»Π°Π²Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ Π΄Π»Ρ MS Windows ΡΠ²Π»ΡΠ΅ΡΡΡ MS Visual Studio [1]. ΠΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (IDE) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΠ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ²Π»ΡΡΡΡΡ C++ ΠΈ C#. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° β Windows Forms (WinForms) ΠΈ Windows Presentation Foundation (WPF). ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ MS Windows ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ WinForms, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΠ‘ (MS Windows 7, 8), ΡΠΈΡΡΠ΅ΠΌΠ° WPF ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ MS Visual Studio ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ·ΡΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ HTML5 Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², Π±Π»ΠΈΠ·ΠΊΠΈΡ ΠΏΠΎ ΡΡΠΈΠ»Ρ ΠΊ Π½Π°ΡΠΈΠ²Π½ΡΠΌ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MS Visual Studio ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ»Π°ΡΠ½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MS Windows, ΡΡΠΎ Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ Π΄Π»Ρ Π½ΠΈΠ·ΠΊΠΎΠ±ΡΠ΄ΠΆΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ±ΡΠ΄ΠΆΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , ΡΠΎ ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΠ‘ Linux. ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² ΡΡΠΎΠΉ ΠΠ‘ ΡΠ²Π»ΡΡΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΌΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΠ΄ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΠ Π΄Π»Ρ ΠΠ‘ Linux. Π‘Π°ΠΌΡΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘++ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Qt [2]. ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ, ΡΡΠΎ Qt ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΠ‘ Linux, Π½ΠΎ ΠΈ Π΄Π»Ρ MS Windows, Mac OS X, Android ΠΈ Π΄ΡΡΠ³ΠΈΡ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΠ‘. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Qt ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΊΠ°ΠΊ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊ ΠΈ ΠΏΠ»Π°ΡΠ½ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ. ΠΠΎ ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ MS Visual Studio, ΡΠΎ Π² Qt ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ IDE Qt Creator. ΠΠ΄Π΅ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ WinForms ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ (Qt Widgets), Π° Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π΄Π»Ρ WPF β Qt Quick. Π’Π°ΠΊΠΆΠ΅ Π² Qt Creator ΠΈΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ HTML5. ΠΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ Π²Π΅Π±-Π΄Π²ΠΈΠΆΠΎΠΊ WebKit, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅ΠΆΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ². ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΈ Π² MS Visual Studio, Π½ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΠΈ ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ Π½ΠΈΠ·ΠΊΠΎΠ±ΡΠ΄ΠΆΠ΅ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠ΅Π±-Π΄Π²ΠΈΠΆΠΎΠΊ β ΡΡΠΎ ΡΠ΄ΡΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΠΎΠ½ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. ΠΠΎΠ΄ΡΠ»Ρ Qt WebKit ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π»Π΅ΠΆΠΈΡ ΡΡΡΠΎΡΠ²ΡΠΈΠΉΡΡ ΡΡΠ΅ΠΊ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ·ΡΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ HTML (HTML 4, 5), ΠΊΠ°ΡΠΊΠ°Π΄Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΠΈΠ»Π΅ΠΉ (CSS 2, 3) ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²ΡΠΉ ΡΠ·ΡΠΊ JavaScript Ρ Π±ΠΎΠ³Π°ΡΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (ΠΊΠ°ΡΠΊΠ°ΡΠΎΠ²). ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΊΠ°ΡΠΊΠ°ΡΠΎΠ² Π΄Π»Ρ ΡΠ·ΡΠΊΠ° JavaScript ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΡ, Π° ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ, Π½Π°ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠΉ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ GUI Π»Π΅ΠΆΠΈΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ, Π½ΠΎ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄.
Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±: Qt WebKit + Qt-ΠΊΠΎΡΡΡΠ»ΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ GUI Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Qt WebKit Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π°ΠΊΡΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΡΠΊΠΎΠΉ Π΄ΠΈΡΡΠ΅ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ [3]. ΠΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π°ΠΊΡΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°, Π²ΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ°ΡΡΠΈ. ΠΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅Π½ΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π°ΠΊΡΡΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ², Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-Π»ΠΈΠ±ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ (UART, IEEE 802.X ΠΈ Π΄Ρ.) Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ (ΠΠ). ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΊΠ°ΠΊ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΠ (ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΠ), ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ (ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΠ).
Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ
Π ΠΈΡ. 1. Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ GUI
Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Qt. ΠΠ΄Π΅ΡΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΡΠ½Π½ΠΎΠΉ Π½Π° ΡΠΈΡ.1 ΠΊΠ°ΠΊ ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π°Π½Π½ΡΡ , ΠΈ GUI-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ GUI Π½Π° ΡΠ·ΡΠΊΠ΅ JavaScript Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ Qt-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π·Π° GUI, Π½ΡΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠ΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ PHP-ΡΠΊΡΠΈΠΏΡΠ° Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (AJAX ΠΈΠ»ΠΈ WebSocket). ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: Qt WebKit + WebSocket
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ Π²ΡΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ WebSocket. Π‘ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ GUI, ΠΊΠ°ΠΊ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅, ΡΠ°ΠΊ ΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ JavaScript ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΡΡΠΎΡΠΎΠ½ GUI.
Π ΠΈΡ. 2. ΠΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ GUI
ΠΠ° ΡΠΈΡ. 2. Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ WebSocket. Π’ΠΎ Π΅ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ JavaScript ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Qt, Π½Π° Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΌ Π΄Π»Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ·ΡΠΊΠ΅ C++. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π΄Π»Ρ ΡΠ·ΠΊΠΎΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠΎ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΏΠΎ ΡΠΌΡΡΠ»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΠ°ΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ, ΡΡΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ WebSocket Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Qt.
Π ΠΈΡ. 3. ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ (ΡΠΏΡΠ°Π²Π°) ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ΅ (ΡΠ»Π΅Π²Π°) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π½Π° ΠΠ‘ Ubuntu 14. 04
ΠΠ° ΡΠΈΡ. 3 ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ GUI Π΄Π»Ρ ΠΠ‘ Ubuntu 14.04. ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠ°ΠΊ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΠ‘, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΠ‘ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
1. Qt Documentation [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: qt-project.org/doc
2. Visual Studio Library [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: msdn.microsoft.com/en-us/library/vstudio
3. ΠΠΎΠ»ΠΎΠ΄ΡΠ΅ ΡΡΡΠ½ΡΠ΅ β ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠ»ΡΠ½ΠΎ-ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° (ΠΠΠΠ‘Π β 2014): ΡΠ±ΠΎΡΠ½ΠΈΠΊ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ²ΡΠ·ΠΎΠ²ΡΠΊΠΎΠΉ Π½Π°ΡΡΠ½ΠΎ-ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π°ΡΠΏΠΈΡΠ°Π½ΡΠΎΠ² ΠΈ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² Ρ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΡΠΌ ΡΡΠ°ΡΡΠΈΠ΅ΠΌ. Π§. 2. β ΠΠ²Π°Π½ΠΎΠ²ΠΎ: ΠΠ²Π°Π½ΠΎΠ². Π³ΠΎΡ. ΠΏΠΎΠ»ΠΈΡΠ΅Ρ
Π½. Π£Π½-Ρ, 2014. β Π‘. 25 [ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ]. Π Π΅ΠΆΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ°: ti.ivgpu.com/poisk/file/part_2.pdf
P.S. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π±ΡΠΎΡΠ°Π΅ΡΡΡ Π² Π³Π»Π°Π·Π° β ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠΈΡΡΡ, Π½ΠΎ ΠΌΠ½Π΅, ΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΠΎΠ³Π΄Π° Π±ΡΠ»ΠΎ Π½Π΅ Π΄ΠΎ Π½ΠΈΡ .
P.P.S. ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π·Π°ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±, ΡΡΠΎΠ±Ρ Π½Π° Π·Π°ΡΠΈΡΠ΅ Π±ΡΠ»ΠΎ ΡΠ΅ΠΌ ΠΊΠΎΠ·ΡΡΠ½ΡΡΡ ΠΊΡΠΎΠΌΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²Π° ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΠ?
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux Ρ ΠΏΠΎΠΌΠΎΡΡΡ WSL
- Π‘ΡΠ°ΡΡΡ
- Π§ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 3Β ΠΌΠΈΠ½
ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Windows Π΄Π»Ρ Linux (WSL) ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux (X11 ΠΈ Wayland) Π² Windows Π² ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°.
WSL 2 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Windows.
- ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux ΠΈΠ· ΠΌΠ΅Π½Ρ «ΠΡΡΠΊ» Windows
- ΠΠ°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ Windows
- ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Linux ΠΈ Windows Ρ ΠΏΠΎΠΌΠΎΡΡΡ alt-tab
- ΠΡΡΠ΅Π·Π°ΡΡ ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Windows ΠΈ Linux
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Windows ΠΈ Linux Π² ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Windows 11 ΡΠ±ΠΎΡΠΊΠ΅ 22000 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄Π»Ρ VGPU
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½ΠΈΠΆΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ GPU (vGPU), ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ OpenGL.
- Intel ΠΡΠ°ΠΉΠ²Π΅Ρ GPU Π΄Π»Ρ WSL
- AMD ΠΡΠ°ΠΉΠ²Π΅Ρ GPU Π΄Π»Ρ WSL
- NVIDIA ΠΡΠ°ΠΉΠ²Π΅Ρ GPU Π΄Π»Ρ WSL
ΠΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° β Π½Π΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ WSL
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Windows Π΄Π»Ρ Linux (WSL), Π²Π²Π΅Π΄Ρ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² PowerShell ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Windows, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
wsl --install
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ, ΠΈ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΡΠΎ Π±ΡΠ΄ΡΡ Π²Π°ΡΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Linux Π΄Π»Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Ubuntu.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux Π² WSL!
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΡΠ°ΡΡΠ΅ ΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ WSL.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° WSL
ΠΡΠ»ΠΈ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ WSL, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ.
ΠΡΠ±Π΅ΡΠΈΡΠ΅ «ΠΡΡΠΊ», Π²Π²Π΅Π΄ΠΈΡΠ΅ PowerShell, ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Windows PowerShell ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ «ΠΠ°ΠΏΡΡΠΊ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°«.
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ WSL:
wsl --update
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠΏΠΈΠ»ΠΎ Π² ΡΠΈΠ»Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ WSL. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ WSL, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π² PowerShell.
wsl --shutdown
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ WSL 2 ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ Linux, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Π΄Π»Ρ WSL 1. Π£Π·Π½Π°ΠΉΡΠ΅ , ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ WSL 1 Π½Π° WSL 2.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Linux
Π§ΡΠΎΠ±Ρ ΡΠΊΠ°ΡΠ°ΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Linux. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ², ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ Ubuntu, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ apt. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΠΌΠ΅Π½Ρ «ΠΡΡΠΊ » ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: Ubuntu -> Microsoft Edge
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² WSL Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Windows, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅Π΄ΡΡΠ² ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ WSLg Π½Π° GitHub.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅
sudo apt update
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Gedit
Gedit β ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Π΅ JSON.
sudo apt install gedit -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» bashrc Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, Π²Π²Π΅Π΄ΠΈΡΠ΅: gedit ~/.bashrc
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° GIMP
GIMP β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈ ΡΠ°ΡΡΡΠΎΠ²ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ.
sudo apt install gimp -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅: gimp
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Nautilus
Nautilus, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ Π€ΠΠΠΠ« GNOME, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° GPU. (ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Windows ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊ).
sudo apt install nautilus -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅: nautilus
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° VLC
VLC β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΈ ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠΎΠ΄ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΠΉ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
sudo apt install vlc -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅: vlc
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ X11
X11 β ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΊΠΎΠ½ Linux, ΠΈ ΡΡΠΎ ΡΠ°Π·Π½ΠΎΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ Π½ΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ xclock, xcalc calculator, xclipboard Π΄Π»Ρ Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ ΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ, xev Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ Ρ. Π΄. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² x.org Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ .
sudo apt install x11-apps -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠΈΠΌΠ΅Ρ:
xcalc
,xclock
,xeyes
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Google Chrome Π΄Π»Ρ Linux
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Google Chrome Π΄Π»Ρ Linux, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π² ΠΏΠ°ΠΏΠΊΡ temp:
cd /tmp
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ wget Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ:
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- ΠΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ:
sudo dpkg -i google-chrome-stable_current_amd64.deb
- ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°:
sudo apt install --fix-broken -y
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ:
sudo dpkg -i google-chrome-stable_current_amd64.deb
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅: google-chrome
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Microsoft Teams Π΄Π»Ρ Linux
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Microsoft Teams Π΄Π»Ρ Linux, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π² ΠΏΠ°ΠΏΠΊΡ temp:
cd /tmp
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ curl Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ°:
sudo curl -L -o ". /teams.deb" "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb"
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ apt Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
sudo apt install ./teams.deb -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅: teams
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΡΠ°ΡΠ·Π΅ΡΠ° Microsoft Edge Π΄Π»Ρ Linux
Π‘Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ° Microsoft Edge Π΄Π»Ρ Linux Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ Edge. ΠΡΠ±Π΅ΡΠΈΡΠ΅ » ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ» Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅.
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ, Π²Π²Π΅Π΄ΠΈΡΠ΅: microsoft-edge
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ: Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠΈΠΏΠΎΠΌ «Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅» Ρ WSLg
Β |
Π ΡΠ΅ΠΌ Qt Π½Π΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ? ΠΠΎ-ΠΌΠΎΠ΅ΠΌΡ, ΠΎΠ½ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½.
Π― ΡΠ°Π±ΠΎΡΠ°Π» Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Ρ Π±ΠΈΠ½Π΄ΠΈΠ½Π³Π°ΠΌΠΈ ΠΊ ΠΠΈΡΠΎΠ½Ρ. ΠΠΠ₯Π. ΠΠ΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΈ Π³Π»ΡΡΠ½Π°Ρ Ρ ΡΠ΅Π½Ρ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π»ΡΠ΄ΠΈ ΠΏΠΈΡΡΡ Π½Π° ΡΠΈΠ³Π½Π°Π»Π°Ρ , Π° Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΡΡ . ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³ΡΠ°Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ² — ΡΠΈΠ³Π½Ρ. ΠΡΠ»Π°Π΄ΠΊΠ° ? ΠΠ°ΠΊΠ°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ°. QVariant, Π±Π»ΠΈΠ½, Π½Π΅Π½Π°Π²ΠΈΠΆΡ. ΠΠ½Π΄Π΅ΠΊΡΡ Π² ΠΌΠΎΠ΄Π΅Π»ΡΡ — Ρ Π½Π΅ Π·Π½Π°Ρ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½Π΅Ρ ΠΈΡ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π». ΠΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π΅Ρ Π½ΠΈ Π½Π° Π»ΠΈΠ½ΡΠΊΡΠ΅ Π½ΠΈ Π½Π° Π²ΠΈΠ½Π΄Π΅. ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠΏΠΈΡΠ΅Π½. ΠΡ Ρ.Π΅. Π΄Π° Ρ Π½ΡΠ»Ρ ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠ»ΡΡΠ΅. ΠΠΎ Π³Π΅ΠΌΠΌΠΎΡΠΎΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Ρ Π²Π°ΡΠ°Π΅Ρ. ΠΠ΅Π± Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊΡΠ΄Π° ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠΌΠ½Π΅Π΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅.
debugging sucks testing rocks, Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠΈΠ»ΡΠ½ΠΎ Π½Π°Π΄ΠΎ ΡΠΎ Π² Ρ ΡΠΎΠΌΠ΅ Π²ΡΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π½ΠΎΡΠΌ Ρ Π΄Π΅Π±Π°Π³Π³ΠΈΠ½Π³ΠΎΠΌ.
Π£ΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΏΡΠΈΡΠ΅Π» Ρ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ Π²Π΅ΡΡ Π³ΡΠΉ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°ΡΡ Π½Π° Π²Π΅Π±Π΅ (html, js), Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π½Π° Π±Π°ΠΊΠ΅Π½Π΄Π΅. Π Π΄Π°ΠΆΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π½Π° ΡΡΠΈ Π΄Π²Π° ΠΊΡΡΠΎΡΠΊΠ°. ΠΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΠΎ Ρ ΡΠ²ΠΈΠ΄Π΅Π» Π² Π³ΡΠ³Π»ΠΎΠ²ΡΠΊΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΠΈΡΠΊΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π²ΡΠΊΠ°ΡΠ΅Π½ ΡΡΠ°ΠΊ Π»Π΅Ρ 10 Π½Π°Π·Π°Π΄, ΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ Π·Π°Π±ΡΡ. Π’Π°ΠΊ Ρ ΡΠ΅Ρ ΠΏΠΎΡ ΡΠ°ΠΌ ΠΈ Π΄Π΅Π»Π°Ρ.
ΠΠ½Π°ΠΊΠΎΠΌΠ°Ρ Π΄ΠΈΠ»Π΅ΠΌΠΌΠ°. Π― ΡΠ°ΠΊ Π² 2000-ΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π» Π³ΡΠΉ Π½Π° HTML Π² ΠΠ‘. Π‘Π΅ΠΉΡΠ°Ρ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎ Π±Π°Π½Π΄Π»ΠΈΡΡ Π₯ΡΠΎΠΌΠΈΡΠΌ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΡΠ»Ρ Π±ΡΠ»ΠΈ.
Π‘ UI/UX Π±Π΅Π΄Π°, Π½ΠΈΠΊΡΠΎ Π΅Π³ΠΎ Π½Π΅ ΡΠΌΠ΅Π» ΠΈ Π½Π΅ ΡΠΌΠ΅Π΅Ρ Π΄Π΅Π»Π°ΡΡ. Π Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΈΠΊΠ°Ρ Π²ΠΎΠΎΠ±ΡΠ΅ Π°Ρ ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΠ§ΠΠΠ Π₯ΠΠ ΠΠ¨ΠΠΠ ΠΠΠ’ ΠΠ£ ΠΠΠΠΠ©Π. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΌΡΡΠΈΡΡ ΡΡΠΎ-ΡΠΎ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ΅, ΠΈΠ³ΡΡ ΡΠ°ΠΌ ΡΡΡΡΠΏΡΡΡ. .. ΠΠ°Π²Π½ΡΠΌ-Π΄Π°Π²Π½ΠΎ, Π² Π³ΠΎΠ΄Ρ Π³Π΄Π΅-ΡΠΎ 2000-ΠΎΠΌ Π±ΡΠ» Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΠ½ Π²Π΅Π±-ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π½Π° PHP. ΠΠ°ΠΊΠ°Π·ΡΠΈΠΊΡ ΡΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»Π°ΡΡ ΠΎΡΡΠ»Π°ΠΉΠ½ Π²Π΅ΡΡΠΈΡ, ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π° CD, Π΄Π»Ρ ΠΏΠΎΠ½ΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΉ. Π‘Π²Π°ΡΠ» Π·Π° Π½Π΅Π΄Π΅Π»Ρ Π½Π° Delphi, Π²Π΅ΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ HTML-Π½ΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΡΡ ΡΠ΅ΡΠ΅Π· Ρ ΠΈΡΡΠΎΠ²ΡΠ΅Π±@Π½ΡΠΉ ActiveX Π² ΠΎΠΊΠ½Π΅ IE4. MySQL Π±Π°Π·Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ½ΡΠ»ΠΈ Π² .dbf-ΠΊΠΈ, ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΌΠ°ΠΊΠ°ΡΠΎΠΌ Π΄Π°ΠΆΠ΅ SQL Π·Π°ΠΏΡΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅ Π²Π΅ΡΡ ΡΡΠΎΡ Π³Π»ΡΠΊΠΎΠ΄ΡΠΎΠΌ Π΄Π°ΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π», ΠΏΡΠΈΡΠ΅ΠΌ Ρ ΡΡΠ΄ΡΠΊΠ°.
ΠΠ΅Π»Π°ΡΡ ΠΊΠ°ΠΊ HTML5 + js, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ http://electron.atom.io/ ΠΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π³ΡΡ β ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Π½Π΅ Π·Π½Π°Ρ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠ²ΠΎΠΈΡ ΡΠΊΠΈΠ»Π»ΠΎΠ²/ΠΏΡΠΈΡΡΡΠ°ΡΡΠΈΠΉ.
ΠΠ°, Ρ ΠΏΡΠΎ ΠΠ»Π΅ΠΊΡΡΠΎΠ½ ΡΠΈΡΠ°Π» Π½Π° Π₯Π°Π±ΡΠ΅, Π΅Π³ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π»ΠΈ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° NW.js (node-webkit) https://habrahabr.ru/post/304574/, ΠΏΠ»ΡΡΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅ Π½Π°Π±ΡΠ°Π» ΠΠ»Π΅ΠΊΡΡΠΎΠ½. ΠΠΎΠΆΠ½ΠΎ Π΅ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ½Ρ Π½Π° ΡΠ΅ΠΌΡ «Π²ΡΠ³Π»ΡΠ΄ΡΡΠ΅Π³ΠΎ Π½Π°ΡΠΈΠ²Π½ΠΎ» (ΡΠΎ Π΅ΡΡΡ Π±Π΅Π· HTML, JS ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ½ΠΎ-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ ΠΌΠ°ΡΠΊΠ°ΠΏΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΠΌ iOS / Android / Windows Universal, ΡΠΎ Π΅ΡΡΡ Windows 10): Π·Π°Π±ΠΈΡΡ Π½Π° «Π΄Π΅ΡΠΊΡΠΎΠΏΠΎΠ²ΠΎΡΡΡ» ΠΈ Π²Π·ΡΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ React Native ΠΈΠ»ΠΈ NativeScript. ΠΠΎΠ΄ Windows 10 Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Windows Store ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π― ΡΠ΅ΠΉΡΠ°Ρ ΡΠΌΠΎΡΡΡ Π½Π° React Native, Ρ Π½Π΅Π³ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Windows. ΠΠ° NativeScript Ρ Π΄ΡΠΌΠ°Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ», ΡΡΠΎ Ρ Windows 10 ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΡΠΎΠΆΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ. ΠΠΈΠΌΠ°, Π΅ΡΠ»ΠΈ ΡΡ ΡΡΠΎ ΡΠΈΡΠ°Π΅ΡΡ — ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ΄Π΅ΠΈ JS-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠΌΠ΅ΠΉ ΡΠ°ΠΊ ΠΆΠ΅ Π² Π²ΠΈΠ΄Ρ Xamarin (ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ Π‘#), ΠΎΠ½ Π½ΡΠ½ΡΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ extension ΠΊ Visual Studio 2015. Unity — ΡΠΎΠΆΠ΅ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ C#, Π½ΠΎ ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ (ΠΈ Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ ΡΠ°ΠΌ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΠ², ΡΡΠΎ ΠΈΠ³ΡΠΎΠ²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ). ΠΡΠ»ΠΈ Π²ΡΡ-ΡΠ°ΠΊΠΈ Π²ΡΠ±Π΅ΡΠ΅ΡΡ JS… Π― Π»ΠΈΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π° JS, Π±ΡΠ΄Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TypeScript. Π£ NativeScript ΠΎΠ½ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠΈΠΊΡΡΡΠ΅Π½, Π½ΠΎ, ΠΏΠΎ ΠΈΠ΄Π΅Π΅, ΠΏΡΠΈΠΊΡΡΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ Π² JS. ΠΠΎΡΡΠ΅ΠΊΡΠΈΡ: Ρ ΠΏΠΈΡΠ°Π» Π²ΡΡΠ΅ «Windows 10» ΠΊΠ°ΠΊ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ «Universal Windows», ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠΎΠΈΡΡ «Universal Windows» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Windows Store ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π² Windows 8.1. ΠΡΠΎ ΠΌΠ΅Π»ΠΎΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Windows-ΡΠ΅Π»Π΅ΡΠΎΠ½Π°ΠΌΠΈ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ (ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΠ½ΠΈ ΡΠΌΡΡΡ, Π½ΠΎ Π΅ΡΡ Π½Π΅ ΡΠΌΠ΅ΡΠ»ΠΈ). ΠΠ°, Π²ΠΎΡ ΡΡΡ https://www.nativescript.org/blog/nativescript-and-xamarin Π°Π²ΡΠΎΡΡ / Ρ ΠΎΠ·ΡΠ΅Π²Π° NativeScript ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ Xamarin. Edited at 2016-07-29 02:45 am (UTC)
ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π»ΠΈΠ½ΠΊΠΈ, ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ!
ΠΡΠΎ Π²ΠΏΡΠΈΠ³Π»ΡΠ΄ΠΊΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ — Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΈ ΠΏΠΎΡΠΎΠ±ΠΈΡΠ°Π» Π² ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ React Native Π΄Π»Ρ Windows Store Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΊΠ°. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΡ UI Π»ΠΎΠ³ΠΈΠΊΡ Π½Π° JS ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΈΠΏΠ° Π±ΡΡΡΡΡΠΉ REPL (Π½Ρ ΡΡ ΡΠ°ΠΌ ΠΏΡΠΎ ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π» Π²ΡΡΠ΅ ΠΏΠΎ ΠΎΠΏΡΡΡ 16-Π»Π΅ΡΠ½Π΅ΠΉ Π΄Π°Π²Π½ΠΎΡΡΠΈ), Π½ΠΎ Ρ ΡΡΠΎΡ ΡΠ·ΡΠΊ ΡΠ°ΠΊ ΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΠ±ΠΈΠ», Ρ ΠΎΡΡ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π° Π½ΡΠΌ ΠΏΠΈΡΠ°Π». ΠΠ½, ΠΏΡΠ°Π²Π΄Π°, ΡΠ»ΡΡΡΠ°Π΅ΡΡΡ, ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π² IDE ΡΠ»ΡΡΡΠ°Π΅ΡΡΡ ΡΠΎΠΆΠ΅. ΠΡΠ»ΠΈ ΡΡ ΡΡΠΎ-ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π½Π°ΠΉΠ΄ΡΡΡ, Π΄Π°ΠΉ Π·Π½Π°ΡΡ! Π ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ «Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅» Π²Π΅ΡΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ.
ΠΠ°ΡΡΡΡ TS/NS β ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡ, Π²Ρ Π·ΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°Π΅ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°ΠΌΠΈ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ. TS Π² ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π΄Π΅Π»Π°Π΅ΠΌΡΡ Π² ΠΎΠ΄Π½ΠΎ Π»ΠΈΡΠΎ β ΠΏΡΠΎΡΡΠΎ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ»ΠΎΠΉ. Β«Π Π³Π°ΠΌΠ°ΠΊΠ΅ ΠΈ ΡΠΊΠ°ΡΠ°Π½Π΄ΡΠ΅Β», Π΄Π°. ΠΠ°ΡΡΡΡ NS β ΡΠ°ΠΌ Π²ΡΡ Π³ΡΡΡΡΠ½ΠΎ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ Π³ΡΡΠ²ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π°ΠΌΠΈ. Π₯ΠΎΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ» Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠΈΠΊΠΎΠΌ? ΠΠ·Π²ΠΎΠ»ΡΡΠ΅ Π·Π°ΠΏΠ»Π°ΡΠΈΡΡ $199. ΠΠ°ΡΠΈΠ½Π°ΡΡ Ρ Π½ΠΈΡ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΡΡΓ³ΠΈΡ.
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π΅Π΅ ΠΏΡΠΎ ΠΌΠΎΠΉ ΠΎΠΏΡΡ Ρ TS Π²Π΅ΡΡΡΡ JS. Π― ΠΏΠΈΡΠ°Π» ΡΡΠΈ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄ Π½Π° JS Π² Visual Studio Π°ΠΏΠΏ Π΄Π»Ρ Windows Store ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΏΡΡΡ ΠΈ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π» ΡΠ΅Π±Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ, ΡΠΎΠ±ΠΈΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π½Π° TS, Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ ΡΠ°Π½ΡΡΠ΅. ΠΠΎΠ΄Π° Π΄Π²Π° Π½Π°Π·Π°Π΄ ΠΏΠΎΠΌΠΎΠ³Π°Π» ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΡ Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΊΠΎΠΌ ΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π» ΡΠ΅Π±Ρ Π»Π΅Π³ΡΠ΅ Ρ TS. Π‘ ΡΠ΅Ρ ΠΏΠΎΡ JS ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ, ΠΈ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊ JS, Π½ΠΎ ΠΌΠ½Π΅ Π»ΠΈΡΠ½ΠΎ ΡΡΠΎΡ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ»ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Visual Studio Π±ΡΠ» Π½ΡΠΆΠ΅Π½. ΠΡΠ°Π²Π΄Π°, Ρ ΡΠ΅ΠΉΡΠ°Ρ Π½Π° C++ ΠΏΠΈΡΡ, ΠΌΠΎΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΌΠ΅ΡΡΠ½ΠΎ ΠΈ Π½Π΅ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ. Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΠΠ»Π΅ΠΊΡΡΠΎΠ½, Π²Ρ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ / ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ?
> Π½ΠΎ ΠΌΠ½Π΅ Π»ΠΈΡΠ½ΠΎ ΡΡΠΎΡ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ»ΠΎΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Visual Studio Π±ΡΠ» Π½ΡΠΆΠ΅Π½ Π ΠΈΡΠΊΠ½Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π΄Π΅Π»ΠΎ Π½Π΅ Π² VS, Π° Π² ΠΏΡΠΈΠ²ΡΡΠΊΠ΅ ΠΏΠΈΡΠ°ΡΡ Π² ΠΠΠ-ΡΡΠΈΠ»Π΅. ΠΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΌΠΈΡΠ΅ JS ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ (Π·Π° ΡΠ΅Π΄ΠΊΠΈΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ) Π²ΡΡ ΡΠ°ΠΊΠΈ Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ². Π‘ΠΊΡΠΎΠΌΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ TS, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ΅ΡΡΡ ΠΌΠΎΡΡ Π²Π΅Π½Π΄ΠΎΡΠ° β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ (Ρ ΠΎΡΡ ΠΈ Π½Π΅Π±Π΅ΡΡΠΏΠΎΡΠ½ΡΠΉ) Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΡΠ·Π½ΠΎ ΠΎΠ±Π΅ΡΡΠ΅Π½ΠΈΠ²Π°ΡΡ ΠΠΠ-ΡΠ½ΡΠ΅ ΠΏΠ»ΡΡΠΊΠΈ. > Π Π°ΡΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΠΠ»Π΅ΠΊΡΡΠΎΠ½, Π²Ρ Ρ Π½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π’ΡΡ Π½Π°Π΄ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ nw.js ΠΈ ΠΠ»Π΅ΠΊΡΡΠΎΠ½, ΠΏΠΎ-Ρ ΠΎΡΠΎΡΠ΅ΠΌΡ ΡΠΎ, ΠΈ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΠΏΠΎΡΠΎΠ²Π΅ΡΠΎΠ²Π°Π» ΠΠ»Π΅ΠΊΡΡΠΎΠ½. ΠΡ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΠ΅/ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π·Π°ΠΊΠ°Π·, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΎΠΌ Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΄ΡΠΌΡΠΈΠ²ΠΎ Π±Π°Π»ΠΎΠ²Π°Π»ΡΡ. Π‘ nw.js Π²ΡΡ ΡΡΡΡ ΡΠ΅ΡΡΡΠ·Π½Π΅Π΅, Π΅Π³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² Π±ΠΎΠ΅Π²ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ , Π½ΠΎ Π½Π΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΡΠΊΡ Π΄Π»Ρ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΠ½Π΄ΡΠ»ΠΎΠ½-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’ΠΎ-Π΅ΡΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Ρ Π½ΠΈΠΌ Π΄Π΅Π»Π°Π», Π½ΠΎ ΡΠΎΠΆΠ΅ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²Π΄ΡΠΌΡΠΈΠ²ΠΎΠ³ΠΎ Β«ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡΒ». Π ΡΠΈΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΏΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Ρ Π³ΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΠΌ, Ρ ΡΠ΅Π³ΠΎ Π΅ΡΡΡ Π³ΡΠΉ ΠΈ ΠΎΠ½ Π²Π°ΠΆΠ΅Π½, Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ ΠΊΠΎΠ΄ ΡΠ»ΠΎΠΆΠ½ΡΡ Π³ΡΡΠ²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΎΠΊ. Π‘ ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠ΄Π° ΠΈΠ· ΡΠΎΡΠΊΠΈ Β«Π²ΠΎΡ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ html+js+css, ΡΠ΄Π΅Π»Π°ΠΉ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» ΡΡΡΡ Π²ΡΡΠ΅, ΡΠ΅ΠΌ Ρ nw.js. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠ³Π° Π΄Π°Π»ΡΡΠ΅ ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅. ΠΡΠ»Π°Π΄ΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΡ ΠΈΠ· ΡΠ°ΠΊΠΎΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΊΠΎΠΌΡΠΎΡΡΠ½Π°Ρ Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ . ΠΠΈΠΌΠ°, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ΄Π΅Ρ Π² ΡΡΠΎ Π²ΡΡ ΠΏΠΎΠ³ΡΡΠΆΠ°ΡΡΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ. Π§ΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Β«Π²ΠΎΡ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΌΠ½Π΅ ΠΊ Π½Π΅ΠΉ Π½ΡΠΆΠ΅Π½ Π³ΡΠΉΒ» β ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΡΠΎ ΡΡΠΎ ΠΏΠΈΡΠ΅Ρ. Π‘ ΡΠ°ΠΊΠΈΠΌΠΈ Π²Π²ΠΎΠ΄Π½ΡΠΌΠΈ ΠΈ ΠΏΠΎΡΠΎΠ³ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΠ»Π΅ΠΊΡΡΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΆΠ΅, ΡΠ΅ΠΌ Π² Π½ΠΎΠ΄-Π²Π΅Π±ΠΊΠΈΡ, ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΌΓ©Π½ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ overall.
ΠΠ°, ΡΡΠΎ Π±ΡΠ» ΠΠΠ-ΡΡΠΈΠ»Ρ — Π²ΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π° Π΄ΠΈΠΊΡΠΎΠ²Π°Π»ΠΈ; Π²ΠΎ-Π²ΡΠΎΡΡΡ , Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΎΠΏΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΡΡΠΈΠ»Π΅. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΎ ΠΠ»Π΅ΠΊΡΡΠΎΠ½ / nw.js! ΠΠΎΠΏΡΠΎΠ±ΡΡ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ΠΌΡ / ΡΠΈΠ»Ρ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ Ρ ΠΠ»Π΅ΠΊΡΡΠΎΠ½ΠΎΠΌ.
Π ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ — Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈΠΊΠ»Π΅ΠΈΡΡ Π²ΠΌΠ΅ΡΡΠΎ html-ΡΠ΅Π½Π΄Π΅ΡΠ° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΉ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π»ΡΡΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ (ΡΡΠΎ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π°ΠΆΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ).
ΠΡΠ° ΠΈΠ΄Π΅Ρ ΠΌΡΠ³ΠΊΠΎ Π³ΠΎΠ²ΠΎΡΡ Π½Π΅ Π½ΠΎΠ²Π°. Π― ΡΠ΅ΠΉΡΠ°Ρ Π»ΠΎΠ±Π±ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ PyQt4 Π½Π° embedded Chrome + react.js + HTML https://github.com/cztomczak/cefpython Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎ ΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²Π΅Π±Π°. ΠΠ΅Π±ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· javascript Π½Π°ΡΠΈΠ²Π½ΠΎ. IDE ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΡΡ Π²ΡΠ΅ ΡΡΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ GUI Π½Π΅ ΠΏΠΎΠ΄ javascript. | Β | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ 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Β»
Π―Π·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠΎΠΏΡΠΎΡ:
ΠΡΠΎΠΌΠ΅ .NET ΠΈΠ»ΠΈ Java, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ·ΡΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Windows ΠΈ Linux?
ΠΡΡΡΠΈΠΉ ΠΎΡΠ²Π΅Ρ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ: ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈΠΌΠ΅ΡΡΡΡ, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ?
ΠΡΠΈΠΌΠ΅Ρ GTK: (ΠΈΠ· wikipedia)
C GTK+ C++ gtkmm Ruby ruby-gtk2 Python PyGTK Java java-gnome . NET Gtk# PHP PHP-GTK Perl Gtk2-Perl
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ², Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΡΡΠΈΡΠ΅ ΡΡΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°:
Juce β An extensive cross-platform UI toolkit FLTK β A light, cross platform, non-native widget toolkit FOX toolkit β A fast, open source, cross-platform widget toolkit GTK+ β The GIMP toolkit, a widget toolkit used by GNOME applications IUP_(software) -- IUP cross platform static/dynamic library C/LUA, Lua (MIT) licence JX Application Framework Microsoft Foundation Class - The most commonly used widgeting toolkit for Windows. Motif Object Windows Library & OWLNext Qt β A widget toolkit used by KDE Standard Widget Toolkit β SWT for Java Swing β Java widget toolkit Tk β Toolkit part of the Tcl - project and often used by Perl and Python programmers Ultimate++ Visual Component Library wxWidgets β A free widget toolkit XForms
ΠΡΠ²Π΅Ρ β1
Π‘++ Ρ ΠΊΠ°ΡΡΠΎΠΉ Qt: http://qt. nokia.com/products
ΠΡΠ²Π΅Ρ β2
Python β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Ρ PyQT ΠΈ wxPython Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π²ΡΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΠΠ.
ΠΡΠ²Π΅Ρ β3
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΈΠ»ΠΈ, ΡΠΎΡΠ½Π΅Π΅, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ GUI. ΠΡΠΎ ΡΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 60 Π»Π΅Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ, Π½ΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡ ΠΈΠΌΠΈ, C, Π‘++, Objective-C, Objective-C ++, D, Eiffel, Fortran, Pascal, Modula, Oberon, Go, Haskell, OCaml, Python, Ruby, Perl, PHP, Tcl, Π‘#, VB.NET, Java, Scala, F #, Newspeak, Animorphic Smalltalk, Eiffel, Lua, Potion, Falcon, Dao, Nimrod, Genie, Vala, Scheme, CommonLisp, Cobol.
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Java, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 400 ΡΠ·ΡΠΊΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΠΏΠ»ΡΡ ΠΊΡΠΎ Π·Π½Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ·ΡΠΊΠΎΠ² Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ. Π ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π²Ρ ΠΎΠ΄ΡΡ Java, Scala, NetRexx, Python, Ruby, PHP, ECMAScript, Groovy, Fan, Clojure, JavaFX, AspectJ, Fortress, Cobol.
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ CLI ΠΈ/ΠΈΠ»ΠΈ .NET(ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°:.NET Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½ Π΄Π»Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ CIL, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CLI, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CTS, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ BCL ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 200 ΡΠ·ΡΠΊΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ. ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π‘#, VB.NET, F #, Eiffel.NET, SpeΠ‘#, Sing #, X #, Polyphonic Π‘#, CΟ, Ruby, Python, Perl, Tcl, PHP, Π‘++, SABLE, Scheme, CommonLisp, Clojure, ΠΠ΅Π½ΡΠΈΠ»ΡΡΠΎΡ, Scala, Cobol, Cobra, Perl.
- ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Tcl, Newspeak, Dolphin Smalltalk, Squeak Smalltalk, Delphi, Rebol.
Π ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΌΠΎΠ³ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ Ρ Π³ΠΎΠ»ΠΎΠ²Ρ.
ΠΡΠ²Π΅Ρ β4
ΠΡ, Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ windows ΠΈ linux, ΡΠ°ΠΊ ΡΡΠΎ Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡΡΡ Π½Π° Π‘++. Π‘ Π½ΠΈΠΌ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Ρ ΠΎΡΠΎΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ².
ΠΡΠ²Π΅Ρ β5
Ruby Shoes. ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ API, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π²ΠΈΠ΄Π΅Π», ΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Windows, OS X ΠΈ Linux.
ΠΡΠ²Π΅Ρ β6
ΠΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΌ Π²Π°Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ.
ΠΡΠ²Π΅Ρ β7
Tcl/Tk
ΠΡΠ²Π΅Ρ β8
ΡΠ±ΠΎΡΠΊΠ° x86
ΠΡΠ²Π΅Ρ β9
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ruby, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ FXRuby.
ΠΡΠ²Π΅Ρ β10
ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ², ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ wxWidgets ΠΈ C/Π‘++ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ).
ΠΡΠ²Π΅Ρ β11
Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΈΠ²Π»Π΅Π½, ΡΡΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» REALbasic, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π² ΠΎΡΠ΅Π½Ρ ΡΡ ΠΎΠΆΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠΎΡΠΌΠ°Ρ Ρ .NET ΠΈ Java ( IDE, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Visual Studio, ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΠΈΠ½Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Java Π½Π° Mac), Π½Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΠ½ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² Stack Overflow.
Π‘Π°ΠΌ ΡΠ·ΡΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ βOO VBβ. ΠΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ VB.NET, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅. ΠΠΈΡΠ½ΠΎ ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ ΡΡΠΎΡ ΡΠ·ΡΠΊ, Π½ΠΎ ΠΊΠ°ΠΊ ΡΡΠ΅Π΄Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ Π΅ΡΠ΅ Π±ΡΡΡΡΠ΅Π΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° 2 ΠΈΠ»ΠΈ 3 ΡΠ΅Π»Π΅Π²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ (Π΅ΡΠ»ΠΈ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ°Π²Π΄ΡΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ GUI-ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ).
Π― Π±Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΡΡΠ°Π²ΠΈΠ» ΡΡΠΆΠ΅Π»ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° C/Π‘++, Π½ΠΎ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΈ ΠΎΡΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ API, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅, ΠΎΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ SOAP-ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π΄ΠΎ ΡΡΡΡΡ TCP-ΡΠΎΠΊΠ΅ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ 2D ΠΈ 3D (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΡ OpenGL) API.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Mono β ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π‘#, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, β Π½ΠΎ Ρ GTK Π²ΠΌΠ΅ΡΡΠΎ WinForms, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Mono Develop (I ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ Π½Π΅ β.NETβ, Π½ΠΎ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π΅Π³ΠΎ). ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΎΠ½ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π·ΡΠ΅Π»ΡΠΉ Π² Windows ΠΈ Linux, Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠ±Π΅ΠΈΡ ΡΡΠΎΡΠΎΠ½ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°.
ΠΡΠ²Π΅Ρ β12
Erlang ΠΈ Π΅Π³ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ Wx.
Π― Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π» ΡΠ·ΡΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GUI: Π΅ΡΠ»ΠΈ Π»ΡΠ΄ΠΈ Π·Π°Π±ΠΎΡΡΡΡΡ ΠΎ ΡΠ·ΡΠΊΠ΅, ΠΎΠ½ΠΈ ΡΡΡΠΎΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ.
ΠΡΠ²Π΅Ρ β13
ΠΠ΄Π½Π° Π²Π°ΠΆΠ½Π°Ρ Π²Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ, β ΡΡΠΎ Π²Π°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΎΠΏΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠΎΠΉ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π‘ΠΊΠ°Π·Π°Π» ΡΠ°ΠΊ, Ρ Π»ΡΠ±Π»Ρ Smalltalk Π² Π»ΡΠ±ΠΎΠΌ Π²ΠΊΡΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ (Π² ΠΌΠΈΡΠ΅ Smalltalk):
- Dolphin Smalltalk (ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄Π½ΡΠΌ Windows, Π½ΠΎ exes ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Linux ΠΏΠΎΠ΄
ΠΠΈΠ½ΠΎ) - Visual Works
- Visual Age
- Smalltalk/X
- ΠΠΈΡΠΊ /Pharo
ΠΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Smalltalk ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
ΠΡΠ²Π΅Ρ β14
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GUI.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ HTML/Flash/Flex/JavaScript Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Adobe AIR, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Python Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ wxPython β Π½Π°ΡΡΠΎΡΡΠΈΠΉ Python
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (GUI), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. ΠΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎΠΉΠΊΠ° β ΡΡΠΎ Tkinter, wxPython ΠΈ PyQt. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Windows, macOS ΠΈ Linux, Π° PyQt ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ .
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ β ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠΌΠ΅ΡΡΠ΅Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΎΠΊΠ½Π° ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π₯ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅Ρ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΈ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² wxPython GUI.
ΠΠΎΡ Π·Π°ΡΡΠΎΠ½ΡΡΡΠ΅ ΡΠ΅ΠΌΡ:
- ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ wxPython
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠΊΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΡΠ½Π΅ΠΌ ΡΡΠΈΡΡΡΡ!
ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ wxPython
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wxPython GUI ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Python Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ C++, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ wxWidgets. ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ wxPython Π±ΡΠ» Π² 1998, ΠΏΠΎΡΡΠΎΠΌΡ wxPython ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π²Π½ΠΎ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ wxPython ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ PyQt ΠΈΠ»ΠΈ Tkinter , Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ wxPython ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ wxPython Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
PyQt ΠΈ Tkinter ΡΠ°ΠΌΠΈ ΡΠΈΡΡΡΡ ΡΠ²ΠΎΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π½Π°ΡΠΈΠ²Π½ΡΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ, Ρ ΠΎΡΡ PyQt ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΎΠΊ.
ΠΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ wxPython Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π² Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² wxPython Π²Ρ ΠΎΠ΄ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅ΡΡΡΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ². ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΎΠΊ wxPython Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ 9.0007 ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ.
ΠΠ΄Π΅ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° wxPython. ΠΡΠΎ ΠΌΠΈΠ»ΠΎΠ΅ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΡΠΎΡΡΠ°Π² wxPython. ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ Π½Π° Π²ΡΠΎΡΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅. ΠΡ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ΄ Π² Π΄Π΅ΠΌΠΎΠ²Π΅ΡΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Π²Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° wxPython
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ wxPython Π²Π΅ΡΡΠΈΠΈ 9.0007 wxPython 4 , ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ Π²ΡΠΏΡΡΠΊ Phoenix. ΠΠ΅ΡΡΠΈΠΈ wxPython 3 ΠΈ wxPython 2 ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Python 2 . ΠΠΎΠ³Π΄Π° Π ΠΎΠ±ΠΈΠ½ ΠΠ°Π½Π½, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ wxPython, ΡΠΎΠ·Π΄Π°Π» Π²Π΅ΡΡΠΈΡ wxPython 4, ΠΎΠ½ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠΈΠ» Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ wxPython Π±ΠΎΠ»Π΅Π΅ ΠΏΠΈΡΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈ ΠΏΡΠΎΡΡΡΠΌ Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΡΠΎ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ wxPython Π½Π° wxPython 4 (Phoenix), Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ:
- ΠΠ»Π°ΡΡΠΈΠΊ ΠΏΡΠΎΡΠΈΠ² Π€Π΅Π½ΠΈΠΊΡΠ°
- Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ Π½Π° wxPython Project Phoenix
ΠΠ°ΠΊΠ΅Ρ wxPython 4 ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΠΊΠ°ΠΊ Ρ Python 2. 7, ΡΠ°ΠΊ ΠΈ Ρ Python 3.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pip
Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ wxPython 4, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
wxPython. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ:
$ pip ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ wxpython
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π Mac OS X Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ XCode , Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. Linux ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ 9Π£ΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ 0062 pip Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ freeglut3-dev , libgstreamer-plugins-base0.10-dev ΠΈ libwebkitgtk-3.0-dev Π½Π° Xubuntu, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ.
Π ΡΡΠ°ΡΡΡΡ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠ΅ pip
, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΠ΅Π³ΠΎ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π΄Π΅Π» ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ wxPython Github, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ wxPython Π² Linux.
ΠΠ»Ρ ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ Linux Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ»Π΅Ρ Python, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Extras Linux Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ GTK2 ΠΈ GTK3. Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠΈΡ ΠΊΠΎΠ»Π΅Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»Π° Π²Π°ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Linux.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ, Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (GUI) β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ Π½ΠΈΠΌ.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ
- ΠΠ΅Π½Ρ
- ΠΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ²
- ΠΠ½ΠΎΠΏΠΊΠΈ
- ΠΠ²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ°
- ΠΡΠΈΠΊΠ΅ΡΠΊΠΈ
ΠΡΠ΅ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ . ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ wxPython. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π²ΠΎΠ·ΡΠΌΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ ΠΈΡ Π² ΠΎΠΊΠ½Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ Ρ Π½ΠΈΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ.
Π¦ΠΈΠΊΠ»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΎΠΆΠΈΠ΄Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π§ΡΠΎ-ΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ . Π‘ΠΎΠ±ΡΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎ-ΡΠΎ Π²Π²ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΠΊΡΡΠ΅, ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΡΡΡ Π΄Π»Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°.
ΠΠΎΠ΄ ΠΏΡΠΈΠΊΡΡΡΠΈΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ GUI Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΉ . Π¦ΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΎΡΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ, Π° Π·Π°ΡΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π½Π° ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π» Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΎΠ½ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ±ΡΡΠΈΠΉ , ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°Π»ΠΎ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΡΠΎΠ±ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠΎΠ³Π΄Π° Π²Ρ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΠ΅ ΡΠΈΠΊΠ» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° Π·Π°ΠΏΡΠΎΡΡ ΠΈ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π²ΠΈΡΡΠΈΠΌ.
ΠΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ Π² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΡΠ»ΡΡΡΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° wxPython ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ Π΅ΠΌΡ ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ»ΠΈ Π΄Π°ΡΡ Π΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ.
Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ΅Π»Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΠΊΠ΅Π»Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ GUI β ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΡΡΡΠΈ, Π²Ρ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π΅Π³ΠΎ ΡΠ²ΠΎΠΈΠΌ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΡΠΎΡΠΎΠ½Π°ΠΌ Π΄Π»Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Hello World
Ρ ΠΏΠΎΠΌΠΎΡΡΡ wxPython:
ΠΈΠΌΠΏΠΎΡΡ wx ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = wx.App() frame = wx.Frame(parent=None, title='Hello World') ΠΊΠ°Π΄Ρ. ΠΠΎΠΊΠ°Π·Π°ΡΡ () ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.MainLoop()
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Mac ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: ΠΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΊΡΠ°Π½Ρ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π·Π°ΠΏΡΡΠΊΠ°ΠΉΡΠ΅ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ Python Framework ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΎΡΠ»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ Π΄ΠΈΡΠΏΠ»Π΅Π΅ Π²Π°ΡΠ΅Π³ΠΎ Mac. ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ pythonw Π²ΠΌΠ΅ΡΡΠΎ python . ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ wxPython ΠΈΠ· virtualenv, ΡΠΌ. wxPython wiki Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ: wx. App
ΠΈ wx.Frame
. wx.App
β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ wxPython, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. wx.App
Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅ΡΡΠΎ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ .MainLoop()
. ΠΡΠΎ ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΡΠ³Π°Ρ ΡΠ°ΡΡΡ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠΈ β ΡΡΠΎ wx.Frame
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ wxPython, ΡΡΠΎ Ρ ΡΡΠ΅ΠΉΠΌΠ° Π½Π΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΈ ΡΡΠΎ Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Hello World
. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π°:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½Π° Mac ΠΈΠ»ΠΈ Windows.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ wx.Frame
Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ Π²ΡΡ
ΠΎΠ΄Π° Π²Π²Π΅ΡΡ
Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π²Ρ Π½Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° wxPython ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ Π²Π°Ρ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° wx.Frame
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΡ ΠΌΠΎΡΡ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ:
ΠΈΠΌΠΏΠΎΡΡ wx ΠΊΠ»Π°ΡΡ MyFrame(wx.Frame): Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): super().__init__(parent=None, title='Hello World') ΡΠ°ΠΌΠΎΠ²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅() Π΅ΡΠ»ΠΈ __name__ == '__main__': ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = wx.App() ΠΊΠ°Π΄Ρ = ΠΠΎΠΉΠΠ°Π΄Ρ() ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.MainLoop()
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π΅Π»Π°Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ.
ΠΠΈΠ΄ΠΆΠ΅ΡΡ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wxPython ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π½Π° Π²ΡΠ±ΠΎΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ wxPython Demo ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΡΠΈΠ»ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ:
ΠΈΠΌΠΏΠΎΡΡ wx ΠΊΠ»Π°ΡΡ MyFrame(wx.Frame): Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): super().__init__(parent=None, title='Hello World') ΠΏΠ°Π½Π΅Π»Ρ = wx.Panel(Ρ) self.text_ctrl = wx.TextCtrl (ΠΏΠ°Π½Π΅Π»Ρ, ΠΏΠΎΠ·ΠΈΡΠΈΡ = (5, 5)) my_btn = wx.Button(panel, label='ΠΠ°ΠΆΠΌΠΈ Π½Π° ΠΌΠ΅Π½Ρ', pos=(5, 55)) ΡΠ°ΠΌΠΎΠ²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅() Π΅ΡΠ»ΠΈ __name__ == '__main__': ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = wx.App() ΠΊΠ°Π΄Ρ = ΠΠΎΠΉΠΠ°Π΄Ρ() ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.MainLoop()
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄, Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΠ΅ΡΠ²ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ wx.ΠΠ°Π½Π΅Π»Ρ
. ΠΡΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. Π Windows Π²Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°Π½Π΅Π»Ρ, ΡΡΠΎΠ±Ρ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΡΠ°ΠΌΠΊΠΈ Π±ΡΠ» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΠΎΡΡΠ΅Π½ΠΊΠΎΠΌ ΡΠ΅ΡΠΎΠ³ΠΎ. ΠΠ±Ρ
ΠΎΠ΄ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ Π±Π΅Π· Panel Π² Windows.
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΠ°Π½Π΅Π»ΠΈ Π²ΠΎ ΡΡΠ΅ΠΉΠΌ, ΠΈ ΠΏΠ°Π½Π΅Π»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ°, ΠΎΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΅ΠΉΠΌ ΡΠΎΠ±ΠΎΠΉ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ wx.TextCtrl
Π½Π° ΠΏΠ°Π½Π΅Π»Ρ. ΠΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΏΠΎΡΡΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ° Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π² Π²Π΅ΡΡ
Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ wxPython, Π³Π΄Π΅ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ pos
. Π wxPython ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ (0,0), ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π²ΡΠΌ Π²Π΅ΡΡ
Π½ΠΈΠΌ ΡΠ³Π»ΠΎΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡΠ°ΠΊ, Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Ρ ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΠ΅ wxPython, ΡΡΠΎ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π΅Π³ΠΎ Π²Π΅ΡΡ
Π½ΠΈΠΉ Π»Π΅Π²ΡΠΉ ΡΠ³ΠΎΠ» Π½Π° ΡΠ°ΡΡΡΠΎΡΠ½ΠΈΠΈ 5 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΡΠ»Π΅Π²Π° (x) ΠΈ 5 ββΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΡΠ²Π΅ΡΡ
Ρ (y).
ΠΠ°ΡΠ΅ΠΌ Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π½Π° ΠΏΠ°Π½Π΅Π»Ρ ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΠ΅ Π΅ΠΉ ΠΌΠ΅ΡΠΊΡ. Π§ΡΠΎΠ±Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π»ΠΈΡΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ y Π½Π° 55 Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
ΠΠ±ΡΠΎΠ»ΡΡΠ½ΠΎΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ . ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GUI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ.
ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. Π‘Π±ΡΠΎΡ Π²ΡΠ΅Ρ ΡΡΠΈΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠΎΡΠΌΠ°ΡΠΎΠΌ.
Π ΡΡΠ°ΡΡΡΡ, Π²ΡΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ GUI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎ ΡΠ΅ΠΌ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ Π΄Π°Π»Π΅Π΅.
ΠΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»ΠΈ (Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠ°)
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wxPython Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΉΠ·Π΅ΡΠΎΠ² , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ½ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π·Π° Π²Π°Ρ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΡΠ³ΠΈΠ΅ Π½Π°Π±ΠΎΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ°ΠΉΠ·Π΅ΡΡ ΠΊΠ°ΠΊ Π½Π° ΠΌΠ°ΠΊΠ΅ΡΡ, ΡΡΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ PyQt.
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ°ΠΉΠ·Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ:
-
wx.BoxSizer
-
wx.GridSizer
-
wx.FlexGridSizer
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π²Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ wx. BoxSizer
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡΡΡΠ΅:
ΠΈΠΌΠΏΠΎΡΡ wx ΠΊΠ»Π°ΡΡ MyFrame(wx.Frame): Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): super().__init__(parent=None, title='Hello World') ΠΏΠ°Π½Π΅Π»Ρ = wx.Panel(Ρ) my_sizer = wx.BoxSizer(wx.VERTICAL) self.text_ctrl = wx.TextCtrl(ΠΏΠ°Π½Π΅Π»Ρ) my_sizer.Add(self.text_ctrl, 0, wx.ALL | wx.EXPAND, 5) my_btn = wx.Button(panel, label='ΠΠ°ΠΆΠΌΠΈ Π½Π° ΠΌΠ΅Π½Ρ') my_sizer.Add(my_btn, 0, wx.ALL | wx.CENTER, 5) ΠΏΠ°Π½Π΅Π»Ρ.SetSizer(my_sizer) ΡΠ°ΠΌΠΎΠ²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅() Π΅ΡΠ»ΠΈ __name__ == '__main__': ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = wx.App() ΠΊΠ°Π΄Ρ = ΠΠΎΠΉΠΠ°Π΄Ρ() ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.MainLoop()
ΠΠ΄Π΅ΡΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ wx.BoxSizer
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π΅ΠΌΡ wx.VERTICAL
, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊ ΡΠ°ΠΉΠ·Π΅ΡΡ.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ, ΡΠΎ Π΅ΡΡΡ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ²Π΅ΡΡ
Ρ Π²Π½ΠΈΠ·. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ BoxSizer Π½Π° wx. HORIZONTAL
. ΠΠΎΠ³Π΄Π° Π²Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅, Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ.
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π² ΡΠ°ΠΉΠ·Π΅Ρ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ .Add()
. ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎ ΠΏΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
-
ΠΎΠΊΠ½ΠΎ
(Π²ΠΈΠ΄ΠΆΠ΅Ρ) -
ΠΏΡΠΎΠΏΠΎΡΡΠΈΡ
-
ΡΠ»Π°Π³
-
Π³ΡΠ°Π½ΠΈΡΠ°
-
Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΠΊΠ½Π°
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΏΠΎΡΡΠΈΡ
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΈΡ
Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΡΠ°ΠΉΠ·Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ, ΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ wxPython ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π’ΡΠ΅ΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ»Π°Π³
. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°Π³ΠΎΠ², Π΅ΡΠ»ΠΈ Ρ
ΠΎΡΠΈΡΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΈΡ
Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΎΠΉ: |
. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wxPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ |
, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π°Π³ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠΠ.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΡΠ»Π°Π³Π°ΠΌΠΈ wx. ALL
ΠΈ wx.EXPAND
. Π€Π»Π°Π³ wx.ALL
ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ wxPython, ΡΡΠΎ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π³ΡΠ°Π½ΠΈΡΡ ΡΠΎ Π²ΡΠ΅Ρ
ΡΡΠΎΡΠΎΠ½ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ wx.EXPAND
Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π² ΡΠ°ΠΉΠ·Π΅ΡΠ΅.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ border
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ wxPython, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π²ΠΎΠΊΡΡΠ³ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ userData
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, ΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅Π³ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΅Π΄ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΡΠ°ΠΉΠ·Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π΅ΡΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, Ρ ΠΏΠΎΡΠ΅Π» Π΄Π°Π»ΡΡΠ΅ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΠ» wx.EXPAND
Π€Π»Π°Π³ Π΄Π»Ρ wx.CENTER
, ΡΡΠΎΠ±Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π»Π°ΡΡ ΠΏΠΎ ΡΠ΅Π½ΡΡΡ ΡΠΊΡΠ°Π½Π°.
ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ°ΠΉΠ·Π΅ΡΠ°Ρ , Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ wxPython Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅.
Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ
Π₯ΠΎΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅, ΠΎΠ½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°ΠΆΠΌΠ΅ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π½Π°Π΄ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ:
ΠΈΠΌΠΏΠΎΡΡ wx ΠΊΠ»Π°ΡΡ MyFrame(wx.Frame): Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): super().__init__(parent=None, title='Hello World') ΠΏΠ°Π½Π΅Π»Ρ = wx.Panel(Ρ) my_sizer = wx.BoxSizer(wx.VERTICAL) self.text_ctrl = wx.TextCtrl(ΠΏΠ°Π½Π΅Π»Ρ) my_sizer.Add(self.text_ctrl, 0, wx.ALL | wx.EXPAND, 5) my_btn = wx.Button(panel, label='ΠΠ°ΠΆΠΌΠΈ Π½Π° ΠΌΠ΅Π½Ρ') my_btn.Bind(wx.EVT_BUTTON, self.on_press) my_sizer.Add(my_btn, 0, wx.ALL | wx.CENTER, 5) ΠΏΠ°Π½Π΅Π»Ρ.SetSizer(my_sizer) ΡΠ°ΠΌΠΎΠ²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅() def on_press (Ρ, ΡΠΎΠ±ΡΡΠΈΠ΅): Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = self.text_ctrl.GetValue() Π΅ΡΠ»ΠΈ Π½Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: print("ΠΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ!") Π΅ΡΠ΅: print(f'ΠΡ Π²Π²Π΅Π»ΠΈ: "{Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅}"') Π΅ΡΠ»ΠΈ __name__ == '__main__': ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = wx. App() ΠΊΠ°Π΄Ρ = ΠΠΎΠΉΠΠ°Π΄Ρ() ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.MainLoop()
ΠΠΈΠ΄ΠΆΠ΅ΡΡ Π² wxPython ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡ ΠΊ Π½ΠΈΠΌ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
ΠΡ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π΅Π΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π²ΡΠ·Π²Π°Π² ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ .Bind()
. .Bind()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡΡΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΡ, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΈ ΠΏΠ°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ².
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Ρ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊ wx.EVT_BUTTON
ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΅ΠΌΡ Π²ΡΠ·ΡΠ²Π°ΡΡ on_press()
, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π‘ΠΎΠ±ΡΡΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π²Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ, β ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, wx.EVT_BUTTON
.
.on_press()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ
. ΠΡΠΎ ΠΏΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ. ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°Π·Π²Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΠΈΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ Π±Ρ Π·Π°Ρ
ΠΎΡΠ΅Π»ΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ±ΡΡΠΈΡ Π·Π΄Π΅ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΎΠΌΡ ΡΠ°ΠΊΡΡ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΅Π³ΠΎ Π²ΡΠΎΡΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ.
ΠΠ½ΡΡΡΠΈ .on_press()
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π²ΡΠ·Π²Π°Π² Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ GetValue()
. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΠ΅ ΡΡΡΠΎΠΊΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΡΠΈΠΌΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅!
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ β ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π²Π·ΡΠ» Π½Π° ΡΠ΅Π±Ρ ΡΠΌΠ΅Π»ΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΡΡ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π²Π°Ρ. ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅Π³ΠΎΠ² MP3! Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ β Π²ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²Π°ΡΡ Π·Π°Π΄Π°ΡΡ.
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΠΎΠΈΡΠΊ Π² Google Π΄Π»Ρ Python mp3 Ρ ΡΠ΅Π³ΠΎΠΌ
, Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²:
-
mp3-ΡΠ΅Π³Π³Π΅Ρ
-
Π³Π»Π°Π· D3
-
ΠΌΡΡΠ°Π³Π΅Π½
Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π½ΠΈΡ
ΠΈ ΡΠ΅ΡΠΈΠ», ΡΡΠΎ eyeD3 ΠΈΠΌΠ΅Π΅Ρ Ρ
ΠΎΡΠΎΡΠΈΠΉ API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½Π΅ ΡΠ²ΡΠ·Π°Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ MP3 ID3. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ eyeD3 , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pip
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
$ pip ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ eyed3
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π° macOS Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ libmagic
Ρ ΠΏΠΎΠΌΠΎΡΡΡ brew
. Π£ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Windows ΠΈ Linux Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ eyeD3.
ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΡΠΎΡΠ°ΡΡ, ΠΊΠ°ΠΊ, ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅ΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- ΠΡΠΊΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² MP3
- ΠΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ΅Π³ΠΈ MP3
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π³ MP3
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ°ΠΏΠΎΠΊ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½Ρ File . ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅Π³ΠΈ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² MP3, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΡΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π§ΡΠΎ-ΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ΅ ΡΠΎ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ ΠΈ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ³Π΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎΠ»Π±ΡΡ Π΄Π»Ρ ΡΠ΅Π³ΠΎΠ² MP3. Π Π½Π°Π±ΠΎΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² wxPython Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, Π΄Π²Π° Π»ΡΡΡΠΈΡ ΠΈΠ· Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:0003
-
wx.grid.Grid
-
wx.ListCtrl
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ wx.ListCtrl
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ Grid
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΠΌ, ΠΈ, ΡΠ΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³Π° MP3.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΠ΅Π³ΠΎ Ρ ΠΎΡΠΈΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ:
ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ Π²ΡΡΠ΅ Π΄Π°Π΅Ρ Π½Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ!
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Model-View-Controller? ΠΠ°ΠΊ Π²Ρ Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡΡ? ΠΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ Π½Π° ΡΠ°ΠΉΠ»? Π’Π°ΠΊΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΠΎΠΏΡΡΠ° Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ Π½Π° Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ.
Π Π²Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ°:
- Π
wx.ΠΠ°Π½Π΅Π»Ρ
ΠΊΠ»Π°ΡΡ - A
wx.Π Π°ΠΌΠ°
ΠΊΠ»Π°ΡΡ
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠΎΡΠΏΠΎΡΠΈΡΡ ΠΈ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΈΠΏΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, Π½ΠΎ Π΄Π»Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ½ Π²Π°ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Π½ΡΠΆΠ΅Π½. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» Python Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΏΠ°Π½Π΅Π»ΠΈ:
ΠΈΠΌΠΏΠΎΡΡ Π³Π»Π°Π·3 ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±ΡΡ ΠΈΠΌΠΏΠΎΡΡ wx ΠΊΠ»Π°ΡΡ Mp3Panel(wx.Panel): def __init__(Ρ, ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ): ΡΡΠΏΠ΅Ρ().__init__(ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ) main_sizer = wx.BoxSizer(wx.VERTICAL) self.row_obj_dict = {} self.list_ctrl = wx.ListCtrl( Ρ, ΡΠ°Π·ΠΌΠ΅Ρ=(-1, 100), ΡΡΠΈΠ»Ρ = wx. LC_REPORT | wx.BORDER_SUNKEN ) self.list_ctrl.InsertColumn (0, Β«ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΒ», ΡΠΈΡΠΈΠ½Π° = 140) self.list_ctrl.InsertColumn(1, 'ΠΠ»ΡΠ±ΠΎΠΌ', ΡΠΈΡΠΈΠ½Π°=140) self.list_ctrl.InsertColumn(2, 'ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ', ΡΠΈΡΠΈΠ½Π°=200) main_sizer.Add(self.list_ctrl, 0, wx.ALL | wx.EXPAND, 5) edit_button = wx.Button(self, label='Edit') edit_button.Bind(wx.EVT_BUTTON, self.on_edit) main_sizer.Add(edit_button, 0, wx.ALL | wx.CENTER, 5) self.SetSizer(main_sizer) def on_edit (Ρ, ΡΠΎΠ±ΡΡΠΈΠ΅): ΠΏΠ΅ΡΠ°ΡΡ('Π² on_edit') def update_mp3_listing (Ρ, ΠΏΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅): ΠΏΠ΅ΡΠ°ΡΡ (ΠΏΡΡΡ_ΠΏΠ°ΠΏΠΊΠΈ)
ΠΠ΄Π΅ΡΡ Π²Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ Eyed3
, ΠΏΠ°ΠΊΠ΅Ρ Python glob
ΠΈ ΠΏΠ°ΠΊΠ΅Ρ wx
Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ wx.Panel
ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠ»ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΎ Π²Π°ΡΠΈΡ
MP3-ΡΠ°ΠΉΠ»Π°Ρ
, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π²Π°ΡΡ row_obj_dict
.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ wx. ListCtrl
ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΡΡΠ΅ΡΠ° ( wx.LC_REPORT
) Ρ ΡΡΠΎΠΏΠ»Π΅Π½Π½ΠΎΠΉ ΡΠ°ΠΌΠΊΠΎΠΉ ( wx.BORDER_SUNKEN
). ΠΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ
ΡΠΎΡΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ»Π°Π³Π° ΡΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅, Π½ΠΎ ΡΠ»Π°Π³ ΠΎΡΡΠ΅ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ.
Π§ΡΠΎΠ±Ρ ListCtrl
ΠΈΠΌΠ΅Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ .InsertColumn()
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΡΡΠΎΠ»Π±ΡΠ°. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΠΎΠ»Π±ΡΠ°, Π΅Π³ΠΎ ΠΌΠ΅ΡΠΊΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ ΡΡΠΎΠ»Π±ΡΠ° Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ
.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π³ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ
, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ ΠΌΠ΅ΡΠΎΠ΄. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ, ΠΏΡΡΡΡΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ°:
ΠΊΠ»Π°ΡΡ Mp3Frame(wx.Frame): Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): ΡΡΠΏΠ΅Ρ().__init__(ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ=ΠΠ΅Ρ, title='Π Π΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅Π³ΠΎΠ² MP3') self.panel = Mp3Panel(Ρ) ΡΠ°ΠΌΠΎΠ²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅() Π΅ΡΠ»ΠΈ __name__ == '__main__': ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ = wx. App (Π»ΠΎΠΆΡ) ΠΊΠ°Π΄Ρ = Mp3Frame() ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.MainLoop()
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠ°Π΄ΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΠΏΠ°Π½Π΅Π»ΠΈ, Mp3Panel
. ΠΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅, Π²Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΠΎΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½ΠΎ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΌΠ΅Π½Ρ File . ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ MP3-ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡ ΡΠ΅Π³ΠΎΠ²!
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, β ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π»ΠΎ ΠΌΠ΅Π½Ρ File , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΎΠ³Π΄Π° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ°ΠΉΠ»Ρ MP3 Π² ΡΠ²ΠΎΠ΅ ΡΠ²ΠΎΡΠ΅Π½ΠΈΠ΅. ΠΠ΅Π½Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΠΊΠ»Π°ΡΡ wx.Frame
, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΡ ΠΌΠ΅Π½Ρ Π² ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΡΡ
, ΠΊΡΠΎ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ, Π±ΡΠ» Microsoft Office, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠ°Π½Π΅Π»Ρ Π»Π΅Π½ΡΡ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wxPython ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»Π΅Π½Ρ Π² wx.lib.agw.ribbon
.
ΠΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈΡΡΠ΅Π·Π»ΠΈ ΠΌΠ΅Π½Ρ, ΡΠ²Π»ΡΡΡΡΡ Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Google Chrome ΠΈ Mozilla Firefox. Π‘Π΅ΠΉΡΠ°Ρ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠ΅Π½Ρ Π² Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
ΠΊΠ»Π°ΡΡ Mp3Frame(wx.Frame): Π·Π°ΡΠΈΡΠ° __init__(ΡΠ°ΠΌ): wx.Frame.__init__(self, parent=None, title='Π Π΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅Π³ΠΎΠ² MP3') self.panel = Mp3Panel(Ρ) self.create_menu() ΡΠ°ΠΌΠΎΠ²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅() ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ create_menu (Ρ): menu_bar = wx.MenuBar() file_menu = wx.ΠΠ΅Π½Ρ() open_folder_menu_item = file_menu.Append( wx.ID_ANY, Β«ΠΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡΒ», Β«ΠΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΊΡ Ρ MP3Β» ) menu_bar.Append(file_menu, '&Π€Π°ΠΉΠ»') ΡΠ°ΠΌΠΎ.ΠΡΠΈΠ²ΡΠ·Π°ΡΡ( ΡΠΎΠ±ΡΡΠΈΠ΅=wx.EVT_MENU, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ = self. on_open_folder, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ = open_folder_menu_item, ) self.SetMenuBar (ΠΌΠ΅Π½Ρ_Π±Π°Ρ) def on_open_folder (Ρ, ΡΠΎΠ±ΡΡΠΈΠ΅): title = "ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³:" dlg = wx.DirDialog(Ρ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, ΡΡΠΈΠ»Ρ=wx.DD_DEFAULT_STYLE) Π΅ΡΠ»ΠΈ dlg.ShowModal() == wx.ID_OK: self.panel.update_mp3_listing(dlg.GetPath()) Π΄Π»Π³.Π£Π½ΠΈΡΡΠΎΠΆΠΈΡΡ()
ΠΠ΄Π΅ΡΡ Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π²ΡΠ·ΠΎΠ² .create_menu()
Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΡΠ΅ΠΌ Π² ΡΠ°ΠΌΠΎΠΌ .create_menu()
Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ wx.MenuBar
ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ wx.Menu
.
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ Π² ΠΌΠ΅Π½Ρ, Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΌΠ΅Π½Ρ .Append()
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π΅ΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
- ΠΠ΅ΡΠΊΠ° Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ
- Π‘ΡΡΠΎΠΊΠ° ΡΠΏΡΠ°Π²ΠΊΠΈ
ΠΠ°Π»Π΅Π΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅Π½Ρ Π² ΡΡΡΠΎΠΊΡ ΠΌΠ΅Π½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΡΠΎΠΊΡ ΠΌΠ΅Π½Ρ .ΠΠΎΠ±Π°Π²ΠΈΡΡ()
. ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΌΠ΅Π½Ρ ΠΈ ΠΌΠ΅ΡΠΊΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. ΠΡΠ° ΠΌΠ΅ΡΠΊΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½Π°Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Π½Π°Π·Π²Π°Π»ΠΈ Π΅Π΅ &Π€Π°ΠΉΠ»
Π²ΠΌΠ΅ΡΡΠΎ Π€Π°ΠΉΠ»
. ΠΠΌΠΏΠ΅ΡΡΠ°Π½Π΄ Π³ΠΎΠ²ΠΎΡΠΈΡ wxPython ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Alt + F , ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ ΠΌΠ΅Π½Ρ File
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΡ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ wx.AcceleratorTable
Π΄Π»Ρ ΠΈΡ
ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΠ°Π±Π»ΠΈΡΠ°Ρ
ΡΡΠΊΠΎΡΠΈΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ wxPython.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ self.Bind()
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°Π΄Ρ ΠΊ wx.EVT_MENU
. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ self.Bind()
Π΄Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ ΠΌΠ΅Π½Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·Π°ΡΡ wxPython, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ
ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ΅ΠΉΠΌ .SetMenuBar()
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅ΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π±ΡΠ» ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠ΅Π½Ρ Π² ΡΠ²ΠΎΠΉ ΡΡΠ΅ΠΉΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ½ΠΎΠ²Π° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ on_open_folder (Ρ, ΡΠΎΠ±ΡΡΠΈΠ΅): title = "ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³:" dlg = wx.DirDialog(self, title, style=wx.DD_DEFAULT_STYLE) Π΅ΡΠ»ΠΈ dlg.ShowModal() == wx.ID_OK: self.panel.update_mp3_listing(dlg.GetPath()) Π΄Π»Π³.Π£Π½ΠΈΡΡΠΎΠΆΠΈΡΡ()
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π» ΠΏΠ°ΠΏΠΊΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΠ°ΠΉΠ»Ρ MP3, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ wxPython wx.DirDialog
. wx.DirDialog
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ ΡΡΠΈΠ»Ρ. Π§ΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°ΡΡ .ShowModal()
. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎ, Π° ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π²Π°ΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ OK Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ±ΠΎΡ ΠΏΡΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° . ΠΠΎΠ»ΡΡΠΈΡΡΠΡΡΡ()
. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠΎΡ ΠΏΡΡΡ ΠΊΠ»Π°ΡΡΡ Π²Π°ΡΠ΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π·Π΄Π΅ΡΡ, Π²ΡΠ·Π²Π°Π² .update_mp3_listing() ΠΏΠ°Π½Π΅Π»ΠΈ
.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΊΡΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π²ΡΠ·Π²Π°ΡΡ Π΅Π³ΠΎ .Destroy()
.
ΠΠΈΠ°Π»ΠΎΠ³ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ .Close()
, Π½ΠΎ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΡΠΊΡΡΠ²Π°Π΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³, ΠΈ ΠΎΠ½ Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡ ΡΠ΅Π±Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΊΡΠΎΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΡΠ°Π½Π½ΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡΡ .Destroy()
Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ Π²Π°Ρ ΠΊΠ»Π°ΡΡ Mp3Panel
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΠ°ΡΡ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ .update_mp3_listing()
:
def update_mp3_listing(self, folder_path): self.current_folder_path = ΠΏΡΡΡ_ΠΊ_ΠΏΠ°ΠΏΠΊΠ΅ self.list_ctrl.ClearAll() self.list_ctrl.InsertColumn (0, Β«ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΒ», ΡΠΈΡΠΈΠ½Π° = 140) self.list_ctrl.InsertColumn(1, 'ΠΠ»ΡΠ±ΠΎΠΌ', ΡΠΈΡΠΈΠ½Π°=140) self. list_ctrl.InsertColumn(2, 'ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ', ΡΠΈΡΠΈΠ½Π°=200) self.list_ctrl.InsertColumn(3, 'ΠΠΎΠ΄', ΡΠΈΡΠΈΠ½Π°=200) mp3s = glob.glob (ΠΏΡΡΡ_ΠΏΠ°ΠΏΠΊΠΈ + '/*.mp3') mp3_objects = [] ΠΈΠ½Π΄Π΅ΠΊΡ = 0 Π΄Π»Ρ ΠΌΠΏ3 Π² ΠΌΠΏ3: mp3_object = eyed3.load(mp3) self.list_ctrl.InsertItem (ΠΈΠ½Π΄Π΅ΠΊΡ, mp3_object.tag.ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ) self.list_ctrl.SetItem (ΠΈΠ½Π΄Π΅ΠΊΡ, 1, mp3_object.tag.album) self.list_ctrl.SetItem (ΠΈΠ½Π΄Π΅ΠΊΡ, 2, mp3_object.tag.title) mp3_objects.append(mp3_object) self.row_obj_dict[index] = mp3_object ΠΈΠ½Π΄Π΅ΠΊΡ += 1
ΠΠ΄Π΅ΡΡ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠ²Π΅ΠΆΠΈΠΌ ΠΈ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ MP3, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ½ΠΎΠ²Π° Π²ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ Π²Π·ΡΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Python glob
Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² MP3.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡΡΡ Π½Π° MP3 ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΈΡ
Π² ΠΎΠ±ΡΠ΅ΠΊΡΡ Eyed3
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠ² ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ 9.0062 .load() ΠΈΠ· Eyed3
. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ MP3-ΡΠ°ΠΉΠ»Ρ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅Π³ΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, Π°Π»ΡΠ±ΠΎΠΌ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ MP3-ΡΠ°ΠΉΠ»Π° Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΡΠ·ΠΎΠ²Π΅ .InsertItem()
Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΠΈ SetItem()
Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ².
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ°Π³ β ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ MP3 Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅ Python, row_obj_dict
.
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ .on_edit()
, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΠΈ MP3:
ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ on_edit(Ρ, ΡΠΎΠ±ΡΡΠΈΠ΅): Π²ΡΠ±ΠΎΡ = self.list_ctrl.GetFocusedItem() Π΅ΡΠ»ΠΈ Π²ΡΠ±ΠΎΡ >= 0: mp3 = self.row_obj_dict[Π²ΡΠ±ΠΎΡ] dlg = Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (mp3) dlg.ShowModal() self. update_mp3_listing(self.current_folder_path) Π΄Π»Π³.Π£Π½ΠΈΡΡΠΎΠΆΠΈΡΡ()
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ±ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π²ΡΠ·Π²Π°Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ 9.0062 .GetFocusedItem() .
ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π²ΡΠ±ΡΠ°Π» Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΠΎΠ½ Π²Π΅ΡΠ½Π΅Ρ -1
. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎ-ΡΠΎ Π²ΡΠ±ΡΠ°Π», Π²Ρ Π·Π°Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ MP3 ΠΈΠ· ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠΊΡΡΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΡΠ΅Π³ΠΎΠ² MP3. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ, Π°Π»ΡΠ±ΠΎΠΌΠ° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° MP3.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎ. ΠΠΎΠ³Π΄Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π·Π°ΠΊΡΠΎΠ΅ΡΡΡ, Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ Π² .on_edit()
. ΠΡΠΈ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π» ΡΠ΅ΠΊΡΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ΅Π³Π° MP3, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π», ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΡΠ»Π΅Π΄Π½ΡΡ ΡΠ°ΡΡΡ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠΈ β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³Π° MP3. ΠΠ»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π·Π°ΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ΄ ΡΡΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΠΌΠ΅ΡΠΊΠΈ ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΡΠ΅Π³Π°Ρ
. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ΅ΡΠΊΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ wx.StaticText
.
ΠΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³, wx.Dialog 9ΠΠ»Π°ΡΡ 0063 ΡΠ²ΠΎΠΉ Π΄ΡΡΠ³. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°:
ΠΊΠ»Π°ΡΡ EditDialog(wx.Dialog): def __init__(Ρ, mp3): title = f'Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ "{mp3.tag.title}"' super().__init__(ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ=ΠΠ΅Ρ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ=Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ) ΡΠ°ΠΌ.mp3 = mp3 self.main_sizer = wx.BoxSizer(wx.VERTICAL) self.artist = wx.TextCtrl( Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = self.mp3.tag.artist) self.add_widgets('Π₯ΡΠ΄ΠΎΠΆΠ½ΠΈΠΊ', self.artist) self.album = wx.TextCtrl( Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = self.mp3.tag.album) self.add_widgets('ΠΠ»ΡΠ±ΠΎΠΌ', self. album) self.title = wx.TextCtrl( Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ = self.mp3.tag.title) self.add_widgets('ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ', self.title) btn_sizer = wx.BoxSizer() save_btn = wx.Button(self, label='Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΡ') save_btn.Bind(wx.EVT_BUTTON, self.on_save) btn_sizer.Add(save_btn, 0, wx.ALL, 5) btn_sizer.Add(wx.Button( ΡΠ°ΠΌ, id=wx.ID_CANCEL), 0, wx.ALL, 5) self.main_sizer.Add(btn_sizer, 0, wx.CENTER) self.SetSizer(self.main_sizer)
ΠΠ΄Π΅ΡΡ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π½Π°ΡΠ°ΡΡ Ρ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° wx.Dialog
ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΌΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ MP3.
ΠΠ°Π»Π΅Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ. Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ .add_widgets()
Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² wx.StaticText
Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ Π·Π΄Π΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ° Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΡ .
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ add_widgets
ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ add_widgets(self, label_text, text_ctrl): row_sizer = wx.BoxSizer(wx.ΠΠΠ ΠΠΠΠΠ’ΠΠΠ¬ΠΠ) label = wx.StaticText(self, label=label_text, ΡΠ°Π·ΠΌΠ΅Ρ = (50, -1)) row_sizer.Add (ΠΌΠ΅ΡΠΊΠ°, 0, wx.ALL, 5) row_sizer.Add(text_ctrl, 1, wx.ALL | wx.EXPAND, 5) self.main_sizer.Add(row_sizer, 0, wx.EXPAND)
add_widgets()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΠΊΡΡ ΠΌΠ΅ΡΠΊΠΈ ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ BoxSizer
.
ΠΠ°Π»Π΅Π΅ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ wx.StaticText
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΊΠΈ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°Π²Π½ΡΠΌ 50
ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² ΡΠΈΡΠΈΠ½Ρ, Π° Π²ΡΡΠΎΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° -1
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΌΠ΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π²Ρ ΡΠ½Π°ΡΠ°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ StaticText Π² ΡΠ²ΠΎΠΉ BoxSizer, Π° Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΊ ΠΊ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠΊΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΡΠ°ΠΉΠ·Π΅ΡΡ Π΄ΡΡΠ³ Π² Π΄ΡΡΠ³Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ on_save()
, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
def on_save(Ρ, ΡΠΎΠ±ΡΡΠΈΠ΅): self.mp3.tag.artist = self.artist.GetValue() self.mp3.tag.album = self.album.GetValue() self.mp3.tag.title = self.title.GetValue() self.mp3.tag.save() ΡΠ°ΠΌΠΎ.ΠΠ°ΠΊΡΡΡΡ()
ΠΠ΄Π΅ΡΡ Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ ΡΠ΅Π³ΠΈ Π΄Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ eyed3
.save()
. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ .Close()
Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Π·Π²ΠΎΠ½ΠΈΡΠ΅. Close()
Π·Π΄Π΅ΡΡ Π²ΠΌΠ΅ΡΡΠΎ .Destroy()
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΡΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ .Destroy()
Π² .on_edit()
Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° ΠΏΠ°Π½Π΅Π»ΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ!
Π£Π΄Π°Π»ΠΈΡΡ ΡΠ΅ΠΊΠ»Π°ΠΌΡ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ·Π½Π°Π»ΠΈ ΠΎ wxPython. ΠΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ wxPython.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ:
- ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ wxPython
- ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ Π² wxPython
- Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠ°ΠΉΠ·Π΅ΡΠ°ΠΌΠΈ
- ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ΅Π³ΠΎΠ² MP3. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ wxPython GUI Π½Π°Π΄Π΅ΠΆΠ΅Π½ ΠΈ ΠΏΠΎΠ»ΠΎΠ½ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΈΠΌ Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ wxPython, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΡΠ»ΠΊΠ°ΠΌ:
- ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ wxPython
- Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Zetcode ΠΏΠΎ wxPython
- ΠΡΡΡ ΠΏΡΠΎΡΠΈΠ² Python ΠΠ»ΠΎΠ³
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΅ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Ρ Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Python? ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Python super()
, ΡΠΎΠ³Π΄Π° ΡΡΠΏΠ΅ΡΠ·Π°ΡΡΠ΄ΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠ»Π°ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python super() ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ Π²Π°Ρ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΠΎΠ² MP3, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ.
Python Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ : ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ Π² Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ Β«ΠΠΈΡΠΎΠ½ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Β» ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ Python, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΊΠΈ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅. Π±ΠΎΠ»Π΅Π΅.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠΈΠΌ Π·Π½Π°ΠΌΠ΅Π½Π°ΡΠ΅Π»Π΅ΠΌ Π²ΡΠ΅Ρ ΡΡΠ΅Π±Π½ΡΡ ΠΏΠΎΡΠΎΠ±ΠΈΠΉ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ , Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΡΡΠ΅Π΄Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° ΠΈΠ»ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅). ΠΡ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ Python Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ (GUI).
Π£Π³Π°Π΄Π°ΠΉΡΠ΅, ΡΡΠΎ? ΠΡΠΎ.
ΠΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ:
- ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ
- ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ
- ΠΌΠ΅Π½Ρ
- Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ²
- ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ»Π΅ΡΠ°
- ΡΡΠΎΠ»Π±ΡΠΎΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
- ΠΈ Π±ΠΎΠ»Π΅Π΅
Π‘ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² GUI Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π½Π° Python. ΠΠ΅ Π²Π΅ΡΠΈΡΠ΅ ΠΌΠ½Π΅? ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ.
Π― Π±ΡΠ΄Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Pop!_OS Linux, Π½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π»ΡΠ±ΡΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΌ Python.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ PySimpleGUI
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Python, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Tkinter, Qt (pyside2), wxPython ΠΈ Remi) Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±ΡΡΡΡΠΎΠ΅ ΠΈ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ PySimpleGUI ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Tkinter, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° PySimpleGUI Π΄Π°Π΅Ρ Π²Π°ΠΌ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python.
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ PySimpleGUI, Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠ°ΡΠΈΠ½Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python. ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ pip Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ pip, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
sudo apt-get install python3-pip -y
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Pip ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ PySimpleGUI Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
python3 -m pip ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ pysimplegui
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ.
ΠΡΠΈΠ²Π΅Ρ, Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΊ!
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ, β Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Hello, World (Ρ Π½ΠΎΡΠΊΠ°ΠΌΠΈ New Stack). ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PySimpleGUI Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡ Π΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΡΠΎΡΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉ.
ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ PySimpleGUI Π² Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ sg ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ PySimpleGUI ΠΊΠ°ΠΊ SG
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ PySimpleGUI ΠΊΠ°ΠΊ sg |
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ Π»ΡΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΡ PySimpleGUI Π²ΡΠ΅Π³ΠΎ Ρ sg .
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ°ΠΊ Β«Hello, New StackΒ» ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠ°ΠΊ 30 x 4. ΠΡΠ° ΡΡΡΠΎΠΊΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
layout = [[sg.Button('ΠΡΠΈΠ²Π΅Ρ, Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΊ', size=(30,4))]]
layout = [[sg. Button('ΠΡΠΈΠ²Π΅Ρ, Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΊ', size=(30,4))]] |
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΡΡΡΠΎΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆ (ΡΡΠΎ Π²Π½ΡΡΡΠΈ ()) ΠΈ ΡΠΏΠΈΡΠΎΠΊ (ΡΡΠΎ Π²Π½ΡΡΡΠΈ []) Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ΠΠ°ΡΠ° ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
window = sg.Window('GUI SAMPLE', layout, size=(200,100))
window = sg.Window('GUI SAMPLE', layout, size=(200,100)) |
Π’ΠΎ, ΡΡΠΎ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΡΠ΅, β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ (ΠΎΠΊΠ½ΠΎ), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ PySimpleGUI Window Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π½Π°Π΄ΠΏΠΈΡΡΡ GUI SAMPLE ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 200Γ100.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ .read() (ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² ΠΈΠ· ΡΠ°ΠΉΠ»Π°. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π²Π½ΠΎ -1, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π²Π΅ΡΡ ΡΠ°ΠΉΠ») Π΄Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠΉ:
ΡΠΎΠ±ΡΡΠΈΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΡ = window.read()
ΡΠΎΠ±ΡΡΠΈΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΡ = window. read() |
ΠΠ΅ΡΡ Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ (Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ) Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
#ΠΠΌΠΏΠΎΡΡ PySimpleGUI ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ PySimpleGUI ΠΊΠ°ΠΊ sg #ΠΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ layout = [[sg.Button('ΠΡΠΈΠ²Π΅Ρ, Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΊ', size=(30,4))]] # Π ΠΈΡΡΠ΅ΠΌ ΠΎΠΊΠ½ΠΎ window = sg.Window('ΠΠΠ ΠΠΠΠ¦ GUI', layout, size=(200,100)) #ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΡ = window.read()
1 2 3 4 5 6 7 8 9 10 11 | #Import PySimpleGUI import PySimpleGUI as sg Β #Draw the button layout = [[sg.Button('Hello, New Stack', size=(30,4))]] 3 02 32 3 |
Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΊΠ°ΠΊ hello_world. py . ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
python3 hello_world.py
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ( Π ΠΈΡΡΠ½ΠΎΠΊ 1 ).
Π ΠΈΡΡΠ½ΠΎΠΊ 1: ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Python Hello, World Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ.
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Hello, New Stack, ΠΈ ΠΎΠΊΠ½ΠΎ Π·Π°ΠΊΡΠΎΠ΅ΡΡΡ.
ΠΡΠΈΠ½ΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ Tkinter (ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Ρ PySimpleGUI), ΡΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΆΠ΅Π»ΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΡΡΠΎΡ ΡΠ°ΠΉΠ» input_gui.py . ΠΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ Tkinter ΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΈΠ½ΡΠ΅Ρ ΠΊΠ°ΠΊ ΡΠΊ
ΠΈΠΌΠΏΠΎΡΡ tkinter ΠΊΠ°ΠΊ tk |
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ simpledialog ΠΎΡ Tkinter Ρ:
ΠΈΠ· tkinter import simpledialog
ΠΈΠ· tkinter import simpledialog |
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
ΠΠΠ ΠΠΠ¬ = tk. Tk()
ΠΠΠ ΠΠΠ¬ = tk.Tk() |
ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π° (Π½Π°Π·Π²Π°Π² ΠΎΠΊΠ½ΠΎ Β«ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π²ΠΎΠ΄Π°Β») ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
USER_INP = simpledialog.askstring(title="ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π²ΠΎΠ΄Π°", prompt="ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ:")
USER_INP = simpledialog.askstring(title="Input Test", Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β prompt="ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΈΠΌΡ:") |
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΎΠΊΠ½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠΎΠΊΠΈ:
print("Hello", USER_INP)
ΠΡΠ΅ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
# ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ tkinter ΠΈ simpledialog ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ tkinter ΠΊΠ°ΠΊ tk ΠΈΠ· tkinter ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΠΠ ΠΠΠ¬ = tk.Tk() # ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Π²ΠΎΠ΄Π° ΠΠΠ ΠΠΠ¬.ΡΠ½ΡΡΡ() # ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Π²ΠΎΠ΄Π° USER_INP = simpledialog. askstring(title="ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²Π²ΠΎΠ΄Π°", prompt="ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ?:") # Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ ΠΏΠ΅ΡΠ°ΡΡ ("ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅", USER_INP)
1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 | # Import Tkinter ΠΈ Simpledialog ΠΠΌΠΏΠΎΡΡ Tknter As TK ΠΈΠ· Thkinter Import Simpledialog # ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ root = tk.tk () # Define Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ROOT.WITHDRAK. () # ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π΄ΠΈΠ°Π»ΠΎΠ³ Π²Π²ΠΎΠ΄Π° user_inp = simpledialog.askstring (title = "test Test", rample = "ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ ?:") # ΠΠ΅ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° Print (") ΠΡΠΈΠ²Π΅Ρ", USER_INP) |
Π‘ΠΎΡ
ΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ°ΠΉΠ». ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
python3 input_gui.py
ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΠ΅Π΅ Π²Π°ΡΠ΅ ΠΈΠΌΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ OK ΠΈ Cancel ( Π ΠΈΡΡΠ½ΠΎΠΊ 2 ).
Π ΠΈΡΡΠ½ΠΎΠΊ 2: ΠΠ°Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°.
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ OK, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Π½ΠΎΠ΅ Π² ΠΎΠΊΠ½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°.
Π Π²ΠΎΡβ¦ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π½Π° Python. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠ·ΡΠΊ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Python Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
ΠΡΡΠΏΠΏΠ°, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Sketch.ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ WSL
- Π‘ΡΠ°ΡΡΡ
- 4 ΠΌΠΈΠ½ΡΡΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Windows Π΄Π»Ρ Linux (WSL) ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ (X11 ΠΈ Wayland) Π² Windows Π² ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΡΠΎΠ»Π΅.
WSL 2 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅Π±Ρ ΡΠΎΠ΄Π½ΡΠΌΠΈ ΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Windows.
- ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux ΠΈΠ· ΠΌΠ΅Π½Ρ Β«ΠΡΡΠΊΒ» Windows
- ΠΠ°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π·Π°Π΄Π°Ρ Windows
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Alt-Tab Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Linux ΠΈ Windows
- ΠΡΡΠ΅Π·Π°ΡΡ + ΠΡΡΠ°Π²ΠΈΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Windows ΠΈ Linux
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Windows ΠΈ Linux Π² ΡΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅ΡΠΏΠ΅ΡΠ΅Π±ΠΎΠΉΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Linux
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π° Windows 11 Build 22000 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π΄ΡΠ°ΠΉΠ²Π΅Ρ Π΄Π»Ρ vGPU
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΡΠ½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ (vGPU), ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° OpenGL.
- ΠΡΠ°ΠΉΠ²Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Intel Π΄Π»Ρ WSL
- ΠΡΠ°ΠΉΠ²Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° AMD Π΄Π»Ρ WSL
- ΠΡΠ°ΠΉΠ²Π΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° NVIDIA Π΄Π»Ρ WSL
ΠΠΎΠ²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° β Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ WSL
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Windows Π΄Π»Ρ Linux (WSL), Π²Π²Π΅Π΄Ρ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² PowerShell Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Windows, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
wsl --ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ, ΠΈ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΡΠΎ Π±ΡΠ΄ΡΡ Π²Π°ΡΠΈ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Linux Π΄Π»Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Ubuntu.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π½Π° WSL!
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ WSL.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° WSL
ΠΡΠ»ΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ WSL, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Linux, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ.
ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΡΡΠΊ , Π²Π²Π΅Π΄ΠΈΡΠ΅ PowerShell , ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡΡΠΈ Windows PowerShell ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠ°ΠΏΡΡΠΊ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° .
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ WSL:
wsl --ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅
ΠΠ°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ WSL, ΡΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠΏΠΈΠ»ΠΎ Π² ΡΠΈΠ»Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ WSL, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ shutdown Π² PowerShell.
wsl --Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ WSL 2 ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ Linux, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Π΄Π»Ρ WSL 1. Π£Π·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Ρ WSL 1 Π½Π° WSL 2.
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Linux Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Linux, ΡΡΠΎΠ±Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ², ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ Ubuntu, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠ΅ΠΌ apt. ΠΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Linux Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π΅Π³ΠΎ Π² ΠΌΠ΅Π½Ρ Start ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: Ubuntu -> Microsoft Edge
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² WSL Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°. ΠΠ½ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° Windows, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ», ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ WSLg Π½Π° GitHub.
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅
sudo apt update
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Gedit
Gedit β ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ΅Π΄Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° GNOME.
sudo apt ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ gedit -y
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» bashrc Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, Π²Π²Π΅Π΄ΠΈΡΠ΅: gedit ~/.bashrc
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ GIMP
GIMP β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ°ΡΡΡΠΎΠ²ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
sudo apt ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ gimp -y
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅: gimp
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Nautilus
Nautilus, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠ°ΠΊ GNOME Files, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π° GNOME. (ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΡ Windows).
sudo apt ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ nautilus -y
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅: nautilus
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ VLC
VLC β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΠΉ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
sudo apt ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ vlc -y
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅: vlc
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ X11
X11 β ΡΡΠΎ ΠΎΠΊΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Linux, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ xclock, ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ xcalc, xclipboard Π΄Π»Ρ Π²ΡΡΠ΅Π·Π°Π½ΠΈΡ ΠΈ paste, xev Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈ Ρ. Π΄. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ x.org.
sudo apt install x11-apps -y
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
-
xcalc
,xclock
,xeyes
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Google Chrome Π΄Π»Ρ Linux
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Google Chrome Π΄Π»Ρ Linux:
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ:
cd /tmp
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ wget Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ:
sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ:
sudo dpkg -i google-chrome-stable_current_amd64.deb
- ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ:
sudo apt install --fix-broken -y
- ΠΠ°ΡΡΡΠΎΠΉΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ:
sudo dpkg -i google-chrome-stable_current_amd64.deb
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅: google-chrome
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Microsoft Teams Π΄Π»Ρ Linux
Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Microsoft Teams Π΄Π»Ρ Linux:
- ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ:
cd /tmp
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ curl Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°:
sudo curl -L -o ". /teams.deb" "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb"
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ apt Π΄Π»Ρ Π΅Π³ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
sudo apt install ./teams.deb -y
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅: team
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ Microsoft Edge Π΄Π»Ρ Linux
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ Microsoft Edge Π΄Π»Ρ Linux Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ Edge Insider. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π²Π΅Π΄ΠΈΡΠ΅: microsoft-edge
Π£ΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΎΠΊ
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ: ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΈΠΏΠ° Β«Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΠΎΡΠΊΡΡΡΡ Π΄ΠΈΡΠΏΠ»Π΅ΠΉΒ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ WSLg
Git β ΠΊΠ»ΠΈΠ΅Π½ΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ
Git ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ ΡΠΈΠΊΡΠ°ΡΠΈΠΈ (git-gui) ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° (gitk), Π½ΠΎ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ.
ΠΡΠ΅ ΠΠΊΠ½Π° ΠΠ°ΠΊ Π»ΠΈΠ½ΡΠΊΡ ΠΠ½Π΄ΡΠΎΠΈΠ΄ iOS
0 Π»ΠΈΠ½ΡΠΊΡ ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π½ΠΈΠΆΠ΅ β
Π Π°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ» GitHub
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
Π§Π΅ΡΠ΅ΠΏΠ°Ρ Π°Git
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
Git-ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌ: Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
GitKraken
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ / $59+/ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠ°Π³ΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
Π‘ΠΌΠ°ΡΡΠΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ / 59 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠ°ΡΠ½Ρ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac, Windows Π¦Π΅Π½Π°: $69+/ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 30-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
MeGit (Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ EGit)
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: EPL2. 0
ΠΠΎΠ·Π²ΡΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΈΡΠ½ΠΈΠ΅
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: 99 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ / 75 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
GitUp
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
ΠΠΈΠ»ΠΊΠ°
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac, Windows Π¦Π΅Π½Π°: $49,99 (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
GitAhead (Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅)
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
Π³ΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ: Linux, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
Π½Π΅Π³ΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
ΠΠ΅Π³Π»Π΅Ρ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Vim
LazyGit
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
ΠΠΈΡΠ°ΡΠ°
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
ΠΠ°ΡΠΌΠ°Π½Π½ΡΠΉ ΠΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Android Π¦Π΅Π½Π°: 2,49 β¬/$1,99 ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠ½ΠΊΠΎΡΠΏΠΎΠΉΠ½Ρ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ / 20 β¬ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
Π Π°Π±ΠΎΡΠ°Ρ ΠΊΠΎΠΏΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ: iOS Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ / $19,99 ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠΈΡΡΠΎΠΊΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac Π¦Π΅Π½Π°: 39,99 Π΅Π²ΡΠΎ Π·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ / 79,99 Π΅Π²ΡΠΎ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 30-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
Π³ΠΈΡ-ΠΊΠΎΠ»Π°
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
GitUI
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
Ρ ΠΈΡ ΠΈΠΊΠ°ΡΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
ΠΠΎΠ»ΠΎΡΠΎ
ΠΠ»Π°ΡΡΠΎΡΠΌ: Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
SnailGit
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ) / $9,99 ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
RepoZ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
ΠΠΎΠ½Π³
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠΈΡΠΡΠ°ΠΉΠ²
ΠΠ»Π°ΡΡΠΎΡΠΌΡ: iOS Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ / $6,99 ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
GitFiend
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
GitAtomic
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Windows Π¦Π΅Π½Π°: $17,99+/ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 30-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠΈΡΡΠΎΠΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ / 20β¬/ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
GitFinder
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Mac Π¦Π΅Π½Π°: Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ) / 29,95 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 30-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠ΅ΡΡΠ΄
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ / $37/ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π³ΠΎΠ΄ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
GitVine
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠΎΠ»ΠΈΠΠΈΡ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ: iOS Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ (ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ) / 11,99 Π΄ΠΎΠ»Π». Π‘Π¨Π Π² Π³ΠΎΠ΄ / 39,99 Π΄ΠΎΠ»Π». Π‘Π¨Π ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
ΠΠΈΡΠ³ΡΠΈ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
ΠΠΈΡΡΡΠΏ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: MIT
Git-ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
GitViewer
ΠΠ»Π°ΡΡΠΎΡΠΌΡ: Mac, iOS Π¦Π΅Π½Π°: Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ / 6,99 Π΄ΠΎΠ»Π». Π‘Π¨Π (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 7-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
CommandGit
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Windows Π¦Π΅Π½Π°: $5,99/ΠΌΠ΅Ρ (Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ 14-Π΄Π½Π΅Π²Π½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ) ΠΠΈΡΠ΅Π½Π·ΠΈΡ: Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ
Π³ΠΈΡΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: AGPL-3.0 ΠΈΠ»ΠΈ Π²ΡΡΠ΅
ΠΠΈΡΠ½ΡΡΠΎ
ΠΠ»Π°ΡΡΠΎΡΠΌΡ : Linux, Mac, Windows Π¦Π΅Π½Π°: ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΠΈΡΠ΅Π½Π·ΠΈΡ: GNU GPL
ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² Git Wiki.
MATLAB GUI β MATLAB & Simulink
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ (GUI), ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Β«ΡΠΊΠ°ΠΆΠΈ ΠΈ ΡΠ΅Π»ΠΊΠ½ΠΈΒ», ΠΈΠ·Π±Π°Π²Π»ΡΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΡΡΠ°ΡΡ ΡΠ·ΡΠΊ ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² MATLAB, ΡΠ°ΠΊ ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² MATLAB:
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π² ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅ΠΌ ΡΠΎ ΡΡΡΠ΄Π΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ : Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ΅Π΄Ρ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
- Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ: ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π² ΠΊΠΎΠ΄.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ Π² ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Live Editor Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ Π² ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅. ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠΈ, ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ΡΡ ΡΠΏΠΈΡΠΊΠΈ, ΠΏΠΎΠ»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π£ΠΊΠ°ΠΆΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π‘ΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ.
ΠΠΈΠ²ΠΎΠΉ ΡΠΊΡΠΈΠΏΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ live-ΡΠΊΡΠΈΠΏΡΠΎΠΌ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² MATLAB ΠΈΠ»ΠΈ MATLAB Online.
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΠΆΠΈΠ²ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π»ΡΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ App Designer.
Π£Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅
- ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Live Editor (2:15) - ΠΠΈΠ΄Π΅ΠΎ
- ΠΠΈΠ²ΠΎΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ MATLAB - ΠΠ±Π·ΠΎΡ
- ΠΠ°Π»Π΅ΡΠ΅Ρ ΠΆΠΈΠ²ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² - ΠΡΠΈΠΌΠ΅ΡΡ ΠΆΠΈΠ²ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² ΠΎΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ MATLAB Drive - ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
App Designer β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΡΠ΅Π΄Π°, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠ°Ρ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ Π½Π° Ρ ΠΎΠ»ΡΡΠ΅ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ MATLAB.
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² MATLAB Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΡΠΎΠ»Π΅ ΠΈΠ»ΠΈ Π² Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ MATLAB Online. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ App Designer ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ MATLAB Apps. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΌΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ MATLAB, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° MATLAB.
App Designer ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΌΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π£Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅
- ΠΠΈΠ·Π°ΠΉΠ½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ MATLAB - ΠΠ±Π·ΠΎΡ
- ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (4:49) - ΠΠΈΠ΄Π΅ΠΎ
- ΠΠ°Π»Π΅ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² - ΠΠ±Π·ΠΎΡ
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ MATLAB Drive - ΠΠ±Π·ΠΎΡ
- ΠΠ°ΠΊΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² App Designer - ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ: Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° MATLAB (3:58) - ΠΠΈΠ΄Π΅ΠΎ
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ MATLAB Web App
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MATLAB Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΈΠ³ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»ΡΠΆΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΠΊ Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π² MATLAB.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² MATLAB Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΡΠΎΠ»Π΅ ΠΈΠ»ΠΈ Π² Π²Π΅Π±-Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ MATLAB Online. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ MATLAB Apps. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΌΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ MATLAB, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° MATLAB.
Π£Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ uifigure - ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ MATLAB Drive - ΠΠ±Π·ΠΎΡ
- ΠΠ°ΠΊΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² MATLAB
- ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ: Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° MATLAB (3:58) - ΠΠΈΠ΄Π΅ΠΎ
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ MATLAB? (3:35) - ΠΠΈΠ΄Π΅ΠΎ
- ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² MATLAB - Π‘ΡΠ°ΡΡΡ
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ - ΠΠ±ΠΌΠ΅Π½ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² - ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ - ΠΠΎΠ½ΡΠ°Π»ΡΠΈΠ½Π³ΠΎΠ²ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ
- Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ GUIDE ΠΈ App Designer - ΠΠ±Π·ΠΎΡ
- Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΠ³ΡΡ
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ MATLAB Web App
- ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² MATLAB
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅: ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ MATLAB, ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ MATLAB
Stack Builders β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Haskell
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (GUI) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Haskell Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΎΠΉ ΠΊ GTK+. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΡ:
- Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ GTK+
- ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Ρ.ΠΏ.)
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ
- Π ΡΡΠ½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Glade
ΠΠΎΠ³Π΄Π° Π²Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ
ΡΡΠΎΠ±Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅, ΠΏΡΠΎΡΡΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ gtk3
ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ
Π²Π°ΡΠΈ Π·Π°Π΄Π°ΡΠΈ.
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ Π·Π½Π°Π½ΠΈΠΉ Haskell, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΅Π½Ρ
Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ IO
ΠΌΠΎΠ½Π°Π΄Π°. ΠΡΠΈΠ²ΡΠ·ΠΊΠ° GTK+
ΠΎΡΠ΅Π½Ρ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½Π° ΠΈ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΄Π΅. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ
Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ, Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΠΆΠΈΠ·Π½Ρ Π½ΠΎΠ²ΠΈΡΠΊΠ°ΠΌ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Haskell Ρ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΡΠΎΠ½ΠΎΠΌ.
ΠΠΎΡΡΡΠΏΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ GTK+, ΡΠ°Π·ΡΠΌΠ½ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π»ΡΡΡΠ΅Π΅/Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² Haskell:
wx
β ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΊ wxΠ²ΠΈΠ΄ΠΆΠ΅ΡΡ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΠΎΠ² ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ ΠΠ°Ρ ΠΎΠΆΡ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ: 1) Ρ Π½Π΅Π³ΠΎ Π±ΡΠ»ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΏΠ°ΡΡ Π»Π΅Ρ Π½Π΅ Π²ΡΠΏΡΡΠΊΠ°Π»ΠΎΡΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, 2) Π΅Π΅ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅Ρ Π½Π° Stackage. ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ· ΠΏΡΠ½ΠΊΡΠ° 2 - ΠΎΠ½ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ Π°ΡΠΊΠ΅Π»Π»Π΅ΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½ΠΈΠΌ, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ ΡΠΆΠ΅ Π±ΡΠ» Π±Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½.X11
β ΠΏΡΡΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° C ΠΊ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ X11 (ΡΠΈΡΠ°ΡΠ° Π²Π·ΡΡΠ° ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅). Β«ΠΡΡΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Β» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. ΠΠ°, Π² ΠΊΠΎΠ΄Π΅ Haskell. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π°Π²ΡΠΎΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ (Ρ ΠΎΡΡ ΠΏΠΈΠΊΡΠΈ Π½Π΅ ΠΏΡΡΡΡΠ΅ Π»ΠΈΠ±ΠΎ). ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠΏΡΡΠΊ Π±ΡΠ» Π² ΠΌΠ°Π΅ 2014 Π³ΠΎΠ΄Π°.hsqml
β Π₯Π°ΡΠΊΠ΅Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ QT Quick. ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π² Stackage. Π Π΅Π»ΠΈΠ·Ρ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΡΠ°Π· Π² Π³ΠΎΠ΄.ΡΠ»ΡΡΡ Ρ
β Π₯Π°ΡΠΊΠ΅Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ FLTK GUI. ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½ΠΎΠ²ΡΠΌ, ΠΈ Ρ Π»ΠΈΡΠ½ΠΎ Π½Π΅ Π²ΠΈΠΆΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π²ΡΠ³ΠΎΠ΄Ρ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π·ΡΠ΅Π»ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ GTK+, ΡΠΎ Π²ΡΠΎΠ΄Π΅:
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Haskell ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² Π² ΡΠ΅Π»ΠΎΠΌ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π² Π₯Π°ΡΠΊΠ΅Π»Π», ΡΠΌ.:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
Π‘ΠΌ. ΡΡΡ ΡΡΠ°ΡΡΡ Π΄Π»Ρ Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Gtk2Hs. Π Π½Π΅ΠΌ Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ Windows, Linux, Mac ΠΈ FreeBSD.
ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π±ΡΠ»ΠΎ Π²ΡΠ±ΡΠ°Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ GTK+ Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ, ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·ΡΠΌΠ½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΡ ΡΡΠ΅Π±Π½ΠΈΠΊΠ°.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ:
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Control.Monad ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Control.Monad.IO.Class ΠΈΠΌΠΏΠΎΡΡ Data.IORef import Graphics.UI.Gtk ΡΠΊΡΡΡΠΈΠ΅ (Action, Backspace)
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ GTK+ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Ρ. ΠΠ΅ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΆΠΈΠ²Π΅Ρ Π² IO
monad, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΡΠΊΠΎΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ.
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ :: IO () Π³Π»Π°Π²Π½ΠΎΠ΅ = Π΄Π΅Π»Π°ΡΡ ΠΏΡΡΡΠΎΠΉ initGUI -- (1) ΠΎΠΊΠ½ΠΎ <- Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ -- (2) -- (3) ΠΠΊΠ½ΠΎ widgetShowAll -- (4) ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉGUI -- (5)
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ GTK+, ΡΡΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
initGUI
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ°Π²Π»ΠΈΠ²Π°Π΅Ρ GTK+ ΠΊ ΡΠ°Π±ΠΎΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ GTK+, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠ° Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±Π΅ΡΠ½Π΅ΠΌ ΠΈΡ ΡΠ½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½
.ΠΠ°Π»Π΅Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π²Π½ΡΡΡΠΈ ΠΡΠΎ. Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
newWindow
. ΠΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Window
, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠΊΠ½ΠΎ.ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΎΠΊΠ½ΠΎ Β«ΠΊΠ°ΠΊ Π΅ΡΡΡΒ», Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ .
widgetShowAll
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π»ΡΠ±ΡΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ. ΠΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌ Π΅ΠΌΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π²ΠΈΠ΄Π΅Π½ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π΅Π³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ.mainGUI
β ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ». Π¦ΠΈΠΊΠ» ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΠ΅Π»ΡΠΎΠΊ ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΡΡΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ Π½ΠΈΡΡΡ . Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ GTK ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΠ‘. thread (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Haskell). ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄ΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½ΠΎ ΠΊΡΠΎ Π·Π½Π°Π΅Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΉ ΡΠΎΠ²Π΅Ρ: Ρ ΡΠ°Π½ΠΈΡΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ GTK, Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΈ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ β Π΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Ρ GTK+ ΡΠΌ. Π·Π΄Π΅ΡΡ.
ΠΡΠ»ΠΈ ΠΌΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌ ΠΈ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΠ΄Π½Π° Π½Π΅ΠΏΡΠΈΡΡΠ½Π°Ρ Π΄Π΅ΡΠ°Π»Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΠ΅Π»ΡΠΊΠ° ΠΏΠΎ
ΠΠ½ΠΎΠΏΠΊΠ° Β«Π·Π°ΠΊΡΡΡΡΒ» ΠΎΠΊΠ½Π° ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌ, Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» mainGUI
ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΏΠΈΡΡ Π² ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ
ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠΎΡΠΎ.
ΠΡΡΠΈΠ±ΡΡΡ
ΠΡΡΠΈΠ±ΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π°ΡΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΡΡΡ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
set
.ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Glade Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΌΡ ΠΊΠΎΡΠ½Π΅ΠΌΡΡ ΠΏΠΎΠ·ΠΆΠ΅, Π° ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠΌΡΡ
Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ
. Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ°
ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΠΈΠ΄ΠΆΠ΅Ρ [ Π°ΡΡΠΈΠ±ΡΡA := Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅A, Π°ΡΡΠΈΠ±ΡΡB := Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅B, β¦ ]
ΠΠΎΠ΄ΡΠ»ΠΈ GTK ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΡΠΈΠΏΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΠ±ΡΡΠ½ΠΎ
Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π» Β«Π°ΡΡΠΈΠ±ΡΡΡΒ». ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΠΈΡΡ. Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΠΊΠ½ΠΎ
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
-
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°
-
ΠΎΠΊΠΎΠ½Π½ΡΠΉ ΡΠΈΠΏ
-
ΠΎΠΊΠ½ΠΎΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ
β¦ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π° ΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°:
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ :: IO () Π³Π»Π°Π²Π½ΠΎΠ΅ = Π΄Π΅Π»Π°ΡΡ ΠΏΡΡΡΠΎΠΉ initGUI ΠΎΠΊΠ½ΠΎ <- Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΊΠ½ΠΎ [ windowTitle := "ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ" , ΠΎΠΊΠ½ΠΎΠ Π΅ΡΠ°ΠΉΠ·Π΅Π°Π±Π»Π΅ := ΠΠΎΠΆΡ , ΡΠΈΡΠΈΠ½Π° ΠΎΠΊΠ½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: = 230 , Π²ΡΡΠΎΡΠ° ΠΎΠΊΠ½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: = 250] ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΠΎΠΊΠ°Π·Π°ΡΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉGUI
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄Π°ΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΡΠΊΡΡΠ½ΠΎ. Π§ΡΠΎ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΡΡΠΎ ΠΎΠΊΠ½ΠΎ. ΠΡΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ GTK+ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ . ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ β ΡΡΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π²Π½ΡΡΡΠΈ. ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²:
ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ , Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠ» ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ .
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ:
containerAdd parent child
to addchild
widget toparent
widgetcontainerRemove parent child
to removeΠ΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ
Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΈΠ·parent
Π²ΠΈΠ΄ΠΆΠ΅ΡcontainerGetChildren
Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°containerForeach
Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ Π²ΡΠ΅ΠΌΠΈ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
Π‘Π΅ΠΉΡΠ°Ρ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½Π΅ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ΅ΠΊΡΡΠΎΠ²Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ, Π³Π΄Π΅ ΠΌΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ:
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ :: IO () Π³Π»Π°Π²Π½ΠΎΠ΅ = Π΄Π΅Π»Π°ΡΡ β¦ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ <- Π·Π°ΠΏΠΈΡΡΠΠΎΠ²ΡΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ [entryEditable: = False , entryXalign := 1 -- Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ , ΡΠ΅ΠΊΡΡ Π·Π°ΠΏΠΈΡΠΈ := "0" ] β¦
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²ΠΈΠ΄ΠΆΠ΅Ρ Entry
Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠ΅Π», Π½ΠΎ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ
Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΡΠΉ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ. Height β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡ
Π²Π°ΡΡΠ²Π°ΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
-> Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ ()
gridNew
ΠΈ gridSetRowHomogeneous
Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠΉ. gridAttach
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°Π²Π»ΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Π² ΡΠ΅ΡΠΊΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡ ΠΈΡ
ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ-ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°, Π΄Π°Π²Π°ΠΉΡΠ΅
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ:
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ :: IO () Π³Π»Π°Π²Π½ΠΎΠ΅ = Π΄Π΅Π»Π°ΡΡ β¦ ΡΠ΅ΡΠΊΠ° <- gridNew -- (1) gridSetRowHomogeneous grid True -- (2) let attach x y w h item = gridAttach ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΡΠΊΠΈ x y w h -- (3) ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 0 5 1 ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ -- (4) mkBtn "MC" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 1 1 1 -- (5) mkBtn "MR" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 1 1 1 mkBtn "MS" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 2 1 1 1 mkBtn "M+" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 3 1 1 1 mkBtn "Mβ" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 4 1 1 1 mkBtn "β" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 2 1 1 mkBtn "CE" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 2 1 1 mkBtn "C" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 2 2 1 1 mkBtn "Β±" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 3 2 1 1 mkBtn "β" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 4 2 1 1 mkBtn "7" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 3 1 1 mkBtn "8" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 3 1 1 ΠΌΠΊΠΡΠ½"9" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 2 3 1 1 mkBtn "Γ·" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 3 3 1 1 mkBtn "%" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 4 3 1 1 mkBtn "4" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 4 1 1 mkBtn "5" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 4 1 1 mkBtn "6" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 2 4 1 1 mkBtn "*" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 3 4 1 1 mkBtn "1/x" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 4 4 1 1 mkBtn "1" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 5 1 1 mkBtn "2" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 5 1 1 mkBtn "3" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 2 5 1 1 mkBtn "β" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 3 5 1 1 mkBtn "=" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 4 5 1 2 mkBtn "0" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 6 2 1 ΠΌΠΊΠΡΠ½ ". " >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 2 6 1 1 mkBtn "+" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 3 6 1 1 containerΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠΊΡ -- (6) β¦
gridNew
ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΠ΅ΡΠΊΡ.gridSetRowHomogeneous grid ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ True
Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π²ΡΡΠΎΡΡ.ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
attach
. ΠΠ½ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΊ Π½Π°ΡΠ°ΡΠ΅ΡΠΊΠ°
. ΠΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Ρ(>>=)
.ΠΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π½Π΅Π΅ Π΄ΠΈΡΠΏΠ»Π΅ΠΉ
ΡΠ΅ΡΠΊΠ°
. Π’Π°ΠΊ ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π²Π΅ΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΡΠ΄.ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ°
mkBtn
ΠΈΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈΡ Π½Π° ΡΠ΅ΡΠΊΠ΅. Π― ΠΏΠΎΠΊΠ°ΠΆΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅mkBtn
Π² ΠΌΠΎΠΌΠ΅Π½Ρ.Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΠΌΡ ΡΠ΅ΡΠΊΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ Π²
ΠΎΠΊΠ½ΠΎ
, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π±ΡΠ»Π° Π²ΠΈΠ΄Π½Π°. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠΉ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈcontainerAdd
.
mkBtn
- ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ:
mkBtn :: Π‘ΡΡΠΎΠΊΠ° -> ΠΠ½ΠΎΠΏΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠ΅ΡΠΊΠ° mkBtn = ΡΠ΄Π΅Π»Π°ΡΡ btn <- ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΠΎΠ²ΡΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ [ΠΌΠ΅ΡΠΊΠ°_ΠΊΠ½ΠΎΠΏΠΊΠΈ:= ΠΌΠ΅ΡΠΊΠ°] Π²Π΅ΡΠ½ΡΡΡ Π±ΡΠ½
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π΅ Π°ΡΡΠΈΠ±ΡΡΡ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅ΡΠΊΡ) ΠΈ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ.
Π‘ΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠΎΠ±ΡΡΠΈΡ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ. Π ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΎ ΡΠΈΠ³Π½Π°Π»Π°Ρ ΠΈ ΡΠΎΠ±ΡΡΠΈΡ .
Π‘ΠΈΠ³Π½Π°Π» β ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π² ΡΠΎΡΠΌΠ΅. ΠΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠΈΠ³Π½Π°Π»Ρ ΡΠ²ΡΠ·Π°Π½Ρ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠΈΠΌΠ΅Ρ ΡΠΈΠ³Π½Π°Π»Π° ΡΠΎΠΊΡΡ β ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ Π½Π° ΡΠΎΡΠΌΠ΅.
Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΠΈΠ³Π½Π°Π»Π΅, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π½Π°
:
on :: object -> ΠΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ° Signal -> callback -> IO (ΠΎΠ±ΡΠ΅ΠΊΡ ConnectId)
ΠΠ΄Π΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ
ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ²
β ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ
Ρ
ΠΎΡΡ Π²ΡΡΡΡΠΏΠΈΡΡ. Π€ΡΠ½ΠΊΡΠΈΡ Π½Π°
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ConnectId
, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ²Π΅ΡΡ
ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
(ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΏΡΡΠ°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
Π²ΠΈΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²). ΠΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠ³Π½Π°Π»Π° ΠΈ Π΅Π³ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ
ΡΠ΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΈΠ³Π½Π°Π»Π°, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ
ΠΡΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ
ΠΈΠ· System.Glib.Signals
, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ
ΡΡΠΎ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠ³Π½Π°Π» Π΄ΠΈΠΊΡΡΠ΅Ρ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ 9Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° 0062 Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ. Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΈ:
Just
IO ()
: ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΈ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π» Π²Π΅ΡΠ½ΡΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ. ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°:showSignal
.ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ Π·Π°Π΄Π°Π½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ:
a -> IO Bool
. ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π°focus
, ΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏDirectionType -> IO Bool
. ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π²Π΅ΡΡ Π·Π΄Π΅ΡΡ β ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° 9. 0062 ΠΡΠ» . ΠΡΠΎΡ ΡΡΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π² GTK+, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ³Π½Π°Π»Ρ. ΠΡΠ»ΠΈ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌTrue
, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°, Π°False
Π±ΡΠ΄Π΅Ρ Π΄Π΅ΡΠΆΠ°ΡΡ Π΅Π³ΠΎ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡ Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΊ Π§ΡΠΎ ΠΆ.
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·
ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π΄ΠΈΠΊΡΡΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ½Π°Π΄Π΅.
Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ EventM
Π²ΠΌΠ΅ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΠ
. Π‘ΠΈΠ³Π½Π°Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠ°Π²ΡΡΡΡ ΠΈΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ
Π±ΡΡΡ Π² EventM
Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠΎΠ½Π°Π΄Π° EventM
? ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌ ΡΠΈΠΏΠ° ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΎΠ½Π°Π΄Ρ.
ΡΡΠ΅ΠΊ Ρ IO
Π²Π½ΠΈΠ·Ρ:
ΡΠΈΠΏ EventM t = ReaderT (Ptr t) IO
ΠΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΌΠΎΠ½Π°Π΄Π½ΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΈΡΡΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ²Π΅ΡΡ
IO
. t
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ
ΡΠΈΠΏ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π²Π»Π΅ΡΡ, ΠΈ ΠΊΠ°ΠΊΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
Π²Π½ΡΡΡΠΈ EventM
ΠΌΠΎΠ½Π°Π΄Π°. ΠΠ½ΠΈ ΡΠ°Π·Π½ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, configureEvent
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΎΠΊΠ½Π°, Π° Π‘ΠΎΠ±ΡΡΠΈΠ΅ keyPressEvent
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠ»ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ»
Π½Π°ΠΆΠ°ΡΠ°, ΠΊΠ°ΠΊΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ°-ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π±ΡΠ»Π° Π½Π°ΠΆΠ°ΡΠ° Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ΠΈΠΏ
ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΈ
Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ.
Π― Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΡΠΎΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ Π²Π°ΠΆΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ
True
, Π΅ΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ ΠΈΠ»ΠΈFalse
, Π΅ΡΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡFalse
, Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΠ° Π½Π΅ ΠΈΠ· ΡΠ΅Ρ , Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅Ρ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌ. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π½Π°ΠΆΠ°ΡΠΈΠ΅, ΡΠΊΠ°ΠΆΠ΅ΠΌ,Alt-F
ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΉΠ»Π°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΎΠΊΡΡ Π²Π²ΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ°. ΠΠ»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΡ, ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ
. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡFalse
. ΠΡΠ»ΠΈ signal ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°, ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡTrue
.
ΠΠ½Π°Ρ Π²ΡΠ΅ ΡΡΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
ΠΠ»ΡΠ΄Ρ Π½Π° ΡΠ°Π·Π΄Π΅Π» Β«ΡΠΈΠ³Π½Π°Π»ΡΒ» Π² Graphics.UI.Gtk.Buttons.Button
, buttonActivated
Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ Π½Π°Ρ Π΄ΡΡΠ³ Π·Π΄Π΅ΡΡ:
-- | ΠΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π±ΡΠ»Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° (Π½Π°ΠΆΠ°ΡΠ° ΠΈ ΠΎΡΠΏΡΡΠ΅Π½Π°). buttonActivated::ButtonClass self => Signal self (IO())
ΠΡΠΎΡΡΠΎ Π΄Π»Ρ ΡΠ΅ΡΡΠ°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ mkBtn
, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ
Π΄ΠΈΡΠΏΠ»Π΅ΠΉ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ (Π²ΡΠ΅Π³ΠΎ ΠΌΡ Π΅ΡΠ΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ
ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ):
mkBtn :: Π‘ΡΡΠΎΠΊΠ° -> ΠΡ ΠΎΠ΄ -> ΠΠ½ΠΎΠΏΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΊΠΈ mkBtn = ΡΠ΄Π΅Π»Π°ΡΡ btn <- ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΠΎΠ²ΡΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ [ΠΌΠ΅ΡΠΊΠ°_ΠΊΠ½ΠΎΠΏΠΊΠΈ:= ΠΌΠ΅ΡΠΊΠ°] btn ΠΊΠ½ΠΎΠΏΠΊΠ° `on` Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° $ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ [entryText := label] Π²Π΅ΡΠ½ΡΡΡ Π±ΡΠ½
Π Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
Π½Π° mkBtn
Π²ΠΎΡ ΡΠ°ΠΊ:
β¦ mkBtn ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ "MC" >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 1 1 1 mkBtn "MR" Π΄ΠΈΡΠΏΠ»Π΅ΠΉ >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 1 1 1 β¦
ΠΡΠ΅ ΠΎΠ΄Π½Π° Π²Π΅ΡΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ
Π·Π°ΡΠ²Π»Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ mainQuit
:
-- | ΠΡΡ ΠΎΠ΄ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠΎΠ±ΡΡΠΈΠΉ. mainQuit::IO()
ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, ΡΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ mainQuit
ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΎΠΊΠ½Π°
. Π‘ΠΎΠ±ΡΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈΡΠ΅ΠΌ,
ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠ» ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅
:
-- | Π‘ΠΈΠ³Π½Π°Π» deleteEvent Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ, ΡΡΠΎΠ±Ρ -- ΠΎΠΊΠ½ΠΎ Π·Π°ΠΊΡΡΡΠΎ. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ ΠΎΠΊΠ½ΠΎ. -- ΠΡΠ·ΠΎΠ² 'widgetHide' ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ 'True' ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° -- Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΊΡΡΡΡ ΠΎΠΊΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ½ΠΎΠ²Π° -- Π±Π΅Π· ΡΠ΅ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. deleteEvent :: WidgetClass self => Signal self (EventM EAny Bool)
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠΈΠΌ Π΅Π³ΠΎ Π·Π°ΠΊΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ:
β¦ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΊΠΎΠ½Π½ΡΡ ΡΠ΅ΡΠΊΡ window `on` deleteEvent $ do -- ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΉ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΊΠ½Π° liftIO mainΠΡΡ ΠΎΠ΄ Π²Π΅ΡΠ½ΡΡΡ Π»ΠΎΠΆΡ ΠΎΠΊΠ½ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΠΎΠΊΠ°Π·Π°ΡΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉGUI
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ deleteEvent
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΡΠ΅Ρ ΡΠΈΠΏ EventM
Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³Π° ΡΡΠΎΠ²Π½Ρ ΡΠΈΠΏΠ° EAny
. ΠΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅:
-- | Π’Π΅Π³ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ, Π½Π΅ Π½Π΅ΡΡΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΉΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ. Π΄Π°Π½Π½ΡΠ΅ EAny
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ±ΡΡΠΈΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π΄Π°
ΡΠΎΠ±ΡΡΠΈΠ΅ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ ( Π²ΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ
). Π‘ΠΌ. ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΠ² Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Accessor
ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠ±ΡΡΠΈΡΡ
Β» ΡΠ°Π·Π΄Π΅Π»Π° Graphics.UI.Gtk.Gdk.EventM
.
ΠΌΠΎΠ΄ΡΠ»Ρ.
Π― ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π΄Π»Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
IORef
s Π΄Π»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΠ½ΠΎΠΏΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°Ρ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ (ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ) Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²ΠΎ.
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ GTK+ Π½Π΅ Π΄Π°Π»ΠΈ Π½Π°ΠΌ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
ΡΠΈΠΏ ΠΌΠΎΠ½Π°Π΄Ρ-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½: ΡΡΠΎ Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ IO
, Π»ΠΈΠ±ΠΎ EventM
, ΠΊΠΎΡΠΎΡΡΠΉ,
ΠΊΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ReaderT (Ptr t) IO
. ΠΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡ
Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ
ΠΌΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΡΠ»ΠΊΠΈ.
ΠΡΡΡ Π΄Π²Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ°:
TVar
s, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΈΠ·Π»ΠΈΡΠ½ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅
Ρ
ΠΎΡΠΎΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TVar
s Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈΡ
Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ
Π½Π΅ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½ΠΎ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΡΡΠΎΠΈΡΡ Ρ
ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π² Π²ΠΈΠ΄Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°. Π Π²ΠΎΡ IORef
s ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ
Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ atomicModifyIORef
.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠ°ΠΊ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅Π°Π»ΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ΅ΠΉ Π³Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π² ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅, ΠΌΡ ΠΏΠΎΠΉΠ΄Π΅ΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΏΡΡΠ΅ΠΌ.
-- | Β«ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅Β» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈ -- "ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅" ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ Π½Π΅ΠΌΡ, ΡΠΌ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ = Π‘ΡΡΠΎΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) -- | ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ -- Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠ½ΡΡ (Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ). Π΄Π°Π½Π½ΡΠ΅ ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ = Π‘ΡΡΠΎΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ | Π‘ΡΡΠΎΠΊΠ° Π²ΡΡΠΈΡΠ°Π½ΠΈΡ | Π‘ΡΡΠΎΠΊΠ° ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ | Π‘ΡΡΠΎΠΊΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅
- ΡΡΠΎ Π½Π°ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΎΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°
ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½Π°Π΄ Π½ΠΈΠΌ. String
s, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΌΠ΅Π½ΡΡΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ Π±ΡΡΡΡΠ΅Π΅
ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ/ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ. ΠΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ
ΡΡΡΠΎΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΈΡ
Π² Double
s.
ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΠ°ΡΠ° Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΎΡ ΠΎΠ½ΠΈ:
-- | ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π²Π½ΡΡΡΠΈ Β«ΠΠ΅ΠΉΡΡΠ²ΠΈΡΒ». mapAction :: (Π‘ΡΡΠΎΠΊΠ° -> Π‘ΡΡΠΎΠΊΠ°) -> ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ -> ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ mapAction f (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ x) = Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (f x) mapAction f (Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ x) = Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ (f x) mapAction f (ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ x) = ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ (f x) mapAction f (Π Π°Π·Π΄Π΅Π» x) = Π Π°Π·Π΄Π΅Π» (f x) -- | ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΡ Β«ΠΠ΅ΠΉΡΡΠ²ΠΈΡΒ». getSndArg :: ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ -> Π‘ΡΡΠΎΠΊΠ° getSndArg (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ x) = x getSndArg (Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ Ρ ) = Ρ getSndArg (Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ) = Ρ getSndArg (ΠΠ΅Π»Π΅Π½ΠΈΠ΅ x) = x -- | ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Β«ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅Β». renderValue :: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> Π‘ΡΡΠΎΠΊΠ° renderValue (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = g x ++ f a ++ (Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null y, ΡΠΎ "", ΠΈΠ½Π°ΡΠ΅ g y) ΠΊΡΠ΄Π° (Π°, Ρ) = ΠΈΡΠΊ ΠΏΠΎ Π΄Π΅Π»Ρ ΠΠΈΡΠ΅Π³ΠΎ -> ("", "") ΠΡΠΎΡΡΠΎ (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ arg) -> ("+", arg) ΠΡΠΎΡΡΠΎ (Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ) -> ("β", Π°ΡΠ³ΡΠΌΠ΅Π½Ρ) ΠΡΠΎΡΡΠΎ (Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ) -> ("*", Π°ΡΠ³ΡΠΌΠ΅Π½Ρ) Just (ΠΠ΅Π»Π΅Π½ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ) -> ("Γ·", Π°ΡΠ³ΡΠΌΠ΅Π½Ρ) Ρ "" = "" ΠΆ Π» = " " ++ Π» ++ " " Π³ "" = "0" Π³ Ρ Π· = ΡΠ΅Π²Π΅ΡΡ Ρ Π·
ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π² ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅
, Π° renderValue
Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°. ΠΠΌΠ΅Ρ renderValue
, Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ»Π°
Π΄ΠΈΡΠΏΠ»Π΅ΠΉ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°:
-- | Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π° Π΄ΠΈΡΠΏΠ»Π΅Π΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΎΡΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Β«ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅Β». updateDisplay::Entry -> Value -> IO() ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ updateDisplay = ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ [entryText:= Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ renderValue]
ΠΠ°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ 9Π Π΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΠ΅ΡΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ mkButton st mutateState = do btn <- ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΠΎΠ²ΡΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ [ΠΌΠ΅ΡΠΊΠ°_ΠΊΠ½ΠΎΠΏΠΊΠΈ:= ΠΌΠ΅ΡΠΊΠ°] btn `on` buttonActivated $ do -- (1) value <- atomicModifyIORef st $ \x -> let r = mutateState x in (r, r) -- (2) ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ updateDisplay -- (3) Π²Π΅ΡΠ½ΡΡΡ Π±ΡΠ½
ΠΠ°ΠΊ ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ.
atomicModifyIORef
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π΄Π°Π½Π½ΡΠΉIORef
Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ. ΠΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ, ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ β ΡΡΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π²IORef
, Π²ΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΠ°Π²Π½Ρ.ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ
updateDisplay
, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ mkBtn
Π² main
:
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ :: IO () Π³Π»Π°Π²Π½ΠΎΠ΅ = Π΄Π΅Π»Π°ΡΡ st <- newIORef (Value "" ΠΠΈΡΠ΅Π³ΠΎ) -- (1) ΠΏΡΡΡΠΎΠΉ initGUI ΠΎΠΊΠ½ΠΎ <- Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΠΊΠ½ΠΎ [ windowTitle := "ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ" , ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π° := ΠΠΎΠΆΡ , ΡΠΈΡΠΈΠ½Π° ΠΎΠΊΠ½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: = 230 , Π²ΡΡΠΎΡΠ° ΠΎΠΊΠ½Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ: = 250] ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ <- Π·Π°ΠΏΠΈΡΡΠΠΎΠ²ΡΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ [entryEditable: = False , entryXalign := 1 -- Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ , ΡΠ΅ΠΊΡΡ Π·Π°ΠΏΠΈΡΠΈ := "0" ] ΡΠ΅ΡΠΊΠ° <- ΡΠ΅ΡΠΊΠ°ΠΠΎΠ²Π°Ρ gridSetRowHomogeneous grid True ΠΏΡΡΡΡ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡ x y w h item = gridAttach ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΡΠΊΠΈ x y w h mkBtn = Π΄ΠΈΡΠΏΠ»Π΅ΠΉ mkButton st -- (2) ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 0 5 1 ΠΏΠΎΠΊΠ°Π·Π°ΡΡ mkBtn "MC" id >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 0 1 1 1 -- (3) mkBtn "MR" id >>= ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ 1 1 1 1 β¦
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ
IORef
, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠ°ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "" ΠΠΈΡΠ΅Π³ΠΎ.
- Π΅Π³ΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
mkBtn
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ°Π½Π΅Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉmkButton
ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ Π½Π°Ρ ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡst
ΠΈΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
ΡΠ½ΠΎΠ²Π° ΠΈ ΡΠ½ΠΎΠ²Π°.ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
mkBtn
. ΠΡΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈid
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΄Π»Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΆΠ΅ Π½Π° ΠΌΠ΅ΡΡΠ΅.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ, β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΠ΄Π΅ΡΡ Ρ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ :
-- | ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π±ΡΠ»Π° Π²Π²Π΅Π΄Π΅Π½Π° ΡΠΎΡΠΊΠ°. enterDot :: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ enterDot (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = ΠΏΡΡΡΡ f xs = Π΅ΡΠ»ΠΈ '.' `elem` xs, Π·Π°ΡΠ΅ΠΌ xs Π΅ΡΠ΅ '.' : Ρ Π· Π² ΡΠ»ΡΡΠ°Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΠΈΡΠ΅Π³ΠΎ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (f x) ΠΠΈΡΠ΅Π³ΠΎ Just a -> Value x (ΠΡΠΎΡΡΠΎ $ mapAction f a) -- | ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» (ΡΠΈΡΡΠ°). enterDigit::Char -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ enterDigit ch (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = ΠΈΡΠΊ ΠΏΠΎ Π΄Π΅Π»Ρ ΠΠΈΡΠ΅Π³ΠΎ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (ch:x) ΠΠΈΡΠ΅Π³ΠΎ ΠΡΠΎΡΡΠΎ a -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ x (ΠΡΠΎΡΡΠΎ $ mapAction (ch:) a) -- | ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π±ΡΠ» ΡΠ΄Π°Π»Π΅Π½. backspace :: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ backspace (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = ΠΈΡΠΊ ΠΏΠΎ Π΄Π΅Π»Ρ ΠΠΈΡΠ΅Π³ΠΎ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ (Π²ΡΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ 1 x) ΠΠΈΡΠ΅Π³ΠΎ Just a -> Value x (Just $mapAction (drop 1) a) -- | ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ -- ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ. ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ :: (Π‘ΡΡΠΎΠΊΠ° -> ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅) -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° = ΠΏΡΡΡΡ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = ΡΠ°Π²Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ x $ ΠΡΠΎΡΡΠΎ $ ΠΈΡΠΊ ΠΏΠΎ Π΄Π΅Π»Ρ ΠΠΈΡΠ΅Π³ΠΎ -> ΠΎΠΏ "" ΠΡΠΎΡΡΠΎ -> op (getSndArg a) -- | ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΡΠ» ΡΠ΄Π°Π»Π΅Π½. clearEntry :: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ clearEntry (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = ΠΈΡΠΊ ΠΏΠΎ Π΄Π΅Π»Ρ ΠΠΈΡΠ΅Π³ΠΎ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "" ΠΠΈΡΠ΅Π³ΠΎ ΠΡΠΎΡΡΠΎ -> Π΅ΡΠ»ΠΈ Π½ΠΎΠ»Ρ (getSndArg Π°) Π·Π°ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ "" ΠΠΈΡΠ΅Π³ΠΎ else ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ x (ΠΡΠΎΡΡΠΎ $ mapAction (const "") a) -- | ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π²Π΅ΡΠ½ΡΠ² Π΅Π³ΠΎ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. clearAll :: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ clearAll = const (ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ "" ΠΠΈΡΠ΅Π³ΠΎ) -- | ΠΡΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ°, ΠΏΠΎΡΡΠ°Π²ΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ -- Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΡΠ°Π²Π½ΠΎ :: ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅) = ΠΈΡΠΊ ΠΏΠΎ Π΄Π΅Π»Ρ ΠΠΈΡΠ΅Π³ΠΎ -> ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΠΈΡΠ΅Π³ΠΎ ΠΡΠΎΡΡΠΎ -> Π΅ΡΠ»ΠΈ Π½ΠΎΠ»Ρ (getSndArg Π°) Π·Π°ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ else ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΠΈΡΠ΅Π³ΠΎ ΠΊΡΠ΄Π° g :: Π‘ΡΡΠΎΠΊΠ° -> ΠΠ²ΠΎΠΉΠ½ΠΎΠΉ Π³ "" = 0 Π³ ('.':xs) = Π³ ('0':'.':xs) g xs = ΡΠΈΡΠ°ΡΡ (ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ xs) Ρ ' = Π³ Ρ Ρ' = Π³ (getSndArg Π°) ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ = ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ. ΠΏΠΎΠΊΠ°Π·Π°ΡΡ $ ΡΠ»ΡΡΠ°ΠΉ Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ _ -> Ρ ' + Ρ' ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ _ -> Ρ ' - Ρ' Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ _ -> Ρ ' * Ρ' ΠΠ΅Π»Π΅Π½ΠΈΠ΅ _ -> Ρ '/Ρ'
ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½, Π½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ, Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Glade Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΡΡΠ½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΡΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ Π΅ΡΠ΅ Ρ ΡΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π²Π°ΡΠΈ ΡΠΎΡΠΌΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ. Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ, Ρ Π΄ΡΠΌΠ°Ρ, ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠ»Ρ Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ GTK+ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Glade.
Glade ΠΏΡΠΎΡΡ Π² ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ Π²ΠΈΠ΄Π΅ΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌΠΈ: ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΊΠ½ΠΎ), ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ½ΠΎΠΏΠΊΠΈ).
ΠΠΎΡ ΠΏΠ»Π°Π½ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Glade:
ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΠΊΠ½Π° Π½Π° ΡΠ°ΠΌΠΎΠΉ Π²Π΅ΡΡ Π½Π΅ΠΉ ΠΏΠ°Π»ΠΈΡΡΠ΅, ΠΈ ΠΎΠΊΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π·ΠΎΠ½Π°.
ΠΠ²Π΅Π΄ΠΈΡΠ΅ Β«ΠΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΒ» Π² ΠΏΠΎΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ Β«IDΒ» ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°, Π²ΠΎΡ ΠΊΠ°ΠΊ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°ΠΌ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ Π² ΠΊΠΎΠ΄Π΅ Haskell.
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠΊΡ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ
ΡΠ΅ΡΠΊΠ°
. ΠΠ° Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΎΠΊ ΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π²ΡΠ±Π΅ΡΠΈΡΠ΅ 7 Γ 5. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ»Π°ΠΆΠΎΠΊ Β«ΠΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠΉΒ» ΠΏΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Β«Π‘ΡΡΠΎΠΊΠΈΒ».ΠΡΡΠ°Π²ΡΡΠ΅ Π·Π°ΠΏΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Β«ΠΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈΒ» Π½Π° Π²Π΅ΡΡ Π½ΡΡ ΠΏΠ°Π½Π΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π·Π°Π½ΠΈΠΌΠ°Π»Π° Π²ΡΡ Π²Π΅ΡΡ Π½ΡΡ ΡΡΡΠΎΠΊΡ.
ΠΡΡΠ°Π²ΡΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ Π½Π°ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ Π΄ΠΈΠ·Π°ΠΉΠ½Ρ.
(ΠΠΎΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.)
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°: ΠΏΠΎΠ»Π½Π°Ρ ΡΠΎΡΠΌΠ° Glade Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ Π£ΡΠ΅Π±Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Stack Builders.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΡ Π² ΠΊΠΎΠ΄Π΅ Haskell, Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Builder
, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΠΎΠ΄ΡΠ»Ρ Graphics.UI.Gtk.Builder
. ΠΠ±ΡΠ΅ΠΊΡ Builder
ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² XML Π½Π° Π»Π΅ΡΡ.
ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:
β¦ ΡΡΡΠΎΠΈΡΠ΅Π»Ρ <- ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΠΎΠ²ΡΠΉ -- (1) builderAddFromFile ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»Ρ "calc. glade" -- (2) btn0 <- builderGetObject ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»Ρ castToButton "btn_0" -- (3) β¦
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ Π±ΠΈΠ»Π΄Π΅Ρ.
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² Π½Π΅Π³ΠΎ Π½Π°ΡΡ ΡΠΎΡΠΌΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°. ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΠΊΡΡΠ° ΡΠΎΡΠΌΡ (
String
,Text
) ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌ Π΄Π»Ρ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.Π’Π΅ΠΏΠ΅ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π·Π½Π°Ρ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π΄Π΅ΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π²ΠΎΠ΄ΠΈΡ Π½ΡΠ»ΠΈ, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
"btn_0"
Π² ΠΌΠΎΠ΅ΠΉ ΡΠΎΡΠΌΠ΅.castToButton
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π΅Π³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΎΡΠΌΡ. ΠΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎcastToSomething
ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π½Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π΅ΡΡΡcastToWindow
Π΄Π»Ρ ΠΎΠΊΠΎΠ½).
ΠΠ°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π»Π΅Π³ΠΊΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π²ΡΡΡΠ½ΡΡ ΡΠΎΡΠΌΠΎΠΉ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΠ΅ΡΠ»Ρ.