กรอบ GUI แบบข้ามแพลตฟอร์มที่รวดเร็วสำหรับ GO ตาม Imgui ที่รักและ Imgui-Go ที่ดี
การมีส่วนร่วมใด ๆ (คุณสมบัติ, วิดเจ็ต, บทเรียน, เอกสาร, ฯลฯ ... ) ได้รับการชื่นชม!
(ห้องสมุดนี้มีให้บริการภายใต้ใบอนุญาตฟรีและอนุญาต แต่ต้องการการสนับสนุนทางการเงินเพื่อรักษาการปรับปรุงอย่างต่อเนื่องนอกเหนือจากการบำรุงรักษาและความมั่นคงแล้วยังมีคุณสมบัติที่ต้องการมากมายที่ยังไม่ได้เพิ่มหากคุณใช้ GIU โปรดพิจารณาการเข้าถึง)
ธุรกิจ: สนับสนุนการพัฒนาและการบำรุงรักษาอย่างต่อเนื่องผ่านการสนับสนุนด้านเทคนิคที่ออกใบแจ้งหนี้การบำรุงรักษาสัญญาการสนับสนุน:
อีเมล: [email protected]
บุคคล: สนับสนุนการพัฒนาและการบำรุงรักษาอย่างต่อเนื่องที่นี่
สำหรับเอกสารอ้างอิงวิกิของเราตัวอย่าง 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
กล่องข้อความอินพุตไม่รู้อะไรเลยเกี่ยวกับเรื่องนี้
และวิธี loop
ในตัวอย่าง Hello World เป็นหน้าที่ของ การวาด วิดเจ็ตทั้งหมดตามพารามิเตอร์ที่ส่งผ่านไป วิธีนี้จะถูกเรียกใช้ 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
เกี่ยวกับการแจกแจงตาม Red Hat:
sudo dnf install libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel libGL-devel libXxf86vm-devel
คุณอาจต้องติดตั้งคอมไพเลอร์ C/C ++ (เช่น G ++) หากยังไม่ได้ติดตั้ง ตามพรอมต์คอมไพเลอร์
จากนั้น 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
คำขอดึงทุกชนิด (เอกสารการสาธิตภาพหน้าจอรหัส ฯลฯ ) เป็นมากกว่าการต้อนรับ!