fyne库学习-动手实践app

如果想快速学习一门技术,最好的办法就是实践,所以我又翻看了下原来做的项目,其中三边定位这个项目就很适合做一个图形界面程序,用户输入三个定位点坐标和定位距离,计算出交点,这个应该很适合做app。

为了快速完成一个自己的app,我将三边定位中的一个小问题:两点距离计算分离出来,做成app。

其中关键点有两个,一是计算:

基于平面空间的两点距离很好计算,计算横纵坐标差的平方和取根号即可,但是计算地球空间距离就不一样了。在这里,我参考了https://www.alanzucconi.com/2017/03/13/understanding-geographical-coordinates/这个网站,它使用了大圆距离计算地球两点距离。

第二个就是图形化实现了:

程序只需要输入两点经纬度,然后就可以计算距离,显然,只需4个输入框,一个提交按钮和一个显示结果的显示栏即可。

再写输入框时,默认的输入框长度太短,输入较长的文字会有部分被遮住,效果很差,在实践过程中,我使用了resize也不行,效果如下图所示,加不加resize都一样,后续再研究下解决办法。

 我目前的处理方法是使用widget.Form封装后,这样输入框就能铺满整行了,值得注意的是,widget.Form显示风格很像bootstrap中的form-group,form-control效果,如图:

 以上也是最终成品图。

在做输入框时,我想使用binging.Float做数据绑定,但是widget.NewEntryWithData接受的是string类型的绑定对象,只好老老实实的自己完成float转string。

所有代码在我的git仓库:https://github.com/Tarantiner/distance

接下来再详细了解下fyne的样式布局设计。


2021/04/25更新

entry输入框resize无效问题原因已找到,已有解决办法:

原因:

Every item in the box will have its width set to its MinSize().Width and the height will be equal for all items,

the largest of all the MinSize().Height values.

布局里面所有元素宽度为各自的最小宽度,高度是一样的,都是最大高度的那个元素的高。

解决办法:容器里不要使用布局,使用container.NewWithoutLayout

 

  

posted on 2021-04-23 14:28  Tarantino  阅读(937)  评论(0)    收藏  举报

导航