Golang中Windows命令行按钮的实现与应用

Golang中Windows命令行按钮的实现与应用 你好

如何创建带有命令按钮、框架、切换开关的窗口,就像Python使用其tkinter库所做的那样。如何复制MS Windows 10的窗口显示?
5 回复

我查看了gui-libs/wild的网页。我对如何关联C++/C#不感兴趣。我已经用Python编写了我的应用程序,使用tkinter来创建窗口、框架、命令按钮等。我需要的是如何在GO中编写等效代码。这个论坛里有没有熟悉Python并能帮助我的人?

更多关于Golang中Windows命令行按钮的实现与应用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


您好

这个GUI工具包是需要另外下载的软件,不属于Go语言包的一部分吗?换句话说,这是第三方软件吗?我之前一直在使用Python,它有一个名为tkinter的GUI库,这个库是解释器软件的一部分。它负责处理用户界面的显示。

参见另一个帖子中的内容:

QT-Widgets, QFileDialog, 6 arguments defined, 7 needed?

https://github.com/tomarus/go-gui-libs/wiki 提供了当前Go语言中可能实现的可视化技术的非常不错的概览!

我尚未测试过这些项目,但看到了以下内容:

我虽未测试,但最近看到了这个项目。

GitHub

GitHub - lxn/walk: 面向Go编程语言的Windows GUI工具包

项目预览图

面向Go编程语言的Windows GUI工具包 - GitHub - lxn/walk: 面向Go编程语言的Windows GUI工具包

在Go语言中,可以通过fynewalk等GUI库来实现类似Python tkinter的窗口界面,包括命令按钮、框架和切换开关等控件。以下示例使用fyne库(跨平台,支持Windows风格)来创建一个带有这些控件的窗口,模拟Windows 10的显示风格。

首先,确保安装fyne库:

go get fyne.io/fyne/v2
go get fyre.io/fyne/v2/app
go get fyre.io/fyne/v2/widget
go get fyre.io/fyne/v2/container

然后,使用以下Go代码创建一个窗口,包含按钮、框架和切换开关:

package main

import (
    "fyne.io/fyne/v2"
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/container"
    "fyne.io/fyne/v2/widget"
)

func main() {
    // 创建应用和窗口
    myApp := app.New()
    myWindow := myApp.NewWindow("Windows 10 Style Window")
    myWindow.Resize(fyne.NewSize(400, 300)) // 设置窗口大小

    // 创建命令按钮
    button := widget.NewButton("Click Me", func() {
        // 按钮点击事件处理
        println("Button clicked!")
    })

    // 创建切换开关
    toggle := widget.NewCheck("Toggle Switch", func(checked bool) {
        // 切换开关状态变化事件处理
        if checked {
            println("Toggle is ON")
        } else {
            println("Toggle is OFF")
        }
    })

    // 创建一个框架(使用容器模拟框架,并添加标签作为标题)
    frameLabel := widget.NewLabel("Frame Section")
    frameContent := widget.NewLabel("This is a frame with some content.")
    frame := container.NewVBox(
        frameLabel,
        frameContent,
    )

    // 使用Border容器来模拟框架的边框效果(可选,增强视觉)
    borderedFrame := container.NewBorder(
        nil, nil, nil, nil,
        frame,
    )

    // 将所有控件放入垂直布局容器
    content := container.NewVBox(
        button,
        toggle,
        borderedFrame,
    )

    // 设置窗口内容并显示
    myWindow.SetContent(content)
    myWindow.ShowAndRun()
}

代码说明:

  • 命令按钮:使用widget.NewButton创建,点击时触发匿名函数。
  • 切换开关:使用widget.NewCheck创建,状态变化时执行回调函数。
  • 框架:通过container.NewVBoxcontainer.NewBorder组合模拟框架效果,包含标签作为标题和内容。
  • 窗口设置:使用app.NewWindow创建窗口,设置标题和大小,并通过ShowAndRun显示。

注意事项:

  • 此代码使用fyne库,它是跨平台的,在Windows上会自动适应系统主题,模拟Windows 10风格。
  • 如果需要更精确的Windows原生控件,可以考虑使用walk库(仅Windows),但walk的API较复杂,且需要CGO支持。
  • 运行前确保Go模块已初始化(例如使用go mod init),并正确导入依赖。

运行此代码将弹出一个窗口,包含按钮、切换开关和框架区域,类似于Windows 10的界面元素。根据需求,您可以进一步调整样式和布局。

回到顶部