GoVCL
Кроссплатформенный графический интерфейс пользователя (GUI) на Golang, основанный на универсальной кроссплатформенной библиотеке GUI liblcl, созданной с помощью Lazarus.
GoVCL — это нативная библиотека GUI, не основанная на HTML и не являющаяся библиотекой DirectUI. Она ориентирована на практичность.
Полное название на китайском языке: «Библиотека компонентов визуализации для языка Go»; полное название на английском языке: «Go Language Visual Component Library».
Минимальные требования для govcl: go1.9.2.
Поскольку GoVCL уже достиг стабильной стадии развития, в настоящее время он находится в состоянии чистого обслуживания и, как правило, не будет добавлять новые функции или компоненты. Если нет необходимости исправлять ошибки (связанные с govcl), принципиально не будут выпускаться новые версии. 2023/11/20.
Если вы хотите поддерживать Linux ARM или Linux 32bit, вам необходимо самостоятельно скомпилировать соответствующий двоичный файл liblcl.
Примечание: этот дизайнер пользовательского интерфейса больше не обновляется, но это не влияет на его использование.
Использование: установка.
Используйте Lazarus для проектирования интерфейса и Golang для написания кода.
go get -u github.com/ying32/govcl
Также можно использовать метод модуля Go для извлечения, настроив в go.mod следующим образом:
github.com/ying32/govcl v2.2.3+incompatible
.
Метод 1 (рекомендуется использовать Lazarus для разработки интерфейса):
package main
import (
// Если вы используете собственный файл syso, не ссылайтесь на этот пакет
_ "github.com/ying32/govcl/pkgs/winappres"
"github.com/ying32/govcl/vcl"
)
type TMainForm struct {
*vcl.TForm
Btn1 *vcl.TButton
}
type TAboutForm struct {
*vcl.TForm
Btn1 *vcl.TButton
}
var (
mainForm *TMainForm
aboutForm *TAboutForm
)
func main() {
vcl.Application.Initialize()
vcl.Application.SetMainFormOnTaskBar(true)
vcl.Application.CreateForm(&mainForm)
vcl.Application.CreateForm(&aboutForm)
vcl.Application.Run()
}
// -- TMainForm
func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
}
func (f *TMainForm) OnBtn1Click(sender vcl.IObject) {
aboutForm.Show()
}
Для метода 1 требуется использовать инструмент res2go.
Метод 2 (код, имитирующий стиль FreePascal):
package main
import (
// Если вы используете пользовательский файл syso, не ссылайтесь на этот пакет
_ "github.com/ying32/govcl/pkgs/winappres"
"github.com/ying32/govcl/vcl"
)
type TMainForm struct {
*vcl.TForm
Btn1 *vcl.TButton
}
type TAboutForm struct {
*vcl.TForm
Btn1 *vcl.TButton
}
var (
mainForm *TMainForm
aboutForm *TAboutForm
)
func main() {
vcl.RunApp(&mainForm, &aboutForm)
}
// -- TMainForm
func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
f.SetCaption("MainForm")
f.Btn1 = vcl.NewButton(f)
f.Btn1.SetParent(f)
f.Btn1.SetBounds(10, 10, 88, 28)
f.Btn1.SetCaption("Button1")
f.Btn1.SetOnClick(f.OnBtn1Click)
}
func (f *TMainForm) OnBtn1Click(sender vcl.IObject) {
aboutForm.Show()
}
// -- TAboutForm
func (f *TAboutForm) OnFormCreate(sender vcl.IObject) {
f.SetCaption("About")
f.Btn1 = vcl.NewButton(f)
//f.Btn1.SetName("Btn1")
f.Btn1.SetParent(f)
f.Btn1.SetBounds(10, 10, 88, 28)
f.Btn1.SetCaption("Button1")
f.Btn1.SetOnClick(f.OnBtn1Click)
}
func (f *TAboutForm) OnBtn1Click(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
}
Для Windows: скопируйте соответствующий liblcl.dll
в текущий каталог исполняемого файла или системный путь в зависимости от того, является ли архитектура 32-битной или 64-битной.
GOARCH = amd64 386
GOOS = windows
CGO_ENABLED=0
.Для Linux: скопируйте liblcl.so
в текущий каталог исполняемых файлов (также можно скопировать liblcl.so в /usr/lib/
(32-разрядный liblcl) или /usr/lib/x86_64-linux-gnu/
(64-разрядный liblcl) в качестве общей библиотеки).
GOARCH = amd64
GOOS = linux
CGO_ENABLED=1
.Для macOS: ...
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )