Cross-platform Golang GUI library. Ядром привязки является liblcl — общая кроссплатформенная библиотека графического интерфейса, созданная Lazarus.
GoVCL — это нативная библиотека GUI, не основанная на HTML, не говоря уже о библиотеке DirectUI, всё практично.
Полное название: «Библиотека визуальных компонентов языка Go».
Минимальное требование govcl — go1.9.2.
Потому что GoVCL уже вступил в стабильную стадию и в настоящее время находится в состоянии чистого обслуживания. При нормальных обстоятельствах никакие новые функции или компоненты добавляться не будут. Если нет ошибок, которые необходимо исправить (имеется в виду ошибки в govcl), в принципе, новая версия выпускаться не будет. 2023/11/20.
Windows | Linux | macOS
Если вы хотите поддерживать 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
.
package main
import (
// Do not reference this package if you use custom syso files
_ "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()
}
// -- TAboutForm
func (f *TAboutForm) OnFormCreate(sender vcl.IObject) {
}
func (f *TAboutForm) OnBtn1Click(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
}
Метод 1 должен использоваться вместе с инструментом res2go.
package main
import (
// Do not reference this package if you use custom syso files
_ "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)
``` **Шаг 3: Скопируйте соответствующий двоичный файл**
* Windows: В зависимости от того, является ли скомпилированный двоичный файл 32- или 64-битным, скопируйте соответствующую библиотеку liblcl.dll в каталог текущего исполняемого файла или системный путь среды.
* Переменные среды Go: GOARCH = amd64 386, GOOS = windows, CGO_ENABLED=0.
* Linux: Скопируйте файл liblcl.so в каталог текущего исполняемого файла (также можно скопировать файл liblcl.so в каталоги /usr/lib/ (для 32-битной версии) или /usr/lib/x86_64-linux-gnu/ (для 64-битной версии), чтобы использовать его как общую библиотеку).
* Переменные среды Go: GOARCH = amd64, GOOS = linux, CGO_ENABLED=1.
* MacOS: Скопируйте файл liblcl.dylib в каталог текущего исполняемого файла (обратите внимание, что под MacOS необходимо самостоятельно создать файл info.plist), или обратитесь к разделу «Упаковка приложений на MacOS» по ссылке: https://gitee.com/ying32/govcl/wikis/pages?sort_id=410056&doc_id=102420.
* Переменные среды Go: GOARCH = amd64, GOOS = darwin, CGO_ENABLED=1.
Примечание: «Каталог текущего исполняемого файла» здесь относится к местоположению исполняемого файла, созданного текущим проектом после компиляции.
**Особое примечание: Все компоненты пользовательского интерфейса не являются потокобезопасными и небезопасными для сопрограмм. При использовании в сопрограмме используйте vcl.ThreadSync для синхронизации обновлений пользовательского интерфейса.**
**Особое примечание 2: Если вы используете go>=1.15 для компиляции исполняемых файлов Windows, вы должны использовать опцию компиляции -buildmode=exe, иначе возникнут ошибки.**
### V. FAQ
Q: Почему нет английской WIKI?
A: Мой английский плохой. Вы можете попробовать использовать Google Translate для китайской WIKI по ссылке: https://gitee.com/ying32/govcl/wikis/pages.
### VI. Документ API
* Lazarus LCL component WIKI: http://wiki.freepascal.org/LCL_Components
* Документ Windows API: https://msdn.microsoft.com/zh-cn/library/ms123401.aspx
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )