ACCC-Club聚会地点计算程序
来源:互联网 发布:上海 现代建筑 知乎 编辑:程序博客网 时间:2024/06/06 14:13
项目地址: https://github.com/VonSdite/WhereMeet
ACCC-Club聚会地点计算程序
BTW: 聚会地点是基于饭堂二楼的…
运行环境
- python 3.6.2
- 需要的模块 PyQt5, requests, itchat
- 运行分辨率 1920*1080 (有可能会影响显示)
运行
完成的功能
获取当日腾讯控股(00700)开盘价
md5值生成,最终行列生成的处理
丑陋的UI界面(被迫的接触了PyQt5, 所以代码上可能很乱)
UI界面中的桌子的排布可以修改config.txt来修改,可以修改颜色,一个空格是一个间隔,多个空格可以空的更开。方便了桌子的增加,删除,修改
微信发送消息功能
(itchat模块有一个问题,必须登录微信,不然会陷入死循环,未解决该问题)- 解决微信登录问题,利用线程+信号-槽机制解决(线程内来开微信,信号-槽来发送错误信息到主线程,因为PyQt5 GUI限制在主线程中调用)
网络异常的捕获及处理
重写itchat登录过程
- 重写微信登录函数
- 由于itchat自动登录 虽然异常处理我都捕获并处理了
- 但是还是存在当我网络正常,但是不想登录或者不想扫二维码而把二维码关闭时
- 此时wechat发消息这个线程是陷入死循环的,是一直等待你去登录微信
- 如果只是一条线程倒是无所谓, 但是你多次按了微信发送消息的按钮,却不登录
- 会开了很多条线程,十分浪费系统资源
- 所以重写了itchat登录的过程
生成过程
- 参考了这幅图,除了生成行号和列号与下同不同外,其余基本相似
- 根据‘当天日期+聚会当天腾讯控股 (00700)的开盘价’构成的字符串生成md5值
- 然后将所得的md5值平均分成两部分,并转换为10进制
- 分别求所得的两部分的所有数位和 A, B (数位和+偏移值,加偏移值为了使点分布更均匀)
- A %= 总共的行数 得聚会位置的行号
- B %= A求出来的行的总共列数 得聚会位置的列号
关于偏移值(test文件夹就是找偏移量的)
- 因为单纯的对生成的十进制数 所有数位求和再取余所得的分布可能并不是那么均匀
- 不过寻找合适的偏移量的过程,可能存在玄学的影响,毕竟160个开盘价的数据量并不是那么大
- 找到的偏移量可能仅适合这160个数据。(有带考察,如果是真的,那就要改变生成行列的算法了)
不加偏移量时,160个开盘价所得的散点图如下:
在1到10w的范围内找到偏移量27666使得加上偏移量后点分布均匀度提高
吐槽
- Qt将所有GUI相关的处理都限制在主线程中,这么做有助于防止意想不到的访问冲突产生,但也限制了线程中某些简单的UI交互的实现,比如QMessageBox。 因为这个原因…傻傻地弄了n个小时!!
- 使用信号-槽来解决itchat不登录的问题,emmmm,玄学,一下午试了线程间信号-槽来发送消息总是奔溃,结果晚上重写一遍就可以了
- oh, 还有一点,一条线程只能用一次, 所以得重新构建
阅读全文
0 0
- ACCC-Club聚会地点计算程序
- ACCC
- 11-8聚会地点:)
- 聚会地点已定,大家来看一下!![HOT]
- [BZOJ1764][USACO MAR11银组]聚会地点
- 【树上倍增】【USACO MAR11银组】聚会地点
- 成都.Net Club第3次聚会结束
- 在8X8的棋盘上分布着n个骑士,他们想约在某一个格中聚会。骑士每天可以像国际象棋中的马那样移动一次,可以从中间像8个方向移动(当然不能走出棋盘),请计算n个骑士的最早聚会地点和要走多少天。要求尽早聚会
- 根据输入的地点坐标计算中心点
- 地点
- 地点
- cf gym101061H Robocon Club(简单计算几何 似乎卡精度)
- 关于CSDN。济南区聚会的时间、地点、费用的讨论
- 福建PHP社区聚会正式通知 [9.30晚7点,厦门大学 附地点及路线图]
- 福建PHP社区聚会正式通知 [9.30晚7点,厦门大学 附地点及路线图]
- 福建PHP社区聚会正式通知 [9.30晚7点,厦门大学 附地点及路线图]
- 福建PHP社区聚会正式通知 [9.30晚7点,厦门大学 附地点及路线图]
- 福建PHP社区聚会正式通知 [9.30晚7点,厦门大学 附地点及路线图]
- Linux可变参数
- Codeforces Round #438 题解
- Azkaban安装
- 51nod 1158 全是1的最大子矩阵
- 简单js实现城市级联
- ACCC-Club聚会地点计算程序
- 用JavaScript代码编写日历
- 财商低的六大表现!你中招了吗?
- JavaScript执行上下文,执行上下文栈
- 设计模式——装饰者模式
- 视频基础知识
- Codeforces 868C Qualification Rounds【思维】
- 线程初步(二)
- MyBatis Generator系列(三)----修改源码实现中文注释