bootstrap table updatesell 的时候如何不刷新表格_运行图杂谈 | 从一个标尺编辑的不同步Bug谈起...

从这篇文章开始,我想开一个全新的系列,谈一谈关于列车运行图的各种杂七杂八,主要是关于我开发的软件pyETRC。其实这个系列我想了很久了,一直想写点东西,但这个项目实在太大,一时半会不知道如何下手。毕竟从2018年开始,这个项目至今已经积累了至少2万行代码。如果要从整个项目的背景、基本设定开始讲,那将是一个令人望而生畏的大工程,可能几十篇推送也讲不完。最近想了想,干脆就从近来的工作随便写点吧。这个系列不定期更新,当写到什么有意思的,想吹一吹的东西时,就更新(老鸽子了x)。

虽然作为这个系列的第一篇推送,但这篇文章仅仅是关于最近工作的一点东西。说实话,我并没有考虑要写什么样的文章,只是个杂谈,所以这篇推送将会既包括代码实现的内容,也包括运行图方面的内容。

这个项目基于Python3和PyQt5,这篇文章会包含一些相关的内容。

01

背景

按道理,作为整个系列的开篇,我应该先给一下整个系统的介绍,但很遗憾,我暂时没有这个兴致来做这么大一个工程。如果有兴趣,可移步github或者我们的在线文档。(点击“阅读原文”进入本项目在线文档;文档首页有更多信息)

下面图给出的是程序的主界面。这篇文章的背景,就是大约一两个月前,我收到反馈,“标尺编辑”页面的“均速”计算有问题。经过检查,发现是程序运行后,每次打开新的运行图后,“均速”对应的区间里程信息没有更新所致。

43ccc979c4c14bcfe422dd7aa67daa6b.png

按:“标尺”或称“区间运行时分标准”,它规定列车在铁路线路的每个区间运行的时间。

02

原始代码

“标尺编辑”一直被作为pyETRC项目的一大特色,也是立项之初就开始写的功能,随着第一个发行版就上线了。这样也带来一个后果,就是早期写的代码实在是太烂了;但后面维护时,又轻易不敢动。

由于早期写这个项目的时候,没有充分引入面向对象的设计模式,而是把大多数代码都写到一个文件里(这个文件一度达到4000多行),当时为了回避添加过多的属性,很多信号、槽的连接都是用lambda表达式做的。虽然后期很多地方做了重构,但标尺部分的遗毒还在,比如,确定、取消按钮的连接:

btnOk.clicked.connect(lambda: self._apply_ruler_change(widget))btnCancel.clicked.connect(lambda: self._discard_ruler_change(widget))btnDel.clicked.connect(self._del_ruler)

为了实现每一行时间调整后,实时更新“均速”一栏的数据,当时是这样写的:

spinMin.valueChanged.connect(lambda: self._ruler_interval_changed(    now_line, tableWidget, mile))spinSec.valueChanged.connect(lambda: self._ruler_interval_changed(    now_line, tableWidget, mile))

其中no

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值