V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
AmrtaShiva
V2EX  ›  问与答

golang ui 怎么把某个包里面内容返回到 UI 界面呢?

  •  
  •   AmrtaShiva · 2020-05-17 14:46:37 +08:00 · 866 次点击
    这是一个创建于 1504 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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("%s\n", 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 日:%s\n", y, m, d, jmc)
    			} else {
    				//打印年份节气
    				jmc = julian.JqHs[i+1] //节气名称
    				fmt.Printf("阳历日期: %d 年%d 月%d 日:%s\n", y, m, d, jmc)
    			}
    		}
    	}
    
    5 条回复    2020-05-19 09:53:22 +08:00
    labulaka521
        1
    labulaka521  
       2020-05-18 07:47:57 +08:00 via Android
    这两年没更新还能用吗,作者估计都弃坑了,推荐一个 gioui
    AmrtaShiva
        2
    AmrtaShiva  
    OP
       2020-05-18 08:49:29 +08:00
    @labulaka521 #1 那个不好写啊
    labulaka521
        3
    labulaka521  
       2020-05-18 09:28:04 +08:00 via Android   ❤️ 1
    AmrtaShiva
        4
    AmrtaShiva  
    OP
       2020-05-18 09:38:09 +08:00
    @labulaka521 #3 谢谢。我先试一下现在这个。框架都写好了。就差里面内容了 https://b23.tv/1IrhXR
    AmrtaShiva
        5
    AmrtaShiva  
    OP
       2020-05-19 09:53:22 +08:00
    @labulaka521 #3 这个库支持汉字输入吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:57 · PVG 06:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.