func
main
(
)
{
const
appId
=
"com.nayoso.example"
app
,
_
:=
gtk
.
ApplicationNew
(
appId
,
glib
.
APPLICATION_FLAGS_NONE
)
_
,
err
:=
app
.
Connect
(
"activate"
,
func
(
)
{
createWindow
(
app
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
app
.
Run
(
os
.
Args
)
func
createWindow
(
application
*
gtk
.
Application
)
{
builder
,
err
:=
gtk
.
BuilderNewFromFile
(
"14_对话框/builder.ui"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
winObj
,
_
:=
builder
.
GetObject
(
"window1"
)
window
:=
winObj
.
(
*
gtk
.
Window
)
application
.
AddWindow
(
window
)
window
.
SetSizeRequest
(
300
,
240
)
window
.
SetTitle
(
"hello go"
)
window
.
SetResizable
(
false
)
window
.
SetPosition
(
gtk
.
WIN_POS_CENTER
)
err
=
window
.
SetIconFromFile
(
"images/app.ico"
)
if
err
!=
nil
{
log
.
Fatal
(
err
)
buttonObj1
,
_
:=
builder
.
GetObject
(
"button1"
)
buttonObj2
,
_
:=
builder
.
GetObject
(
"button2"
)
button1
:=
buttonObj1
.
(
*
gtk
.
Button
)
button2
:=
buttonObj2
.
(
*
gtk
.
Button
)
_
,
_
=
button1
.
Connect
(
"clicked"
,
func
(
)
{
dialog
:=
gtk
.
MessageDialogNew
(
window
,
gtk
.
DIALOG_MODAL
,
gtk
.
MESSAGE_QUESTION
,
gtk
.
BUTTONS_YES_NO
,
"Are u ok?"
)
dialog
.
SetTitle
(
"问题对话框"
)
flag
:=
dialog
.
Run
(
)
if
flag
==
gtk
.
RESPONSE_YES
{
fmt
.
Println
(
"按下yes"
)
}
else
if
flag
==
gtk
.
RESPONSE_NO
{
fmt
.
Println
(
"按下no"
)
}
else
{
fmt
.
Println
(
"按下关闭按钮"
)
dialog
.
Destroy
(
)
_
,
_
=
button2
.
Connect
(
"clicked"
,
func
(
)
{
dialog
:=
gtk
.
MessageDialogNew
(
window
,
gtk
.
DIALOG_MODAL
,
gtk
.
MESSAGE_INFO
,
gtk
.
BUTTONS_OK
,
"结束了"
)
dialog
.
Run
(
)
dialog
.
Destroy
(
)
window
.
ShowAll
(
)
信号标识 触发条件
“clicked” 按下按钮时触发
“pressed” 按下按钮时触发
“released” 释放按钮时触发
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="2.24"/>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<child>
<object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkButton" id="button1">
<property name="label" translatable="yes">问题对话框</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="button2">
<property name="label" translatable="yes">消息对话框</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
</interface>
一、什么是govclgovcl是一款简单+小巧+原生的go语言GUI库,内部通过绑定Delphi VCL/Lazarus LCL来实现。二、为什么要自己做现在开源的go UI库也有不少,自己也尝试简单使用过go-qt、lxn/walk、andlabs/ui、go-sciter等,但都不如意,缺失的太多,有些处在停止更新,有些二进制依赖太多太臃肿、有些组件太少、有些非原生、有些不易使用等等各种问题,...
原标题:GoVCL —— Go 语言开发的 UI 组件库 | 软件推介由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的想法项目介绍由于现有第三方的Go UI库不是太宠大就是用的不习惯,或者组件太少。就萌生了自己写一个UI库的相法。Delphi有些许多优秀的VCL组件,不拿来使用太可惜了。所以就索性做了一套。目前支持Win32跟Win64,只需要带上一个l...
记录初次使用go gtk3 制作gui时遇到的天坑问题(废弃函数被包含在了第三方库中)
gotk3是go 语言的第三方库,用于绑定go语言和gtk3,今天尝试使用了一下。
这篇博客记录我初次使用时遇到的编译问题以及解决方法
新版本的glib2(2.68.1.1及以上版本)的接口与gotk3库的函数不兼容的问题
F:\Golang_study\src\github.com\gotk3\gotk3\_examples\boolprops>go build boolprops.go
# github.com
go-gtk3开发之空白窗口gtk3 之缘demo.go
gtk3 之缘
没有人一上来就什么都会的,至少我达不到。本人由于学习go,又看到了gtk相关的开发,于是开始了gtk开发之旅,奈何gtk的版本或者案例有点老,或者我的环境比较高(个人喜欢最新的环境),导致一直无法编译成功,各种报错。
于是各种爬文,看到了一份gtk的教程(很详细的系列),但是始终无法成功,于是就看向了gtk3,但是奈何网上的...
go-gtk3开发之GtkBuilder使用XML构建UI引用案例说明目录结构demo.gobuilder.ui
传送门:go-gtk3开发之GtkBuilder使用XML构建UI
在这节我将介绍GtkBuilder,其使我们可以从一个描述界面的xml文件构建UI。
而这个文件我们可以使用Glade生成,这会极大的方便我们编辑用户界面。
这节我们会使用到这么一个XML文件,名字为b...
Windows版本:GTK+需要Windows 7或更高版本。对于旧版本的Windows,您应该自定义构建旧版本的glib和gtk+。
我的安装平台为win7_64位,请选择适合你自己的平台
安装GTK+及其依赖项
以二进制形式安装GTK+及其依赖项的最简单方法是通过msys2项目。MSys2为W...
关于go语言的gui框架有好多,跨平台的也不少,但是go-qt并不推荐,因为这个库,并没有完全的移植过来,推荐qt,而go-qt呢,有therecipe/qt,这个虽然完美,但是编译时间过长,可以在ubuntu下进行开发,速度快很多,windows下就编译速度过慢了,鉴于此,推荐kitech/qt.go,这个呢,编译速度上来了,很不错,可以看我的那几篇环境搭建教程。
关于go-gtk有关内容是根据...
Github
这里有例程,我们都喜欢文档详细,例程多的东西。
依赖: sudo apt install libgtk-3-dev libcairo2-dev libglib2.0-dev
这里也讲了win环境下的安装。
网友的学习文章读一读
一 外带简单示例
第一次运行例程simple,