我来自Python和PyQt图形用户界面,我习惯于在我的程序中添加一种控制台,目的是向用户指示正在进行的进程、遇到的执行错误等信息。
在Python/PyQt中,我使用QLineEdit来完成这个任务,它非常容易使用,只需在我的GUI中创建并插入小部件,然后通过调用appen()为每个信息添加一行即可。
例如,控制台可以在加载esedb文件时说“esedb loading”,然后在完成时说“esedb file loaded”,然后说“esedb parsing”进行下一步,等等......
现在,我正在和Fyne学习Golang,我正在寻找一种类似的方法。
我找到了widget.NewTextGrid(),但它并没有像我期望的那样工作。我不能只追加新行。如果我理解得很好,我必须将文本存储在字符串变量中
你能给我指点一下做那件事的方法吗?
谢谢!
package main
import (
//"fmt"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
)
func main() {
myapp := app.New()
myappGui := myapp.NewWindow("Example")
myappGui.Resize(fyne.NewSize(400, 600))
textConsole := widget.NewTextGrid()
2条答案
按热度按时间qrjkbowd1#
TextGrid是一个复杂的组件,用于在等宽排列(如终端等)中管理字符特定的字体样式。
为了提高性能,我建议在Scroll小部件中使用VBox,其中每行都是另一个附加标签(您也可以将它们设置为等宽文本样式)。如果您希望文本是交互式的,那么正如其他人所说的,NewMultiLineEntry很适合您。
文本是复杂的,我们正在努力优化更多的复杂用法和大文件处理,所以它会在以后的版本中变得更加流畅...
vfwfrxfs2#
widget.TextGrid
没有追加行的方法,但是支持使用TextGrid.Text()
查询其当前内容,所以可以设置一个新文本,将其当前内容和新行连接起来,例如:但是要知道
widget.TextGrid
不支持滚动:它的大小将由它的字符串内容决定。当然,你可以使用container.Scroll
使它可滚动。例如:
或者你可以使用多行
widget.Entry
。它也支持选择它的任何部分,默认情况下它也是可编辑的。当然你可以禁用编辑。它默认支持滚动。请看这个例子: