рдЧреЛрд▓рдВрдЧ рдЬреАрдпреВрдЖрдИ: рдЬреАрдЯреАрдХреЗ + 3

рдореИрдВрдиреЗ рдЧреЛ рдкрд░ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдПрдХ рд╕реАрдПрд▓рдЖрдИ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдпрд╛, рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдБ, рдФрд░ рдЧреЛ рдореЗрдВ рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ GUI рд╕рдВрд╕реНрдХрд░рдг рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдФрд░ рдлрд┐рд░ рд╢реБрд░реВ рд╣реБрдЖ ...


рдЧреЛрд▓рд╛рдВрдЧ рдЧрдЯрдХ рей


GUI рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рдХрд╛ рд╡рд┐рдХрд▓реНрдк


рдЖрд╡реЗрджрди рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ Windows , GNU / Linux, рдФрд░ macOS рдХреЗ рддрд╣рдд рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдЪреБрдирд╛рд╡ рдЧрд┐рд░ рдЧрдпрд╛:



рдореИрдВрдиреЗ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдФрд░ рдЕрдиреНрдп рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬреЛ рдХреНрд░реЛрдорд┐рдпрдо рдФрд░ рдиреЛрдб.рдЬреЗ рдХреЛ рдЕрдкрдиреЗ рд╕рд╛рде рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд╛рдлреА рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рднреА рдЦрд╛рддреЗ рд╣реИрдВред


рдЕрдм рдкреНрд░рддреНрдпреЗрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ред


gotk3


GTK + 3 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ ред рдХрд╡рд░реЗрдЬ рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рд╕реЗ рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЗрдВ рдореМрдЬреВрдж рд╣реИрдВред


рдорд╛рдирдХ go build рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред MacOS рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдВрдХрд▓рди рд╕рдВрднрд╡ рд╣реИред рдХреЗрд╡рд▓ MacOS рдХреЗ рд╕рд╛рде рд╣реА рдЗрд╕ OS рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦреИрд░, macOS рдХреЗ рд╕рд╛рде рдЗрд╕реЗ Windows + GNU / Linux рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕ , рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╖рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред MacOS рдХреЗ рд▓рд┐рдП рдпрд╣ рджреЗрд╢реА рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ред рдЖрдк рдХреЗрд╡рд▓ рддрдм рддрдХ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдПрдХ рднрдпрд╛рдирдХ рд╡рд┐рд╖рдп рдЬреЛ macOS рдХреЗ рдореВрд▓ рддрддреНрд╡реЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред


therecipe / рдХреНрдпреВрдЯреА


рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА Qt 5 ред QML, рдорд╛рдирдХ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрдИ рд▓реЛрдЧ рдЗрд╕ рдмрдВрдзрди рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред


qtdeploy рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ qtdeploy ред рдбреЗрд╕реНрдХрдЯреЙрдк рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЛрдмрд╛рдЗрд▓ рднреА рд╣реИрдВред рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░реЙрд╕ рд╕рдВрдХрд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, Apple рдХреЛ рдХреЗрд╡рд▓ macOS рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ Qt рдкрд░ , рдЖрдк рдбреЗрд╕реНрдХрдЯреЙрдк OS рдкрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджреЗрд╢реА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред


zserge / webview


рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдЦрдХ рдиреЗ рдЗрд╕реЗ рдЧреЛ рд╕рд╣рд┐рдд рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд┐рдЦреЗрд░рд╛ ред рджреЗрд╢реА рд╡реЗрдмрд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╡рд┐рдВрдбреЛрдЬ - MSHTML , GNU / Linux - gtk-webkit2 , macOS - рдХреЛрдХреЛ / рд╡реЗрдмрдХреАрдЯ ред рдЧреЛ рдкрд░ рдХреЛрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ , рдЖрдкрдХреЛ рдЬреЗрдПрд╕ рдкрд░ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдХрд╛рдо рдЖрдПрдЧрд╛ред


рдпрд╣ go build рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рд╣реИ, рдПрдХреНрд╕рдЧреЛ рдХреЗ рд╕рд╛рде рдХреНрд░реЙрд╕- рд╕рдВрдХрд▓рди рд╕рдВрднрд╡ рд╣реИред


рдпрд╣ рджреЗрд╢реА рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдПрдХ рдорд╛рдирдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рдкрд╕рдВрдж


рдореБрдЭреЗ gotk3 рдХреНрдпреЛрдВ рдЪреБрдирд╛ рдЧрдпрд╛ ?


Therecipe / qt рдореЗрдВ, рдореИрдВрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрджреЗрд╢ рднреА рджрд┐рдпрд╛ред


zserge / webview рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХ рд╡рдЬрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ webview рд╣реИ рдФрд░ рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореМрдЬреВрдж рдорд╛рдирдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ : рд╢рд╛рдпрдж рдХрд╣реАрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рдпрд╣ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЙрдиреНрдирдд рдХреНрд░реЛрдорд┐рдпрдо рд╣рдореЗрд╢рд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ JS рдореЗрдВ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред


рдореИрдВрдиреЗ gotk3 рдХреЛ рдХреБрдЫ рдФрд╕рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ред рдЖрдк рдЗрд╕реЗ рдорд╛рдирдХ go build рд╕рд╛рде рдмрдирд╛ рд╕рдХрддреЗ go build , рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ GTK + 3 рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ!


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реЛрдЧрд╛ред рдФрд░ рдЧреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╡реНрдпрд░реНрде рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рддрдирд╛ рдЧрд▓рдд рдерд╛ ...


рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ


рдЦреБрдж рдХреЛ gotk3 ( gtk , gdk , glib , cairo ) рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 go get github.com/gotk3/gotk3/... 

рд╕рд╛рде рд╣реА, рдЬреАрдЯреАрдХреЗ + 3 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕


рдЙрдмрдВрдЯреВ рдореЗрдВ :


 sudo apt-get install libgtk-3-dev 

рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ :


 sudo pacman -S gtk3 

MacOS


рд╣реЛрдордмреНрд░реЗ


  brew install gtk-mac-integration gtk+3 

рд╡рд┐рдВрдбреЛрдЬ


рдпрд╣ рдпрд╣рд╛рдБ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрджреЗрд╢ MSYS2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреЛрдб рд▓рд┐рдЦрд╛, рдФрд░ рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рд▓рд┐рдЦреЗрдВрдЧреЗред


рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ


рдЕрдм рд╣рдо main.go рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рдлрд╛рдЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 package main import ( "log" "github.com/gotk3/gotk3/gtk" ) func main() { //  GTK. gtk.Init(nil) //    ,   //     "destroy"     //     win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) if err != nil { log.Fatal("   :", err) } win.SetTitle(" ") win.Connect("destroy", func() { gtk.MainQuit() }) //         l, err := gtk.LabelNew(", gotk3!") if err != nil { log.Fatal("   :", err) } //     win.Add(l) //      win.SetDefaultSize(800, 600) //      win.ShowAll() //    GTK ( ).    //  gtk.MainQuit() gtk.Main() } 

рдЖрдк go build рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рдХрд░ рд╕рдХрддреЗ go build , рдФрд░ рдлрд┐рд░ рдмрд╛рдЗрдирд░реА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:


 go run main.go 

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЦрд┐рдбрд╝рдХреА рдорд┐рд▓рддреА рд╣реИ:


рдЧреЛрд▓рдВрдЧ рдЧрдЯрдХ 3 рдкрд░ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг


рдмрдзрд╛рдИ! рдЖрдкрдХреЛ README gotk3 рд╕реЗ рдПрдХ рд╕рд░рд▓ рдЖрд╡реЗрджрди рдорд┐рд▓рд╛!


рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдЧрд┐рддреВрдм рдЧрдЯрдХ 3 рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдЪрд▓реЛ рдХреБрдЫ рдРрд╕рд╛ рдХрд░реЗрдВ рдЬреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рди рд╣реЛ!


рд╡реГрдХреНрд╖реЛрдВ рд╕реЗ рдЦрд╛рд▓реА рдЬрдЧрд╣


Gtk + 3 рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ - рдЧреНрд▓реЗрдб ред рдпрд╣ GTK + рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдбрд┐рдЬрд╛рдЗрдирд░ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рд╡реГрдХреНрд╖реЛрдВ рд╕реЗ рдЦрд╛рд▓реА рдЬрдЧрд╣


рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреВрд░реЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЧреНрд▓реЗрдб рдореЗрдВ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рдПрдХ XML рдЬреИрд╕реА * .glade рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВред


рдЧреНрд▓реЗрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


рдЬреАрдПрдирдпреВ / рд▓рд┐рдирдХреНрд╕


GNU / Linux рд╡рд┐рддрд░рдг рдкрд░, рдЧреНрд▓реЗрдб рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдХреБрдЫ рдЙрдмрдВрдЯреВ рдореЗрдВ, рдпрд╣ рд╣реЛрдЧрд╛:


 sudo apt-get install glade 

рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ :


 sudo pacman -S glade 

MacOS


рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рдмрд┐рд▓реНрдб рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, Homebrew рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:


 brew install glade 

рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдПрдВ:


 glade 

рд╡рд┐рдВрдбреЛрдЬ


рдЖрдк рдпрд╣рд╛рдБ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдЧреНрд▓реЗрдб рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред


рдЧреНрд▓реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреА рддрд░рд╣ рдХреБрдЫ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рд╣реИ:


рд╡реГрдХреНрд╖реЛрдВ рд╕реЗ рдЦрд╛рд▓реА рдЬрдЧрд╣


рд╕рд╣реЗрдЬрд╛ рдФрд░ main.glade рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХреА:


 <?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.22.1 --> <interface> <requires lib="gtk+" version="3.20"/> <object class="GtkWindow" id="window_main"> <property name="title" translatable="yes"> Glade</property> <property name="can_focus">False</property> <child> <placeholder/> </child> <child> <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="margin_left">10</property> <property name="margin_right">10</property> <property name="margin_top">10</property> <property name="margin_bottom">10</property> <property name="orientation">vertical</property> <property name="spacing">10</property> <child> <object class="GtkEntry" id="entry_1"> <property name="visible">True</property> <property name="can_focus">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">0</property> </packing> </child> <child> <object class="GtkButton" id="button_1"> <property name="label" translatable="yes">Go</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">1</property> </packing> </child> <child> <object class="GtkLabel" id="label_1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label" translatable="yes">This is label</property> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> <property name="position">2</property> </packing> </child> </object> </child> </object> </interface> 

рдпрд╣реА рд╣реИ, рд╣рдореЗрдВ рдЦрд┐рдбрд╝рдХреА window_main ( GtkWindow ) GtkWindow , рдЬрд┐рд╕рдореЗрдВ рдХрдВрдЯреЗрдирд░ ( GtkBox ) рдХреЗ рдЕрдВрджрд░, рдЬрд┐рд╕рдореЗрдВ entry_1 ( GtkEntry ) рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб, button_1 ( GtkButton ) рдФрд░ label_1 ( GtkLabel ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрдЧреНрд╕ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рднреА рд╣реИрдВ (рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ), рджреГрд╢реНрдпрддрд╛ рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЬрд┐рдиреНрд╣реЗрдВ рдЧреНрд▓реЗрдб рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ред


рдЖрдЗрдП рдЕрдм рдЗрд╕ рджреГрд╢реНрдп рдХреЛ рд╣рдорд╛рд░реЗ main.go рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


 package main import ( "log" "github.com/gotk3/gotk3/gtk" ) func main() { //  GTK. gtk.Init(nil) //   b, err := gtk.BuilderNew() if err != nil { log.Fatal(":", err) } //       Glade err = b.AddFromFile("main.glade") if err != nil { log.Fatal(":", err) } //      ID obj, err := b.GetObject("window_main") if err != nil { log.Fatal(":", err) } //       gtk.Window //     "destroy"     //     win := obj.(*gtk.Window) win.Connect("destroy", func() { gtk.MainQuit() }) //      win.ShowAll() //    GTK ( ).    //  gtk.MainQuit() gtk.Main() } 

рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ:


 go run main.go 

рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


рдЧреЛрд▓рдВрдЧ рдЧреНрд▓реЗрдб рдорд┐рд▓рд╛ 3


рд╣реБрд░реНрд░реЗ! рдЕрдм рд╣рдо XML- main.glade рдлрд╝рд╛рдЗрд▓ рдФрд░ main.go рдореЗрдВ рдХреЛрдб main.go !


рд╕рдВрдХреЗрдд


рдЦрд┐рдбрд╝рдХреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рд▓реЗрдмрд▓ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИред


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб, рдмрдЯрди рдФрд░ рд▓реЗрдмрд▓ рдХреЗ рддрддреНрд╡ рдорд┐рд▓рддреЗ рд╣реИрдВ:


 //    obj, _ = b.GetObject("entry_1") entry1 := obj.(*gtk.Entry) //   obj, _ = b.GetObject("button_1") button1 := obj.(*gtk.Button) //   obj, _ = b.GetObject("label_1") label1 := obj.(*gtk.Label) 

рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП GetObject() рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдореИрдВ рдирд╣реАрдВ рд╕рдВрднрд╛рд▓рддрд╛ред рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рдордХрд╛рдЬреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕рдм рдареАрдХ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЕрдкрдиреЗ рдлреЙрд░реНрдо рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдЖрдЗрдП clicked рдмрдЯрди рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ (рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рдП)ред рдЬреАрдЯреАрдХреЗ + рд╕рдВрдХреЗрдд рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдШрдЯрдирд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:


 //      button1.Connect("clicked", func() { text, err := entry1.GetText() if err == nil { //       label1.SetText(text) } }) 

рдЕрдм рдХреЛрдб рдЪрд▓рд╛рдПрдБ:


 go run main.go 

рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рдкрд╛рда рджрд░реНрдЬ рдХрд░рдиреЗ рдФрд░ Go рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдкрд╛рда рдХреЛ рд▓реЗрдмрд▓ рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ:


рдЧреЛрд▓рдВрдЧ рдЧреНрд▓реЗрдб рдХреЛ рд╕рдВрдХреЗрдд 3 рдорд┐рд▓рд╛


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдПрдкреНрд▓реАрдХреЗрд╢рди рд╣реИ!


рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рдХрдард┐рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди (рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдЬреАрдУ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рдереАрдВ , рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЪрдпрди рд╕рдВрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рдореИрдВрдиреЗ рдЧреЛрдЯреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рджреЗрд╢реА рд╕рдВрд╡рд╛рдж рднреА рдЬреЛрдбрд╝рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЛрдб рдореЗрдВ рдЕрдм рдпрд╣ рд╕рдм рджреЗрдЦрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред


рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИрдВ ред


рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдЧрд▓реА рдХрдбрд╝реА рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡реЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/hi420035/


All Articles