gpt4 book ai didi

user-interface - 从连接读取更新多行条目

转载 作者:IT王子 更新时间:2023-10-29 02:09:48 26 4
gpt4 key购买 nike

我使用这个库在 Go 上编写了简单的桌面应用程序:github.com/ProtonMail/ui。主窗口如下图:

err := ui.Main(func() {
window := ui.NewWindow("Chat", 500, 500, false)
input := ui.NewEntry()
send := ui.NewButton("Send")
output := ui.NewMultilineNonWrappingEntry()
output.SetReadOnly(true)
mainBox := ui.NewHorizontalBox()
usersBox := ui.NewVerticalBox()
messageBox:=ui.NewVerticalBox()
messageBox.Append(output, true)
messageBox.Append(input, false)
messageBox.Append(send, false)
mainBox.Append(usersBox, false)
mainBox.Append(messageBox, true)
send.OnClicked(func(*ui.Button) {
_, err := conn.Write([]byte(JSONencode(userExample1.Text(),input.Text(),"SendMessageTo")))
if err!=nil{
fmt.Println("OnClickedError!")
}
input.SetText("")
})
window.SetChild(mainBox)
window.OnClosing(func(*ui.Window) bool {
ui.Quit()
return true
})
window.Show()

它正在从服务器连接读取和输出解码后的字符串。服务器发送描述如下:

func ParseJSON(bytes []byte, conn net.Conn) (Message, string, string) {
flag := "tcp"
message := Message{}
err := json.Unmarshal(bytes, &message)
if err != nil {
log.Print("Unmarshal doesn't work: ")
log.Fatal(err)
}
fmt.Println(message.User.Login)
fmt.Println(message.Content)
conn.Write([]byte(message.Content))
return message, "func", flag
}

我如何在这个输入表单中输出

output := ui.NewMultilineNonWrappingEntry()
output.SetReadOnly(true)

从服务器接收到字符串?

更新:

go func() {
message, err := bufio.NewReader(conn).ReadString('\n')
if err!=nil{
log.Fatal(err)
}
output.SetText(message)
}()

这段代码放在ui.Main函数中,但是不起作用。

最佳答案

您可以尝试使用Append 方法:

output := ui.NewMultilineNonWrappingEntry()

// Call this from your message receiving function:
output.Append("message")

另一种选择是使用 SetText 并在其他地方保留文本缓冲区:

// Create a buffer:
buf := bytes.Buffer{}

// Write incoming messages to it:
buf.WriteString("message")

// Set the contents from the buffer
// This might be called periodically (and the buffer reseted):
output.SetText(buf.String())

关于user-interface - 从连接读取更新多行条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50489942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com