
рдЕрджреНрднреБрдд рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рдХрд╛рд░реНрдпрд╛рддреНрдордХ-рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдиреА рдХреА рдирд┐рд░рдВрддрд░рддрд╛ред
рд▓реЗрдЦ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧредрдЬреАрдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд░реАрдХреЗ
рдЬреАрдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рдХрд╛ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рджреЛ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░реАрди рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдВ рдФрд░ рдлрд┐рд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
- рдРрд╕реЗ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ
рдкрд╣рд▓реЗ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдЕрд╕реНрдерд┐рд░рддрд╛ рд╣реИрдВ, рдпрд╣ рдлрд╝реЙрд░реНрдо рдкрд░ рдмрдЯрдиреЛрдВ рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рджреНрд╡рд╛рд░рд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ - рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдбреНрд░реЙрдк рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рд╡реЗ рдЬреАрдпреВрдЖрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдлрд╝реЙрдиреНрдЯ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ - рдлрд┐рд░ рд╕реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░ рдЬрд╛рдПрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрдЧрд▓реЗ рд╕рд░реНрд╡рд┐рд╕ рдкреИрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднреА рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЙрд╕рдиреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдореЗрд░рд╛ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрдпреВрдЖрдИ рдХрд╛ рддрд░реНрдХ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдордЬрд╛рдХ рд╣реИред
рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ - рдкрд░реАрдХреНрд╖рдг рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдФрд░ рдХрдард┐рди рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡реЗ рдЕрдХреНрд╕рд░ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЧреИрд░-рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ред рдкреИрд░реЛрдВ рдХреЗ рд░реИрдкрд░ рдЗрд╕ рддрд░рд╣:
ActivateWindow("Unsaved Document 1 - gedit") SetEdit(5, "5") ClickButton("Save") Wait(10) VerifyLabel(2, 10)
рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЕрдВрджрд╛рдЬрд╛ рди рджреЗрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рдмрдВрдз рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕ рдмрдЯрди рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рд▓реЗрдмрд▓ рдиреЗ рдЗрд╕рдХрд╛ рдорд╛рди рдмрджрд▓ рджрд┐рдпрд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрджрд▓ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо API рд╡рд┐рдЬреЗрдЯ рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рддрдХ рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдорд╛рдирдХ рд╡рд┐рдЬреЗрдЯ рд╣реИ, рддреЛ рднреА рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЬреАрдпреВрдЖрдИ рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╕рд╛рди рд╣реИ, рд╣рдо рддрддреНрд╡реЛрдВ рдХреЗ рдЪрд┐рддреНрд░рдордп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдПрдХ рдЕрдЪреНрдЫреЗ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдЖрдк рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рдЧреИрд░-рд╕рдордХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдо рд╕рдорд╕реНрдпрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ URL рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреГрд╖реНрда рдиреЗ рд▓реЛрдб рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?
рдЖрдк рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкреЗрдЬ рдФрд╕рддрди 5 рд╕реЗрдХрдВрдб рдореЗрдВ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ "рдирд┐рд╖реНрдард╛" рдХреЗ рд▓рд┐рдП 5 рдмрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдордВрджреА рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдХреГрддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рдЧреБрдкреНрдд рд╡рд┐рдЧреЗрдЯреНрд╕ рдкрд░ "рддреЗрдЬ" рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдерд┐рддрд┐ рд▓реЗрддреЗ рд╣реИрдВ, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЕрдкрдардиреАрдп рдФрд░ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реИ?
рд╡рд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдмрд╛рдж рдореЗрдВ, рдЬреАрдпреВрдЖрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдПрдХреНрд╕реЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ "рд▓рдкреЗрдЯрддрд╛ рд╣реИ", рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдореЗрдВ рдХреЛрдб рдХреА рдПрдХ рднреА рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рдмрджрд▓рдиреА рд╣реЛрдЧреАред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдЬрдм рдкрд░реАрдХреНрд╖рдг - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдФрд░ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
рддреЛ, рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ:
- рд╣рдо рдлрд╛рд░реНрдо рдФрд░ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрдерд╛рди рд╕реЗ рд╕рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдкрд░ рдмрдЯрди рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд░реВрдк рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд▓реЗрдмрд▓ рдорд╛рди рдмрджрд▓ рдЧрдП рд╣реИрдВ, рддреЛ рдкреНрд░рдкрддреНрд░ рдореЗрдВ рдХреЛрдИ рднреА рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝реЗрдВрдЧреЗред
- рд╣рдо рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдХреЛрдИ рднреА WinApi рдЖрдкрдХреЛ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ рдЬреЛ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдмрдирд╛рддрд╛ рд╣реИред
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдИрд╡реЗрдВрдЯ рдЬреИрд╕реА рдПрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреЗрд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдпрджреНрдпрдкрд┐ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреА рд╣реИ, рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдмрд╛рдж рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдЙрд╕ рдХреЛрдб рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ StoryText рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рдЗрд╕ рддрдереНрдп рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЖрд╡реЗрджрди рд╕реЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛ред рд╡рд╣ рд╕рдм рд╣реИ! рдХреЛрдИ рдЯрд╛рдЗрдордЖрдЙрдЯ, рдХреЛрдИ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╡рд┐рдЬреЗрдЯ рдФрд░ рдЕрдиреНрдп рд╡рд┐рдХреГрддрд┐рдпрд╛рдБ рдирд╣реАрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рддреЗрдЬрд╝ рд╣реИ
- рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рднреА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдмреБрд░реА рддрд░рд╣ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдмрдЯрди рдХреА рдЦреЛрдЬ рдирд╣реАрдВ рдХрд░рдиреА рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реИ, рдлрд┐рд░ рдЖрдкрдХреЛ рдмрджрд▓реЗ рд╣реБрдП рддрддреНрд╡реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдореБрдЦрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рдЙрди рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЬреАрдпреВрдЖрдИ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдФрд░ рдмрдЪрд╛рддрд╛ рд╣реИ, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдпрд╣ рдПрдХ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдорд╛рдирд╡ рдореЗрдВ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ рдкрдардиреАрдп рд░реВрдкред
- рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреАред рдкрд╣рд▓рд╛ рдкрд░реАрдХреНрд╖рдг рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, StoryText рдШрдЯрд┐рдд рд╣реБрдИ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦреЗрдЧрд╛:
entry_in = FindEditByName("entry_in") SetValueForEdit(entry_in, 5) calc_async = FindButtonByName("calc_async") SendEvent(calc_async, <Enter>) SendEvent(calc_async, <Button-1>) SendEvent(calc_async, <ButtonRelease-1>) WaitEvent("data to be loaded") exit = FindButtonByName("exit") SendEvent(exit, <Enter>) SendEvent(exit, <Button-1>) SendEvent(exit, <ButtonRelease-1>)
рдХрд┐ рдереЛрдбрд╝рд╛ рдЕрдЪреНрдЫрд╛ рд╕рд╣рдордд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣:
enter_data 5 run_calc_async wait for data to be loaded exit_from_form
рдЬрд╣рд╛рдБ enter_data, run_calc_async рдФрд░ exit_from_form рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╣реИрдВ, рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рджрд░реНрдЬ рдХрд┐рдП (рдЙрдкрдирд╛рдо рдорд╛рди - рдЖрдк рд╣рдореЗрд╢рд╛ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ)
рд╕рд╣рдордд рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ - рдЕрджреНрднреБрдд, рдкрд░реАрдХреНрд╖рдг рдЖрд╕рд╛рдиреА рд╕реЗ, рдЖрд╕рд╛рдиреА рд╕реЗ, рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рд▓реЗрдЦрдХ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, GUI рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп gtk рд╣реИ, рдмрд╛рдХреА рдХреБрдЫ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдореЛрдб рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдЪреМрдерд╛ рдЙрджрд╛рд╣рд░рдгред Tkinter рдкрд░ рдПрдХ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ GUI рдХрд╛ рдкрд░реАрдХреНрд╖рдг
рдкрд░реАрдХреНрд╖рдг TestGUI рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ред рд╡рд░реНрдЧ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд░реВрдк рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдПрдХ рдореВрд▓реНрдп рджрд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдФрд░ OnCalcSync рдпрд╛ OnCalcAsync рдмрдЯрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджрдмрд╛рдПрдВ, рдкрд╣рд▓рд╛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рджреЛ рд╕реЗ рдЧреБрдгрд╛ рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рджреВрд╕рд░рд╛ 10 рд╕реЗрдХрдВрдб рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рд╛рдВ, рдФрд░ рдореИрдВ рд░реВрдк рдХреА рднрдпрд╛рдирдХ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рдХрдХреНрд╖рд╛ TestGUI class TestGUI: def __init__(self, root): self.root = root frame1 = Tkinter.Frame(self.root) frame1.pack(fill="both") frame2 = Tkinter.Frame(self.root) frame2.pack(fill="both") frame3 = Tkinter.Frame(self.root) frame3.pack(fill="both") frame4 = Tkinter.Frame(self.root) frame4.pack(fill="both") Tkinter.Label(frame1, text="Input:").pack(side="left") self.var_in = Tkinter.StringVar(value="") Tkinter.Entry(frame1, name="entry_in", textvariable=self.var_in).pack() Tkinter.Label(frame2, text="Output:").pack(side="left") self.label_out = Tkinter.Label(frame2, name="label_out") self.label_out.pack(side="left") Tkinter.Button(frame3, name="entry_calc_sync", text="OnCalcSync", width=15, command=self.on_press_sync).pack(side="left") Tkinter.Button(frame4, name="entry_calc_async", text="OnCalcAsync", width=15, command=self.on_press_async).pack(side="left") Tkinter.Button(frame4, name="entry_exit", text="OnExit", width=15, command=self.on_exit).pack(side="left") self.root.title("Hello World!") self.root.mainloop() def _calc(self): try: return str(int(self.var_in.get()) * 2) except: return "error input" def on_press_sync(self): self.label_out["text"] = self._calc() def _operation_finish(self): storytext.applicationEvent('data to be loaded') self.label_out["text"] = self._calc() def on_press_async(self): self.root.after(10 * 1000, self._operation_finish) def on_exit(self): self.root.destroy()
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, tkinter_ex рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдк рдЗрд╕реЗ
рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ рдФрд░ рдЗрд╕реЗ test.py рдХреЗ рдЖрдЧреЗ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЙрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ tkinter рд╕рдорд░реНрдерди рдЕрднреА рднреА "рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдФрд░ Tkinter рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╕рдорд░реНрдерди рд╣реИ" рдЬреИрд╕рд╛ рдХрд┐ рд▓реЗрдЦрдХ рдЦреБрдж рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЯрд┐рдВрдХрд░ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ рд▓реЗрдмрд▓ рд╡рд░реНрдЧ рдореЗрдВ рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕рдорд░реНрде рд╣реИ, рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирдХ Tkinter.Label рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореВрд▓ рдирд╛рдо рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛ рд▓реЗрдмрд▓ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ" рдФрд░ "__setitem__" рд╣рдо рдЗрд╕ рддрд░рд╣ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ: "рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрд┐рдд рдкрд╛рда '% s' ( % s рдкрд░ рд╕реЗрдЯ) рдкрд╛рдпрдерди рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреЛрдб рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ
рддреЛ, рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ: рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг-рд╕реВрдЯ рдЬреЛрдбрд╝реЗрдВ "Suite_GUI" рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЗрд╕реЗ "Test_GUI_Sync" рдкреИрд░рд╛рдореАрдЯрд░ "gui" рдХреЗ рд╕рд╛рде рдХрд░реЗрдВред simpletests \ config.cfg рдореЗрдВ рд╣рдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо tkinter рдХреЗ рдЖрдзрд╛рд░ рдкрд░ GUI рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ
рдореИрдВ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рджреВрдВрдЧрд╛: "virtual_display_count", рдпрд╣ рдХреЗрд╡рд▓ UNIX рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрдкрдХреЛ Xvfb рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг, рдпрджрд┐ рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ StoryText рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдкреНрд▓реЗ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ Xvfb рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ 0 рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдИрдбреАрдИ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдореЗрдиреВ рдореЗрдВ "Test_GUI_Sync" рдЖрдЗрдЯрдо "рд░рд┐рдХреЙрд░реНрдб рдЙрдкрдпреЛрдЧ-рдХреЗрд╕" рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЪрд▓рд╛рдПрдВ, рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рдХреБрдЫ рднреА рди рдмрджрд▓реЗрдВред рд╣рдорд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ:

рдЗрд╕рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, "рдЗрдирдкреБрдЯ" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдорд╛рди рджрд░реНрдЬ рдХрд░реЗрдВ, "OnCalcSync" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ "рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, StoryText рд╣рдореЗрдВ рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╡ рдирд╛рдо рджреЗрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реЗрдЧрд╛, рдЙрдиреНрд╣реЗрдВ рднрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:
рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдмрдЪрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ, рдЖрдк рдбрд┐рд╕реНрдХ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: simpletests \ storytext_files \ ui_map.conf, рдЬреЛ рдХрд┐ рд╣рдо рдЕрднреА рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ usecase.cfg рдкрд░ рдкрд░реАрдХреНрд╖рдг (Test_GUI_Sync) рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рднреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдХреНрд░рд┐рдпрд╛рдПрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирд╡ рднрд╛рд╖рд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
enter_data 5 run_calc_sync exit_from_form
stdout.cfg рдореЗрдВ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмрд╛рдж рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реЙрд░реНрдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣рд╛рдВ рд╣рдо рд▓реЗрдмрд▓ рдорд╛рди "рд▓реЗрдмрд▓ 'рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯреЗрдб рдкрд╛рда' рд▓реЗрдмрд▓_рдЖрдЙрдЯ '(10 рдкрд░ рд╕реЗрдЯ) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдкрдВрдХреНрддрд┐ рджреЗрдЦреЗрдВрдЧреЗред рддреЛ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рдХрджрдо
рдкрд╛рдВрдЪрд╡рд╛ рдЙрджрд╛рд╣рд░рдгред Tkinter рдкрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЬреАрдпреВрдЖрдИ рдХрд╛ рдкрд░реАрдХреНрд╖рдг
рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг "Test_GUI_Async" рдХреЛ "Suite_GUI" рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рд▓рд┐рдЦреЗрдВ, рдХреЗрд╡рд▓ "OnCalcSync" рдХреЗ рдмрдЬрд╛рдп "OnCalcAsync" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░ рдЖрдкрдХреЛ 10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рд╣реЛрдЧреАред рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдирдП рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрде "run_calc_async" рд╣реЛрдЧрд╛ред рд╣рдордиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЕрдиреНрдп рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдФрд░ рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛ред
рдпрд╣ рдкрд░реАрдХреНрд╖рдг рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдкрддреНрд░ рдкрд░ рдХреНрд░рд┐рдпрд╛рдПрдБ рдЕрдм рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИрдВ рдФрд░ "TestGUI._operation_finish" рд╕реЗ рджрд╕ рд╕реЗрдХрдВрдб рдкрд╣рд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж test.py рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд╛рдЗрди рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ:
storytext.applicationEvent('data to be loaded')
рдЬреЛ StoryText рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдиреЗ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рд░реБрдХрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдШрдЯрдирд╛ рдХреЗ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдк рдирдП рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ usecase.cfg рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ:
enter_data 5 run_calc_async wait for data to be loaded exit_from_form
рдпрд╛рдиреА рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдмрдЯрди рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдШрдЯрдирд╛ "рдбреЗрдЯрд╛ рд▓реЛрдб рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ" рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╣рдо рдлреЙрд░реНрдо рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд░рд┐рдгрд╛рдо рдмрдЪрд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреЛрд░реАрдЯреЗрдХреНрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдг рдкреВрд░рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 10 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдзреИрд░реНрдпрдкреВрд░реНрд╡рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред
рдмреИрдЪ рдирд┐рд╖реНрдкрд╛рджрди
рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЛрдб рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП, TextTest рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рдж рдХреА рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдмреИрдЪ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╛ рддреЛ рдЗрд╕реЗ рдПрдХ рдкреНрд░рд╛рд░реВрдк (HTML, JUnit, Jenkins) рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬ рд░рд╣рд╛ рд╣реИред
рд╣рдо рд╕рдм рдХреБрдЫ html рдореЗрдВ рдЕрдирд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ HTML рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп config.cfg рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:
[batch_result_repository] default:batchresult [historical_report_location] default:historicalreport
рд╡рд╣рд╛рдВ рдЖрдк рдХрд╛рдлреА рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдЙрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдпрд╣рд╛рдВ рдмреИрдЪ рдореЛрдб рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ
рд▓рд┐рдВрдХ рд╣реИред
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "-b рдирд╛рдЗрдЯрдЬреЙрдм" рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде texttest.py рдореЙрдбреНрдпреВрд▓ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ:
python c:\TextTest\texttest-3.24\source\bin\texttest.py -b nightjob
рдлрд┐рд░ рд╕реЗ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП, рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рднреА рд╣реИ,
рдпрд╣рд╛рдВ рдЖрдк рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╕рд┐рдВрдкрд▓рд╕реНрдЯреЗрдЯреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдмреИрдЪрд╕реНрдкреЗрд╕рд▓реНрдЯ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЙрдирдореЗрдВ рд╕реЗ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "-рдХреЙрд▓ рд╡реЗрдм" рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдХрд░ html рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
python c:\TextTest\texttest-3.24\source\bin\texttest.py -b nightjob -coll web
рдЕрдм рдПрдХ рдФрд░ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде HTML рдкреГрд╖реНрда рдирд┐рд╣рд┐рдд рд╣реИред рдХрдИ рджрд┐рдиреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:
рдареАрдХ рд╣реИ, рдпрд╛ рдЖрдк рд╕реНрд╡рдпрдВ
TextTest рдХреЗ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ, рд╡реИрд╕реЗ, рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рдЖрдБрдХрдбрд╝реЗ - рд▓рдЧрднрдЧ 4,000 рдкрд░реАрдХреНрд╖рдг рджреИрдирд┐рдХ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд▓рдЧрднрдЧ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ 100% рдХреЗ рдХрд░реАрдм рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╡рд░реЗрдЬ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдЦреБрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдХрд╣рддрд╛ рд╣реИ)ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛
рдЖрдХрд░реНрд╖рдг рдЖрддреЗ рд╣реИрдВ
рдЖрдЗрдП рдореБрдЦреНрдп рд░реВрдк рд╕реЗ GUI рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
- рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдХреНрд░реЙрд╕-рд▓рд╛рдЗрдмреНрд░реЗрд░реА (GUI рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ PyGTK, Tkinter, рдЖрджрд┐ рдХрд╛ рдЬрд┐рдХреНрд░), рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд░реЙрд╕-рд▓реИрдВрдЧреНрд╡реЗрдЬ рд╕рдкреЛрд░реНрдЯ рднреА рд╣реИ (рд▓реЗрдЦрдХ рдЕрдХреНрд╕рд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ)
- рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрддред
- рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдореЗрдВ рд▓реЗрдЦрдХ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐, рдЬреЛ 10 рд╕рд╛рд▓ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрджреНрднреБрдд рд╣реИред
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рдж - рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреАред
- рдЧреИрд░-рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЙрддреНрдкрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдорд╛рдирд╡-рдкрдардиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдХрд┐рдП рдЧрдП рд╣реИрдВред
- GUI рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо API рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреВрд▓рдХрд┐рдЯ API рд╕реНрд╡рдпрдВ (PyGTK, Tkinter, рдЗрддреНрдпрд╛рджрд┐), рдЬреЛ рдпрдерд╛рд╕рдВрднрд╡ рдкреВрд░реНрдг рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
- рдЖрдк рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рд╛рд░, рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдпрд╣ рдХрд╛рдлреА рд▓рдЪреАрд▓рд╛ рд╣реИ, рдЬрдм рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рддреЛ рдЖрдк рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрд░ рдЪрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред
- рдпрд╣ рдЖрдкрдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдЧрдЯреНрд░реИрдХрд░реНрд╕ (рдмрдЧрдЬрд╝рд┐рд▓рд╛, рдЬреАрд░рд╛, рдЯреНрд░рд╛рдХ), рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА (рд╕реАрд╡реАрдПрд╕, рдмрд╛рдЬрд╝рд╛рд░, рдорд░реНрдХреНрдпреБрд░рд┐рдпрд▓) рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рд╛рд░реВрдк (рдПрдЪрдЯреАрдПрдордПрд▓, рдпреВрдиреЗрдЯ, рдЬреЗрдирдХрд┐рдВрд╕) рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдпрд╛ рдореЗрд▓ рдкрд░ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ рдХрд┐ рд╡рд╣ рдЗрди рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╡рд┐рдкрдХреНрд╖
рдпрд╣ рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд┐рдкрдХреНрд╖ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рди рдХрд░реЗрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╡реЗ рд╣реИрдВ:
- рдкрд╣рд▓рд╛ рдЬреАрдпреВрдЖрдИ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдкреНрд░рд▓реЗрдЦрди + рдореИрдиреБрдЕрд▓ рд╕рдВрдкрд╛рджрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреА рд╣реИрдВред рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдореЗрдВ, рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реЗрдЯрдЕрдк рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рд░рд┐рд╡реЗрдЯ рдЯрд╛рдЗрдк рдЯреЗрд╕реНрдЯред рд▓реЗрдХрд┐рди рдЕрдзреНрдпрдпрди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ, рдЬрд▓реНрджреА рд╕реЗ рдЯрд┐рдХ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛред
- рдЬреАрдпреВрдЖрдИ рдХреА рд╕реНрдерд┐рд░рддрд╛, рдХрднреА-рдХрднреА рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдореБрдЭреЗ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╛ рддреЛ PyGTK рдХреЗ рдХрд╛рдо, рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдХрдордЬреЛрд░ рдкрд░реАрдХреНрд╖рдг, рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдЬреАрдпреВрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдмрд╛рдж рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред
- рдХрднреА-рдХрднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдЬрд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛ (рдореИрдВрдиреЗ рдКрдкрд░ virtual_display_count рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдерд╛ред) рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреЛ рдХреБрдЫ рднреА рдореИрдВ рднрд░ рдЖрдпрд╛ рдерд╛ рд╡рд╣ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕реНрд░реЛрдд рдХреЛрдб рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдЖрдк рд╣рдореЗрд╢рд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдлрд┐рд░ рд╕реЗ, рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкрд╛рдк рдХрд░рддрд╛ рд╣реВрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЦрдХ UNIX рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
- рдкреНрд░рд▓реЗрдЦрдиред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдЧрд▓реА рдЪрд┐рдк рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рдмрд╣реБрдд рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХреБрдЫ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рд▓реЛрдЧреЛрдВ рдореЗрдВ, рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдкрд▓рдмреНрдз рдкреНрд░рд▓реЗрдЦрди рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рдпрд╣ рдпрд╛ рд╡рд╣ рдЪреАрдЬрд╝ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред
- рд╕рдореБрджрд╛рдпред рдпрд╣рд╛рдВ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд░реВрд╕реА рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░, рд╣рд░ рдХреЛрдИ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдк рд╣реИ, рд╡реЗ рдЕрдзрд┐рдХрддрдо рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИред рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рднреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╣рд╛рдирд┐рдпрд╛рдВ рдереАрдВ рдФрд░ рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдерд╛ред рдХреБрдЫ рд╕рдордЭрджрд╛рд░ рд╡рд┐рд╡рд░рдг, рдореИрдиреБрдЕрд▓, рд▓реЗрдЦ, рдЖрджрд┐ред рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╕рдм рдХреБрдЫ рдХреЗрд╡рд▓ рд▓реЗрдЦрдХ рдХреА рд╕рд╛рдЗрдЯ рдкрд░ рд╣реИ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд░реВрдкрд░реЗрдЦрд╛ рдмрд╣реБрдд рдкрд░рд┐рдкрдХреНрд╡, рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ "рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ" рджрд┐рдЦрддреА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ, рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред
- рд╡рд╣ рд▓реЙрдиреНрдЪрдкреИрдб рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдм рд▓реЛрдХрдкреНрд░рд┐рдп рдЧрд┐рдЯрд╣рдм рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдпрд╣ рддрдереНрдп рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджреЗрдЧрд╛ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд▓реЗрдЦрдХ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдФрд░ рдХреНрд╖рдорддрд╛ рд╣реИред
рд╡рд┐рдХрд▓реНрдк
рдпрджрд┐ рдЖрдк рдЕрдЬрдЧрд░ рдореЗрдВ рдЬреАрдпреВрдЖрдИ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд┐рд╡рд░рдг рдЕрдзреВрд░рд╛ рд╣реЛрдЧрд╛, рдпрд╣рд╛рдБ рд╣рдо рдХреНрдпрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ:
рд░реЛрдмреЙрдЯрдлреНрд░реИрдорд╡рд░реНрдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╣рдирд╛
рдореБрд╢реНрдХрд┐рд▓ рд╣реИ , рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ
рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдпрд╣ TextTest рд╕реНрддрд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдирдЬрд╝рд░ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдЬреЛ рдПрдХ рдЙрдкрдХрд░рдг рдЪреБрдирддрд╛ рд╣реИред
ldtp рдЕрдЧрд▓рд╛ GUI рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг рд╣реИред рдЗрд╕рдХреЗ рддреАрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ
рд▓рд┐рдирдХреНрд╕ / рд╡рд┐рдВрдбреЛрдЬ / рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреНрд░рдорд╢рдГ рдПрд▓рдбреАрдЯреАрдкреА / рдХреЛрдмрд░рд╛ / рдкрд╛рдпрдореЗрдЯред рдпрд╣ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ (рдЬрд╛рд╡рд╛ / рд░реВрдмреА / рд╕реА #, рдЖрджрд┐) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдЕрдЬрдЧрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдкреНрд░рд▓реЗрдЦрди рдкрд╕рдВрдж рдЖрдпрд╛ред рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ред
рдореБрдЭреЗ рдХреЗрд╡рд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд╕рдВрдж рдирд╣реАрдВ рдерд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рд╡реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ:
selectmenuitem('frmUnsavedDocument1-gedit', 'mnuFile;mnuOpen') settextvalue('frmUnsavedDocument1-gedit', 'txt0', 'Testing editing') setcontext('Unsaved Document 1 - gedit', '*Unsaved Document 1 - gedit') verifytoggled('dlgOpenFile...', 'tbtnTypeafilename')
рдпрд╛рдиреА рдЗрдЪреНрдЫрд┐рдд рд╢реАрд░реНрд╖ рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╛ рддреЛ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИ рдпрд╛ рд░рд╛рдЬреНрдп рдХреЛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред TextTest рдХреЗ рдмрд╛рдж рдПрдХ рдХрджрдо рдкреАрдЫреЗ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреБрдЫ рдЕрднреА рднреА рдмрд╛рдж рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ ldtp рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
pywinauto рдФрд░ рдПрдХ рд╣рдм рдкрд░ рдЖрдк
рдХреБрдЫ рд╢рдмреНрдж рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рдПрд▓рдбреАрдЯреАрдкреА рдореЗрдВ рд╕рдорд╛рди рд╣реИ - рд╣рдо рдЙрд╕ рддрддреНрд╡ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рд╡рд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП,
рдбреЙрдЧрдЯреЗрд▓ рдмрд╣реБрдд рдордЬрдмреВрддреА рд╕реЗ рдпреВрдирд┐рдХреНрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, "GNOME 3, KDE4.8" рдФрд░ "рдЧрдиреЛрдо 2" рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╢реЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрднреА рднреА рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреБрдЫ рдХреЛ рдпреВрдирд┐рдХреНрд╕ рдХреЗ рддрд╣рдд рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЬрдЧрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ pyGTK рдХреЗ рд▓рд┐рдП GUIs рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП
рдЧрд┐рдЯрд╛рд░ ред рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рдХреА рддрд╛рд░реАрдЦ 11/13/2005 рд╣реИред рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд▓реЛрдВ рдХреЗ рдмрд╛рдж рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд┐рдирд╛, рд╡рд╣ рднреА рдирд╣реАрдВ рдХрд░ рдкрд╛рдИ, рдЬреЛ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ Tkinter рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pyGTK рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдЖрд╡реЗрджрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдореИрдВрдиреЗ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛ред
pyAA рдПрдХ рдФрд░ рдкрд░рд┐рддреНрдпрдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдФрд░ 2005 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд░рд╛рд╡рдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рд╣реИ ...
pyGUIUnit рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп PyQt рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреВрд░реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдФрд░ рджреЛ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрди рдкрд░ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реБрдП, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрднреА рднреА рдХрд╛рдлреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдг рдврд╛рдБрдЪреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдХреНрдпреЛрдВ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВредрдХреБрд▓: Tkinter рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЕрдЬрдЧрд░ рдкрд░ рдЬреАрдпреВрдЖрдИ рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдо рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдЬреНрдпрд╛рджрд╛рддрд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рднреВрд▓ рдЧрдП рд╣реИрдВред рдЙрди 2-3 рдЬреЛ рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ, рд╡реЗ рдЗрд╕ рддрдереНрдп рдХреЛ рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗред рдЯреЗрдХреНрд╕реНрдЯрдЯреЗрд╕реНрдЯ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЕрдм рддрдХ рдХреА рд╕рд╣реА рдкрд╕рдВрдж рд╣реИ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред