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
原创粉丝点击