import os
import platform
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import * import numpy as np
import matplotlib
matplotlib.use("Qt5Agg")
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure #注意不是pyplot下的那个figure class Table(QWidget): def __init__(self):
super().__init__()
hhbox = QHBoxLayout() #横向布局 self.tableWidget = QTableWidget() #创建一个表格
self.tableWidget.setRowCount(5)
self.tableWidget.setColumnCount(4) #5行4列
self.tableWidget.setHorizontalHeaderLabels(['第一行列','第二列','第三列','第四列'])
self.tableWidget.setVerticalHeaderLabels(['第一行','第二行','第三行','第四行','第五行'])
#表头 # 往表格里添加东西
#nu self.tableWidget.setItem(0,0,QTableWidgetItem(""))
self.tableWidget.setItem(0,1,QTableWidgetItem(""))
self.tableWidget.setItem(0,2,QTableWidgetItem(""))
self.tableWidget.setItem(0,3,QTableWidgetItem("")) self.tableWidget.setItem(1,0,QTableWidgetItem(""))
self.tableWidget.setItem(1,1,QTableWidgetItem(""))
self.tableWidget.setItem(1,2,QTableWidgetItem(""))
self.tableWidget.setItem(1,3,QTableWidgetItem("")) self.tableWidget.setItem(2,0,QTableWidgetItem(""))
self.tableWidget.setItem(2,1,QTableWidgetItem(""))
self.tableWidget.setItem(2,2,QTableWidgetItem(""))
self.tableWidget.setItem(2,3,QTableWidgetItem("")) self.tableWidget.setItem(3,0,QTableWidgetItem(""))
self.tableWidget.setItem(3,1,QTableWidgetItem(""))
self.tableWidget.setItem(3,2,QTableWidgetItem(""))
self.tableWidget.setItem(3,3,QTableWidgetItem("")) self.tableWidget.setItem(4,0,QTableWidgetItem(""))
self.tableWidget.setItem(4,1,QTableWidgetItem(""))
self.tableWidget.setItem(4,2,QTableWidgetItem(""))
self.tableWidget.setItem(4,3,QTableWidgetItem("")) hhbox.addWidget(self.tableWidget) #把表格加入布局 self.setLayout(hhbox) #创建布局 self.setWindowTitle("表格")
self.resize(600,250)
self.show() class Draw(QDialog):
def __init__(self,parent=None):
super().__init__(parent)
self.table = Table()
self.ok = QPushButton()
self.ok.setText('画图') #绘图
self.fig = Figure(figsize=(3, 3), dpi=100)
self.figureCanvas = FigureCanvas(self.fig)
self.graphicscene = QGraphicsScene()
self.graphicscene.addWidget(self.figureCanvas)
self.graphicview = QGraphicsView()
self.graphicview.setScene(self.graphicscene)
#self.setCentralWidget(self.graphicview) layout = QGridLayout()
layout.addWidget(self.table, 0, 0)
layout.addWidget(self.ok, 1, 0)
layout.addWidget(self.graphicview, 0, 1)
self.setLayout(layout) self.ok.clicked.connect(self.draw_pic) def draw_pic(self): #获取选中的项目
item = self.table.tableWidget.selectedItems()
ls=[]
'''
for i in item:
ls.extend(self.table.tableWidget.indexFromItem(i).data())
print(self.table.tableWidget.indexFromItem(i).data())
''' for i in item:
a=self.table.tableWidget.indexFromItem(i).row()
#print(a)
#print(dir(self.table.tableWidget.indexFromItem(i)))
b=self.table.tableWidget.indexFromItem(i).column()
#print(b)
#print(self.table.tableWidget.indexFromItem(i).data())
ls.append(int(self.table.tableWidget.item(a,b).text())) print(ls) #显示
self.fig.clf()
self.ax = self.fig.add_subplot(1,1,1)
self.ax.plot(ls)
self.figureCanvas.draw()
pass if __name__ == "__main__":
'''
app = QApplication(sys.argv)
dlg = Example()
sys.exit(app.exec_())
'''
app = QApplication(sys.argv)
form = Draw()
form.setMinimumSize(1000,400)
form.show()
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. 版本控制工具 svn 二

    一.图标 忽略图标 实例 二.版本 回滚 tortoisesvn ——> 版本更新——>一般情况下使用 “显示日子” 回滚 三.版本冲突 版本冲突产生原因 多人先后提交文件,每个人提交的文 ...

  2. unittest 报告——HTMLTestRunner/BSTestRunner+代码覆盖率

    1. HTMLTestRunner.py 代码(python3)如下: python2:  https://github.com/tungwaiyip/HTMLTestRunner "&qu ...

  3. Linux用户组账号文件——group和gshadow

     /etc/passwd文件中包含着每个用户的用户组ID(GID). /etc/group文件对用户组的许可权限的控制并不是必要的,这是因为Linux系统用来自于/etc/passwd文件的UID.G ...

  4. kettle案例实现

    案例一.把stu1的数据按id同步到stu2,stu2有相同id则更新数据 在kettle中新建转换 点击左上角文件—新建—转换到核心对象界面,点击输入,找到表输入拖拽到中间 双击表输入,在数据库连接 ...

  5. 配置Multipath多路径环境

    iscsi服务器      eth0:192.168.4.5/24  eth1:192.168.2.5/24 iscsi客户端      eth0:192.168.4.100/24  eth3:201 ...

  6. HTML5测试题整理Ⅰ

    1.在 HTML5 中,哪个元素用于组合标题元素? 答案:<hgroup>   2.HTML5 中不再支持哪个元素? 答案:<font>,<acronym>,< ...

  7. VS的快捷操作

    连按两下Tab,生成代码块.修改i为n,再按一次Tab,对应位置自动改变. Ctrl+. 或者 Alt+Enter ctor  连按两下Tab,生成无返回值的构造函数(constructor func ...

  8. 51 Nod 1282 时钟 (循环中的最小表示+哈希)

    1282 时钟  题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 有N个时钟,每个时钟有M个指针,P个刻度.时钟是圆形 ...

  9. 字符单链表识别数字,字母,其它字符,并分为三个循环链表的算法c++实现

    已知一个单链表中的数据元素含有三类字符(即字母字符,数字字符和其它字符),试编写算法,构造三个循环链表,使每个循环链表中只含有同一类的字符,且利用原表中的结点空间作为这三个表的结点空间. 实现源代码: ...

  10. c++顺序表(数组)查找最大最小值

    #include <iostream> #define MAXSIZE 100 using namespace std; void find(int a[],int m) {int min ...