zoukankan      html  css  js  c++  java
  • Python——作业12(选做)选中矩阵的每行或每列画出对应的折线图(python programming)...

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

    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("1"))
            self.tableWidget.setItem(0,1,QTableWidgetItem("2"))
            self.tableWidget.setItem(0,2,QTableWidgetItem("3"))
            self.tableWidget.setItem(0,3,QTableWidgetItem("3"))
            
            self.tableWidget.setItem(1,0,QTableWidgetItem("7"))
            self.tableWidget.setItem(1,1,QTableWidgetItem("5"))
            self.tableWidget.setItem(1,2,QTableWidgetItem("6"))
            self.tableWidget.setItem(1,3,QTableWidgetItem("7"))
    
            self.tableWidget.setItem(2,0,QTableWidgetItem("8"))
            self.tableWidget.setItem(2,1,QTableWidgetItem("9"))
            self.tableWidget.setItem(2,2,QTableWidgetItem("10"))
            self.tableWidget.setItem(2,3,QTableWidgetItem("11"))
    
            self.tableWidget.setItem(3,0,QTableWidgetItem("4"))
            self.tableWidget.setItem(3,1,QTableWidgetItem("2"))
            self.tableWidget.setItem(3,2,QTableWidgetItem("3"))
            self.tableWidget.setItem(3,3,QTableWidgetItem("1"))
    
            self.tableWidget.setItem(4,0,QTableWidgetItem("8"))
            self.tableWidget.setItem(4,1,QTableWidgetItem("9"))
            self.tableWidget.setItem(4,2,QTableWidgetItem("10"))
            self.tableWidget.setItem(4,3,QTableWidgetItem("5"))
            
    
            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_()

    posted on 2019-06-03 16:55 蔡军帅_ACM 阅读(...) 评论(...) 编辑 收藏

  • 相关阅读:
    浅析一类要求相邻不同的环上染色问题
    中国剩余定理(CRT)及其扩展(ExCRT)
    bsoj5988 [Achen模拟赛]期望 题解
    涂色游戏 题解
    [JZOJ A组]球 题解
    由 [SDOI2012]Longge的问题 探讨欧拉函数和莫比乌斯函数的一些性质和关联
    [NOIP模拟]文本编辑器 题解
    Nilearn 小记
    django 开发笔记1
    浅谈无需工作量证明的加密货币
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270754.html
Copyright © 2011-2022 走看看