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. 检测udp端口

    linux 检测端口是否打开:nc -zuv ip 端口 服务器监听端口:nc -l -u ip 端口(可以发送和接受信息) 客户端检测端口:nc -u ip 端口(可以发送和接受信息) 查看监听的t ...

  2. Scal(三)——类与对象

    Scala快速入门(三)--类与对象 一.类 这边类的模板如下,和Java很像 object a { def main(args: Array[String]): Unit = { val perso ...

  3. python3.6 错误: ModuleNotFoundError:No module named "Crypto"

    原因及处理:在使用python是经常会用到import一个第三方库,但是有时候会提示某个模块不存在,如Crypto其实是因为Python3里面这个模块的名字变了, pip install pycryp ...

  4. facenet中pairs文件制作

    1.对图片进行重命名 """Rename the image based on the folder name""" import os i ...

  5. Java语言基础(13)

    1 继承(二) 案例:Demo1 public class Demo1 { public static void main(String[] args) { Bmw bmw = new Bmw(); ...

  6. JavaScript设计模式与开发实践(二)——apply&&call

    call和apply的用途 改变this指向 先看个例子: var obj1 = { name: 'sven' }; var obj2 = { name: 'anne' }; window.name ...

  7. java 和 c#返回值方法

    java 和 c#都是应用很广泛的语言,也互有优劣. 这两者都是面向对象的语言,在一个方法中如果类型不是void那么是需要return一个返回值的. 但是如果想要返回多个值该怎么办? 排除直接返回一个 ...

  8. BZOJ 4127: Abs (树链剖分 线段树求区间绝对值之和 带区间加法)

    题意 给定一棵树,设计数据结构支持以下操作 1 u v d 表示将路径 (u,v) 加d(d>=0) 2 u v 表示询问路径 (u,v) 上点权绝对值的和 分析 绝对值之和不好处理,那么我们开 ...

  9. 对Webpack 应用的研究-----------------引用

    对大多数 Web 应用来说,页面性能直接影响着流量.这是一个经常为我们所忽视的事实.用户长时间的等待流失的不仅仅是跳出率.转化率,还有对产品的耐心和信赖.很多时候我们没有意识到性能问题,那是因为平常开 ...

  10. 一篇不错的BIO, NIO文章

    菜菜的我硬是读了2个小时, 哭了 BIO到NIO源码的一些事儿之BIO https://juejin.im/post/5c2cc075f265da611037298e#heading-3 整体上 BI ...