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 builder , err := gtk . BuilderNewFromFile ( "14_对话框/builder.ui" ) if err != nil { log . Fatal ( err ) // 获取window窗口 winObj , _ := builder . GetObject ( "window1" ) window := winObj . ( * gtk . Window ) application . AddWindow ( window ) // window 窗口设置 window . SetSizeRequest ( 300 , 240 ) //设置窗口大小 window . SetTitle ( "hello go" ) //设置标题 window . SetResizable ( false ) //设置不可伸缩 window . SetPosition ( gtk . WIN_POS_CENTER ) //设置居中显示 err = window . SetIconFromFile ( "images/app.ico" ) //设置icon 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 , //info类型 gtk . BUTTONS_OK , //默认按钮 "结束了" ) //设置内容 dialog . Run ( ) //运行对话框 dialog . Destroy ( ) //销毁对话框 // 显示所有界面 window . ShowAll ( ) 信号标识 触发条件 “clicked” 按下按钮时触发 “pressed” 按下按钮时触发 “released” 释放按钮时触发

builder.ui

<?xml version="1.0" encoding="UTF-8"?>
<interface>
  <requires lib="gtk+" version="2.24"/>
  <!-- interface-naming-policy project-wide -->
  <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,