本来用go做工具做一些批量工作,今天试着做下go语言的GUI界面,用Fyne。


packagemainimport("bufio""fmt""/fyne/v2""/fyne/v2/app""/fyne/v2/container""/fyne/v2/data/binding""/fyne/v2/widget""os""time")vargAPP*=""(yearint,)(int,int){aMonth:=(year,month,1,0,0,0,0,().Location())//月preMonth:=(0,-1,0)//上个月(),int(())}funcgetmonthlastday(yearint,)int{firstOfMonth:=(year,month,1,0,0,0,0,().Location())//首日lastOfMonth:=(0,1,-1)//末日()}//进销存sqlfuncstart_click(){gen_sql()}funcshowlogwin_click(){showlogwin(*gAPP,gexternbings)//把全局绑定字符串对象传给子窗口}funcmain(){gexternbings=(glogstring)//创建一个绑定对象,并绑定到全局字符串myApp:=()gAPP=myAppmyWin:=("你好!")hello:=("你好")bn:=("生成“进销存sql”!",start_click)bnjxc100:=("生成“进销存100sql”!",start100_click)bnjxcbdp:=("生成“进销存bdpsql”!",startbdp_click)bn2:=("生成“出库sql”!",gen_outsql)bn3:=("生成“出库100sql”!",gen_out100sql)bn4:=("生成“出库bdpsql”!",gen_outbdpsql)bn5:=("显示log窗口",showlogwin_click)bn6:=("生成2022入库sql",gen2022instock_click)//把这些UI组件放到窗口,((hello,(bn,bnjxc100,bnjxcbdp),(bn2,bn3,bn4),bn5,bn6))((600,400))()}funcshowlogwin(,logs*){win:=("log")text:=(*logs)//再绑定到具体显示组件=(text)((600,600))()}Fyne不支持中文,如果需要支持中文,需要一些配置。
比如,系统环境变量FYNE_FONT。指向一个ttf文件。
Fyne的组件,右键菜单仍然是英文。这点需要解决。
发现问题:
log窗口,在加入1000行文本后,卡顿得几乎不能移动窗口内的光标。
很可能是组件问题,entry组件不支持大量数据。
可以尝试一下text组件。