1. import os
  2. import platform
  3. import sys
  4. from PyQt5.QtCore import *
  5. from PyQt5.QtGui import *
  6. from PyQt5.QtWidgets import *
  7.  
  8. import numpy as np
  9. import matplotlib
  10. matplotlib.use("Qt5Agg")
  11. from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
  12. from matplotlib.figure import Figure #注意不是pyplot下的那个figure
  13.  
  14. class Table(QWidget):
  15.  
  16. def __init__(self):
  17. super().__init__()
  18. hhbox = QHBoxLayout() #横向布局
  19.  
  20. self.tableWidget = QTableWidget() #创建一个表格
  21. self.tableWidget.setRowCount(5)
  22. self.tableWidget.setColumnCount(4) #5行4列
  23. self.tableWidget.setHorizontalHeaderLabels(['第一行列','第二列','第三列','第四列'])
  24. self.tableWidget.setVerticalHeaderLabels(['第一行','第二行','第三行','第四行','第五行'])
  25. #表头
  26.  
  27. # 往表格里添加东西
  28. #nu
  29.  
  30. self.tableWidget.setItem(0,0,QTableWidgetItem(""))
  31. self.tableWidget.setItem(0,1,QTableWidgetItem(""))
  32. self.tableWidget.setItem(0,2,QTableWidgetItem(""))
  33. self.tableWidget.setItem(0,3,QTableWidgetItem(""))
  34.  
  35. self.tableWidget.setItem(1,0,QTableWidgetItem(""))
  36. self.tableWidget.setItem(1,1,QTableWidgetItem(""))
  37. self.tableWidget.setItem(1,2,QTableWidgetItem(""))
  38. self.tableWidget.setItem(1,3,QTableWidgetItem(""))
  39.  
  40. self.tableWidget.setItem(2,0,QTableWidgetItem(""))
  41. self.tableWidget.setItem(2,1,QTableWidgetItem(""))
  42. self.tableWidget.setItem(2,2,QTableWidgetItem(""))
  43. self.tableWidget.setItem(2,3,QTableWidgetItem(""))
  44.  
  45. self.tableWidget.setItem(3,0,QTableWidgetItem(""))
  46. self.tableWidget.setItem(3,1,QTableWidgetItem(""))
  47. self.tableWidget.setItem(3,2,QTableWidgetItem(""))
  48. self.tableWidget.setItem(3,3,QTableWidgetItem(""))
  49.  
  50. self.tableWidget.setItem(4,0,QTableWidgetItem(""))
  51. self.tableWidget.setItem(4,1,QTableWidgetItem(""))
  52. self.tableWidget.setItem(4,2,QTableWidgetItem(""))
  53. self.tableWidget.setItem(4,3,QTableWidgetItem(""))
  54.  
  55. hhbox.addWidget(self.tableWidget) #把表格加入布局
  56.  
  57. self.setLayout(hhbox) #创建布局
  58.  
  59. self.setWindowTitle("表格")
  60. self.resize(600,250)
  61. self.show()
  62.  
  63. class Draw(QDialog):
  64. def __init__(self,parent=None):
  65. super().__init__(parent)
  66. self.table = Table()
  67. self.ok = QPushButton()
  68. self.ok.setText('画图')
  69.  
  70. #绘图
  71. self.fig = Figure(figsize=(3, 3), dpi=100)
  72. self.figureCanvas = FigureCanvas(self.fig)
  73. self.graphicscene = QGraphicsScene()
  74. self.graphicscene.addWidget(self.figureCanvas)
  75. self.graphicview = QGraphicsView()
  76. self.graphicview.setScene(self.graphicscene)
  77. #self.setCentralWidget(self.graphicview)
  78.  
  79. layout = QGridLayout()
  80. layout.addWidget(self.table, 0, 0)
  81. layout.addWidget(self.ok, 1, 0)
  82. layout.addWidget(self.graphicview, 0, 1)
  83. self.setLayout(layout)
  84.  
  85. self.ok.clicked.connect(self.draw_pic)
  86.  
  87. def draw_pic(self):
  88.  
  89. #获取选中的项目
  90. item = self.table.tableWidget.selectedItems()
  91. ls=[]
  92. '''
  93. for i in item:
  94. ls.extend(self.table.tableWidget.indexFromItem(i).data())
  95. print(self.table.tableWidget.indexFromItem(i).data())
  96. '''
  97.  
  98. for i in item:
  99. a=self.table.tableWidget.indexFromItem(i).row()
  100. #print(a)
  101. #print(dir(self.table.tableWidget.indexFromItem(i)))
  102. b=self.table.tableWidget.indexFromItem(i).column()
  103. #print(b)
  104. #print(self.table.tableWidget.indexFromItem(i).data())
  105. ls.append(int(self.table.tableWidget.item(a,b).text()))
  106.  
  107. print(ls)
  108.  
  109. #显示
  110. self.fig.clf()
  111. self.ax = self.fig.add_subplot(1,1,1)
  112. self.ax.plot(ls)
  113. self.figureCanvas.draw()
  114. pass
  115.  
  116. if __name__ == "__main__":
  117. '''
  118. app = QApplication(sys.argv)
  119. dlg = Example()
  120. sys.exit(app.exec_())
  121. '''
  122. app = QApplication(sys.argv)
  123. form = Draw()
  124. form.setMinimumSize(1000,400)
  125. form.show()
  126. app.exec_()

Python——作业12(选做)选中矩阵的每行或每列画出对应的折线图(python programming)的更多相关文章

  1. 20175221 《Java程序设计》迭代和JDB(课下作业,选做):

    20175221 <Java程序设计> 迭代和JDB(课下作业,选做): 任务详情 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功 ...

  2. MyOD(课下作业,选做)

    MyOD(课下作业,选做) 代码要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.b ...

  3. 迭代和JDB(课下作业,选做)

    迭代和JDB(课下作业,选做) 题目要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图 ...

  4. 20175314薛勐 MyOD(课下作业,选做)

    MyOD(课下作业,选做) 要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 思路 伪代码: 读取命令行输入的参数(文件名) 以16为每个字 ...

  5. PyQt(Python+Qt)学习随笔:QTableView中数据行高和列宽的调整方法

    老猿Python博文目录 老猿Python博客地址 一.概述 在QTableView中,除了采取缺省的间隔显示行和列的数据外,还可以通过带调整数据的行高和列宽. 二.列宽调整方法 调整数据行列宽的方法 ...

  6. Arrays和String单元测试(课下作业,选做)

    在IDEA中以TDD的方式对String类和Arrays类进行学习- 测试相关方法的正常,错误和边界情况 - String类 - charAt - split - Arrays类 - sort - b ...

  7. Machine learning吴恩达第二周coding作业(选做)

    1.Feature Normalization: 归一化的处理 function [X_norm, mu, sigma] = featureNormalize(X) %FEATURENORMALIZE ...

  8. python画最最简单的折线图

    # encoding=utf-8import matplotlib.pyplot as pltfrom pylab import * #支持中文mpl.rcParams['font.sans-seri ...

  9. Python创建一个爬虫项目===从零开始哟!想说的下次 要不要出一期关于pycharm与Python之间的合作

    当然,不用爬虫框架,也是可以的 比如说 beauitfulsoup xml http 就可以完美的得到一个爬虫的解决方案! 个人的意思是,新手或者刚入门的可以考虑以上的方式进行练习后 在使用框架 首先 ...

随机推荐

  1. PAT Basic 1044 火星数字 (20 分)

    火星人是以 进制计数的: 地球人的 被火星人称为 tret. 地球人数字 到 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov ...

  2. 移动端的文本框获取焦点时导致fixed或absolute定位的按钮被手机键盘顶上去的问题

    var win_h = $(window).height();//关键代码 window.addEventListener('resize', function () { if($(window).h ...

  3. codeforces 576C Points on Plane 相邻两点的欧拉距离

    题意:给出n个点,要求排序后,相邻两点的欧拉距离之和小于等于2.5e9做法:由于0≤ xi, yi ≤ 1e6,所以可以将x<=1000的点分成一份,1000<x<=2000的点分成 ...

  4. MyBatis Generator 移除字段前缀

    在table标签内添加 <columnRenamingRule searchString="wrc_" replaceString=""/> < ...

  5. 第六章 组件 55 组件-使用components定义私有组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. Docker安装过程

    安装 Docker 源自:http://www.runoob.com/docker/centos-docker-install.html 从 2017 年 3 月开始 docker 在原来的基础上分为 ...

  7. vue项目,百度地图api高亮选取区域,高亮某个地区,行政区域等

    效果如下: var blist = [] ,maxZoom: });// 创建地图实例 var point = new window.BMap.Point(89.48,31.57); map.cent ...

  8. Python之threading模块的使用

    作用:同一个进程空间并发运行多个操作,专业术语简称为:[多线程] 1.任务函数不带参数多线程 #!/usr/bin/env python # -*- coding: utf-8 -*- import ...

  9. 【Python之路】特别篇--Python反射

    反射 说反射之前先介绍一下__import__方法,这个和import导入模块的另一种方式 1. import commons 2. __import__('commons') 如果是多层导入: 1. ...

  10. less命令:查看文件内容

    less 命令的作用和 more 十分类似,都用来浏览文本文件中的内容,不同之处在于,使用 more 命令浏览文件内容时,只能不断向后翻看,而使用 less 命令浏览,既可以向后翻看,也可以向前翻看. ...