'''
实现简单画板功能并存储线段信息
'''
import sys
import time
import pymysql.cursors
from PyQt5.QtWidgets import (QApplication, QWidget)
from PyQt5.QtGui import (QPainter, QPen)
from PyQt5.QtCore import Qtconnect = pymysql.Connect(host='localhost',port=3306,user='edu',passwd='123456',db='test',charset='utf8'
)# 获取游标
cursor = connect.cursor()class Example(QWidget):def __init__(self):super(Example, self).__init__()#resize设置宽高,move设置位置self.resize(400, 300)self.move(100, 100)self.setWindowTitle("简单的画板1.0")#setMouseTracking设置为False,否则不按下鼠标时也会跟踪鼠标事件self.setMouseTracking(False)#设置两个变量接收移动中的点的x、y坐标self.pos_x = 20self.pos_y = 20def paintEvent(self, event):painter = QPainter()painter.begin(self)pen = QPen(Qt.black, 2, Qt.SolidLine)painter.setPen(pen)#定点(20, 20) 到 (self.pos_x, self.pos_y)之间画线painter.drawLine(20, 20, self.pos_x, self.pos_y)painter.end()def mouseMoveEvent(self, event):'''按住鼠标移动事件:更新pos_x和pos_y的值调用update()函数在这里相当于调用paintEvent()函数每次update()时,之前调用的paintEvent()留下的痕迹都会清空'''self.pos_x = event.pos().x()self.pos_y = event.pos().y()self.update()line_end_x = event.pos().x()line_end_y = event.pos().y()# 先看一下有没有线段信息,没有则创建sql = "SELECT count(*) FROM line WHERE line_name = '%s' "data = ('line1',)cursor.execute(sql % data)rowcount = cursor.fetchall()[0][0]print('共查找出', rowcount, '条数据')if (rowcount == 0):# 插入数据sql = "INSERT INTO line (line_name, line_start_x, line_start_y,line_end_x,line_end_y) VALUES ( '%s', '%d','%d','%d' ,'%d'  )"data = ('line1', 20, 20, 20, 20)cursor.execute(sql % data)connect.commit()print('成功插入', cursor.rowcount, '条数据')else:sql = "UPDATE line SET line_end_x = %d,line_end_y=%d,update_time='%s' WHERE line_name = '%s' "now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())print(now)data = (line_end_x, line_end_y, now, 'line1',)cursor.execute(sql % data)connect.commit()print('成功修改', cursor.rowcount, '条数据')if __name__ == "__main__":app = QApplication(sys.argv)pyqt_learn = Example()pyqt_learn.show()app.exec_()# 关闭连接cursor.close()connect.close()

python实现画板功能并操作数据库相关推荐

  1. python大佬养成计划----flask_sqlalchemy操作数据库

    flask_sqlalchemy 使用对象关系映射(Object-Relational Mapper, ORM)框架,它将低层的数据库操作指令抽象成高层的面向对象操作.也就是说,如果我们直接使用数据库 ...

  2. 关键词爬虫,Python花瓣画板关键词采集存储数据库

    想要寻找图片的小伙伴们应该不会错过这个网站,对,没错,就是花瓣网,各种图片应有尽有,而花瓣网的推荐画板里面的词还是非常不错的,可惜被和谐了不少,想要采集花瓣画板的词,python爬虫当然是没问题的,花 ...

  3. python中登录、注册操作数据库

    # 1.注册.登录# 1.注册的时候存账户密码到数据库里面,密码存密文,要加盐# 2.登录的时候账号.密码从数据里面取,登录失败一次,错误次数 + 1,错误次数大于3不让登录# 1.建表 id,use ...

  4. python fetchall方法_python3.5操作数据库中fetchall的问题

    import pymysql.cursors import networkx as nx Connect to the database connection = pymysql.connect(ho ...

  5. Python基础入门自学——19--访问数据库

    继续前面的工作需求解决: 具体项目3:对于每个单位的考核结果进行分析,如果连续2个月出现红牌,要给与警告,连续3个月及以上的,要处罚,我们要实现的就是给出提示,连续2次出现红牌的月份,连续3次出现红牌 ...

  6. python如何连接数据库_python如何访问数据库

    1.背景: python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等. 打开链接 https://wiki.python.org/moin/Da ...

  7. python实现数据库事务回滚_使用Python脚本实现MySQL误操作的快速回滚

    1.简介 在Oracle数据库中,当一个误操作被提交后,我们可以通过Oracle提供的闪回功能将表闪回至误操作之前的状态.mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是 ...

  8. [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. oracle数据库更新语句_20_手把手教你学Python之操作数据库

    数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等.数据库的主要特点: 以一定的方式组织.存储数据: 能为多个用户共享: 与程序彼此独立. -- 数据 ...

  10. python与数据库完整项目_python入门:操作数据库项目实例分享

    本文根据一个项目实例,记录分享一下python将数据库的内容提取显示到程序界面的过程及相关设置,探索python操作数据库的用法. 主要分享内容: 1.显示数据库内容. 2.修改数据库内容. 3.表格 ...

最新文章

  1. python2.7环境下“No module named matplotlib.pyplot”的解决办法
  2. 作业帮:字符串反转(头部插入)
  3. 算法之【辗转相除法】
  4. [asp.netMVC]通过configSource提高web.config配置灵活性
  5. 零基础学python电子书-零基础学Python
  6. excel不显示0_【扫盲】小白必看:excel表里数字格式常见的几种错误?
  7. appium入门篇(2)--desired capabilities
  8. Java高质量20问
  9. python读取dbf并导出excel格式_Python导出DBF文件到Excel的方法
  10. R语言和Rtools的详细下载安装教程
  11. 用Java写一个随机排序的功能
  12. unity 裙子摆动_Unity中实现MMD效果
  13. 【弹出USB大容量存储设备时出问题】两步搞定
  14. 通过v$bgprocess查看后台进程
  15. win10 启动后无法正常显示桌面/黑屏
  16. 【MySQL】MySQL的锁与事务隔离级别详解
  17. win7下笔记本电脑给手机开热点
  18. Log-Euclidean metric on Riemannian manifold 黎曼流形上的Log-Euclidean测度
  19. 学生用计算机怎么调,学生计算器怎么调时间
  20. 初学OpenGL(7):颜色和光照

热门文章

  1. SuspendLayout,ResumeLayout,Layout,PerformLayout
  2. 【Webcam设计】总结与代码仓库
  3. jQuery事件委托
  4. innodb redo buffer的认识
  5. 凸优化第二章凸集 2.3 保凸运算
  6. 年入百万的表弟给我上一课:互联网思维该怎么接地气
  7. spring读取jdbc(file方式)
  8. 第三百四十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制...
  9. 主机网络切换后,docker toolbox里的容器网络不通了,解决方法
  10. Xshell中文乱码怎么处理?