在我的fyne
GUI 上,我想显示用户可以复制的文本。到目前为止,我使用的是 (multi-line) widget.Entry
,请参见下面的示例。虽然这可行,但似乎不合适,因为“输入”意味着用户输入——这里不是这种情况。
如果我使用 widget.Label 或 canvas.Text,则无法复制字符。那么这里最好的方法是什么?
例子:
package main
import (
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/widget"
)
func main() {
myApp := app.New()
myWindow := myApp.NewWindow("demo")
txtBound := binding.NewString()
txtWid := widget.NewEntryWithData(txtBound)
txtWid.MultiLine = true
// we can disable the Entry field so the user can't modify the text:
txtWid.Disabled()
go func() {
for {
txtBound.Set(time.Now().Format("2006-01-02\n15:04:05\nMST -0700"))
time.Sleep(time.Second)
}
}()
content := container.NewBorder(nil, nil, nil, nil, txtWid)
myWindow.SetContent(content)
myWindow.Resize(fyne.NewSize(500, 300))
myWindow.ShowAndRun()
}
可以选择输入字段中的文本,然后使用鼠标/右键单击上下文菜单或 ctrl-c 进行复制。在 Windows 10 上,这看起来像