基於親愛的Imgui和Great Go Bind Imgui-Go的快速跨平台GUI框架。
對任何貢獻(功能,小部件,教程,文檔等)都表示讚賞!
(該圖書館可在免費且寬鬆的許可下獲得,但需要經濟支持以維持其持續的改進。除了維護和穩定性外,還有許多理想的功能尚待添加。如果您使用的是GIU,請考慮伸出手。)
企業:通過發票的技術支持,維護,贊助合同來支持持續開發和維護:
電子郵件:[email protected]
個人:支持在這裡持續的開發和維護。
有關文檔,請參閱我們的Wiki,示例,Godoc,或者只是查看代碼中的評論。
GIU建立在GLFW v3.3的基礎上,因此理想情況下,GIU可以支持GLFW v3.3支持的所有平台。
與其他親愛的Imgui Golang綁定相比,GIU具有以下特徵:
package main
import (
"fmt"
g "github.com/AllenDang/giu"
)
func onClickMe () {
fmt . Println ( "Hello world!" )
}
func onImSoCute () {
fmt . Println ( "Im sooooooo cute!!" )
}
func loop () {
g . SingleWindow (). Layout (
g . Label ( "Hello world from giu" ),
g . Row (
g . Button ( "Click Me" ). OnClick ( onClickMe ),
g . Button ( "I'm so cute" ). OnClick ( onImSoCute ),
),
)
}
func main () {
wnd := g . NewMasterWindow ( "Hello world" , 400 , 200 , g . MasterWindowFlagsNotResizable )
wnd . Run ( loop )
}
這是結果:
立即模式GUI系統意味著UI控件不能保留其狀態和價值。例如,調用giu.InputText(&str)
將在屏幕上顯示一個輸入文本框,並且用戶輸入的值將存儲在&str
中。輸入文本框對此一無所知。
Hello World示例中的loop
方法是根據傳遞到其中的參數繪製所有小部件的負責人。此方法將每秒調用30次以反映交互式狀態(如單擊,懸停,價值變化等)。這將是您定義UI結構的地方。
默認情況下,放置在容器Layout
內的任何小部件都將垂直放置。
要創建一排小部件(即一個水平的位置小部件),請使用Row()
方法。例如giu.Row(Label(...), Button(...))
將在按鈕旁邊創建標籤。
要在一排內部創建一個小部件列(即一個垂直放置小部件),請使用Column()
方法。
任何具有Size()
方法的小部件都可以明確設置其尺寸。請注意,您可以將負值傳遞給Size()
,這將填充剩餘的寬度/高度值。例如, InputText(...).Size(giu.Auto)
將創建一個輸入文本框,其容器已剩下的最長寬度。
MasterWindow
是指操作系統實現的平臺本機窗口。所有子窗口和小部件都將放置在其中。
Window
是帶有標題欄的容器,可以折疊。 SingleWindow
是一種特殊的窗口,它將佔據MasterWindow
的所有可用空間。
一個Child
就像其他GUI框架中的面板一樣 - 它可以具有背景色和邊框。
檢查各種小部件的examples/widgets
。
GIU的後端取決於OpenGL 3.3,請確保您的環境支持它(據我所知,某些虛擬機(例如VirtualBox)不支持它)。
xcode-select --install
go get github.com/AllenDang/giu
首先,您需要安裝所需的依賴項:
sudo apt install libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libglx-dev libgl1-mesa-dev libxxf86vm-dev
關於基於紅色帽子的分佈:
sudo dnf install libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel libGL-devel libXxf86vm-devel
如果尚未安裝,您也可能需要安裝C/C ++編譯器(例如G ++)。跟隨GO編譯器提示。
然後,一個簡單的go build
將起作用。
交叉編譯更為複雜。假設您想為ARM64構建。這就是您需要做的:
sudo dpkg --add-architecture arm64
sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
libx11-dev:arm64 libxcursor-dev:arm64 libxrandr-dev:arm64 libxinerama-dev:arm64 libxi-dev:arm64 libglx-dev:arm64 libgl1-mesa-dev:arm64 libxxf86vm-dev:arm64
GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ HOST=aarch64-linux-gnu go build -v
go build -ldflags " -s -w " .
go build -ldflags " -s -w -H=windowsgui -extldflags=-static " .
在Mac上:
brew install mingw-w64
在Linux上:
sudo dnf install mingw64-gcc mingw64-gcc-c++ mingw64-winpthreads-static
cat > YourExeName.rc << EOL
id ICON "./res/app_win.ico"
GLFW_ICON ICON "./res/app_win.ico"
EOL
x86_64-w64-mingw32-windres YourExeName.rc -O coff -o YourExeName.syso
GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ HOST=x86_64-w64-mingw32 go build -ldflags " -s -w -H=windowsgui -extldflags=-static " -p 4 -v -o YourExeName.exe
rm YourExeName.syso
rm YourExeName.rc
歡迎各種拉動請求(文檔,演示,屏幕截圖,代碼等)!