Go Walk GUI 窗口一闪而过:添加提示文字解决输入编号问题

在使用 Go Walk 开发 GUI 程序时,有时会遇到程序运行后窗口一闪而过,没有输入框弹出,导致无法输入编号。这个问题主要是因为程序没有提供明确的输入提示,用户不知道该如何操作。

解决方法:

为了解决这个问题,需要在 LineEdit 中添加 TextLabel,作为提示文字,引导用户输入编号。

修改后的代码:

package main

import (
	'fmt'
	'github.com/gen2brain/dlgs'
	'github.com/lxn/walk'
	. 'github.com/lxn/walk/declarative'
	'io'
	'net/http'
	'os'
	'path/filepath'
)

func downloadFile(url string, filepath string) error {
	// 创建文件
	out, err := os.Create(filepath)
	if err != nil {
		return err
	}
	defer out.Close()

	// 发送请求并下载文件
	resp, err := http.Get(url)
	if err != nil {
		return err
	}
	defer resp.Body.Close()

	// 写入文件
	_, err = io.Copy(out, resp.Body)
	if err != nil {
		return err
	}

	return nil
}

func writeIni(name string) error {
	// 获取用户目录
	userDir, err := os.UserHomeDir()
	if err != nil {
		return err
	}

	// 获取配置文件路径
	iniPath := filepath.Join(userDir, 'HC.ini')

	// 创建配置文件
	f, err := os.Create(iniPath)
	if err != nil {
		return err
	}
	defer f.Close()

	// 写入配置
	_, err = f.WriteString('[general]
')
	if err != nil {
		return err
	}

	return nil
}

func main() {
	var (
		entry       *walk.LineEdit
		mainWindow  *walk.MainWindow
		entryPrompt *walk.Label // 添加的提示文字
	)

	// 创建GUI界面
	MainWindow{
		AssignTo: &mainWindow,
		Title:    '证书下载和配置',
		MinSize:  Size{Width: 300, Height: 100},
		Layout:   VBox{},
		Children: []Widget{
			Composite{
				Layout: HBox{},
				Children: []Widget{
					Label{
						Text: '请输入编号:', // 提示文字
						AssignTo: &entryPrompt,
					},
					LineEdit{
						AssignTo: &entry,
					},
				},
			},
			PushButton{
				Text: '下载证书并写入配置',
				OnClicked: func() {
					// 获取编辑框内容
					entryText := entry.Text()

					// 如果编辑框内容为空,则提示错误信息
					if entryText == '' {
						dlgs.Error('错误', '请输入编号')
						return
					}

					// 下载证书
					filepath := filepath.Join(os.Getenv('USERPROFILE'), 'Desktop', 'mitmproxy-ca-cert.p12')
					err := downloadFile('http://mitm.it/cert/p12', filepath)
					if err != nil {
						dlgs.Error('错误', fmt.Sprintf('下载证书失败: %v', err))
						return
					}

					// 写入配置文件
					err = writeIni(entryText)
					if err != nil {
						dlgs.Error('错误', fmt.Sprintf('写入配置文件失败: %v', err))
						return
					}

					// 提示设置完成信息
					dlgs.Info('信息', '设置完成,证书已下载到桌面请手动安装')
				},
			},
		},
		OnSizeChanged: func() {
			mainWindow.Hide()
		},
	}.Run()
}

代码解释:

  1. Children 中添加一个 Composite,用于放置 LabelLineEdit
  2. 创建 Label 组件,设置 Text 属性为 '请输入编号:',并将 AssignTo 属性设置为 entryPrompt
  3. 创建 LineEdit 组件,并将 AssignTo 属性设置为 entry

使用方法:

  1. 保存修改后的代码为 main.go 文件。
  2. 运行程序。
  3. 运行程序后,将会出现一个窗口,其中包含一个提示文字 '请输入编号:' 和一个输入框,用于输入编号。

注意:

  • 修改后的代码中,将双引号(' ')改为单引号(' ')。
  • OnSizeChanged 事件处理函数可以根据需要进行调整。

通过以上方法,就可以解决 Go Walk GUI 窗口一闪而过的问题,并添加提示文字以引导用户输入编号,从而实现用户与程序的正常交互。

Go Walk GUI 窗口一闪而过:添加提示文字解决输入编号问题

原文地址: https://www.cveoy.top/t/topic/nRQN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录