Go Walk GUI 窗口一闪而过:添加提示文字解决输入编号问题
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()
}
代码解释:
- 在
Children中添加一个Composite,用于放置Label和LineEdit。 - 创建
Label组件,设置Text属性为 '请输入编号:',并将AssignTo属性设置为entryPrompt。 - 创建
LineEdit组件,并将AssignTo属性设置为entry。
使用方法:
- 保存修改后的代码为
main.go文件。 - 运行程序。
- 运行程序后,将会出现一个窗口,其中包含一个提示文字 '请输入编号:' 和一个输入框,用于输入编号。
注意:
- 修改后的代码中,将双引号(
' ')改为单引号(' ')。 OnSizeChanged事件处理函数可以根据需要进行调整。
通过以上方法,就可以解决 Go Walk GUI 窗口一闪而过的问题,并添加提示文字以引导用户输入编号,从而实现用户与程序的正常交互。
原文地址: https://www.cveoy.top/t/topic/nRQN 著作权归作者所有。请勿转载和采集!