前期准备一张ico图标,以下操作均为windows下进行

以下方法可以生成单文件,引用外部图片未作尝试。

以下列出关键部分代码

func main() {
    if err := (MainWindow{
        AssignTo: &MWindow.MainWindow,
        Title:    "文档统计-小程序 v1.0",
        MinSize:  Size{320, 240},
        Size:     Size{800, 600},
        OnDropFiles: func(files []string) {
            if len(files) > 0 {
                go MWindow.isOpenDir(files[0])
            }
        },
        MenuItems: []MenuItem{
            Menu{
                Text: "&操作",
                Items: []MenuItem{
                    Action{
                        AssignTo:    &MWindow.openFile,
                        Text:        "&选择文件夹",
                        OnTriggered: MWindow.ShowBrowseFolder,
                    },
                    Separator{},
                    Action{
                        Text:        "退出",
                        OnTriggered: func() { MWindow.Close() },
                    },
                },
            },
            Menu{
                Text: "&帮助",
                Items: []MenuItem{
                    Action{
                        Text:        "关于",
                        OnTriggered: MWindow.aboutAction_Triggered,
                    },
                },
            },
        },
        Layout: VBox{},
        Children: []Widget{
            Label{
                AssignTo: &MWindow.outTitle,
            },
            TextEdit{
                AssignTo: &MWindow.outTE,
                ReadOnly: true,
                VScroll:  true,
                Font: Font{
                    Family:    "微软雅黑",
                    PointSize: 10,
                    Bold:      false,
                    Italic:    false,
                    Underline: false,
                    StrikeOut: false,
                },
                Text: "在 【操作】 中选择目录进行查询\r\n或者 直接拖入文件夹",
            },
        },
    }.Create()); err != nil {
        log.Fatal(err)
    }
    ic, err := walk.NewIconFromImageForDPI(Base64ToImage(IconBase64), 40)
    if err != nil {
        return
    }
    //设置程序左上角图标
    MWindow.MainWindow.SetIcon(ic)
    op, err := walk.NewIconFromImageForDPI(Base64ToImage(OpenBase64), 90)
    if err != nil {
        return
    }
    //设置菜单栏上的图标
    MWindow.openFile.SetImage(op)
    MWindow.MainWindow.Run()
}

func Base64ToImage(str string) image.Image {
    ddd, _ := base64.StdEncoding.DecodeString(str)
    bbb := bytes.NewBuffer(ddd)
    m, _, _ := image.Decode(bbb)
    png.Encode(bbb, m)
    return m
}

OpenBase64 = string("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAm...此处省略")
IconBase64 = string("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAm...此处省略")