golang ui 怎么把某个包里面内容返回到 UI 界面呢?
資深大佬 : AmrtaShiva 0
- 如题 第一次用 Go 写 GUI .第三方库. https://github.com/andlabs/ui
- 项目结构是两个模块
mod A 核心代码以 cli 为主 mod B GUI 部分
现在需要让 mod B 的函数调用 mod A 函数中 fmt.Printf()部分.把 fmt.Printf()的显示到 GUI 界面. 这方面该怎么让打印出来的值返回呢?谢谢.
主函数代码
func main() { ui.Main(w) } //主窗口 func w() { //生成主窗口 win := ui.NewWindow("农历择吉", 800, 600, true) //添加鼠标点击之后关闭窗口 win.OnClosing(func(*ui.Window) bool { ui.Quit() return true }) //添加"退出"菜单时执行的函数功能 ui.OnShouldQuit(func() bool { win.Destroy() return true }) //设置控件 tab := ui.NewTab() Info(tab, win) //历法信息 ListDay(tab, win) //农历月历表 JiQi24(tab, win) //24 节气 About(tab, win) //软件信息 hbox := ui.NewHorizontalBox() //创建水平框架 hbox.SetPadded(true) //显示 win.Show() }
主函数 24 节气信息
//节气信息 func JiQi24(tab *ui.Tab, win *ui.Window) { win.SetChild(tab) win.SetMargined(true) tab.Append("24 节气", TabJiQi24()) tab.SetMargined(2, true) //数字为显示顺序 } //显示 24 节气标签 func TabJiQi24() ui.Control { hbox := ui.NewHorizontalBox() hbox.SetPadded(true) vbox := ui.NewVerticalBox() vbox.SetPadded(true) jq24s := jieqiInfo() fmt.Printf("%sn", jq24s) lab := ui.NewLabel(``) lab.SetText(jq24s) vbox.Append(lab, true) hbox.Append(vbox, false) return hbox }
主函数要显示内容
现在这里的内容是能显示出来的不过不是需要的内容
func jieqiInfo() string { attrstr = ui.NewAttributedString("这里传入 stdout 出来的内容") appendWithAttributes("气1", ui.TextSize(18)) attrstr.AppendUnattributed("n") appendWithAttributes("节气2", ui.TextSize(18)) attrstr.AppendUnattributed("n") appendWithAttributes("节气3", ui.TextSize(18)) attrstr.AppendUnattributed("n") return attrstr.String() //返回获取的字符串内容 }
cli 部分要显示到 GUI 的内容如下
希望把下面 fmt.Printf(“…..”)内容显示到 func jieqiInfo() 对应的 appendWithAttributes(“节气2”, ui.TextSize(18))中,替换里面的"节气 2 " 同时不想在 GUI 界面的函数中传参数.....
var jmc string for i := 1; i < 28; i++ { t := all[i] y := t.Year() m := int(t.Month()) d := t.Day() //h := t.Hour() if i > 24 { jmc = julian.JqHs[i-23] //打印年份节气 fmt.Printf("阳历日期: %d 年%d 月%d 日:%sn", y, m, d, jmc) } else { //打印年份节气 jmc = julian.JqHs[i+1] //节气名称 fmt.Printf("阳历日期: %d 年%d 月%d 日:%sn", y, m, d, jmc) } } }
大佬有話說 (5)