예제 #1
0
class JanelaPolinomio (QMainWindow, Ui_MainWindow):
    
    def __init__(self):        
        super(JanelaPolinomio, self).__init__()       
        self.setupUi(self)
        
        # Adicionando a área de desenho da figura
        self.grafico = Figure()
        self.canvasFC = FC(self.grafico)
        self.canvasFC.sizePolicy().setVerticalStretch(10)
        
        self.verticalLayout.addWidget(self.canvasFC)
        
      #  self.actionTracar.triggered.connect(self.apertouBotaoPlota)
        self.frLimites.setVisible(False)
        
        c = np.array([1.0, 0.0, 0.0, 0.0, 0.0, 0.0])
        self.calculaPontos(c)
        self.btFaca.clicked.emit(True)


    def calculaPontos(self, coefs):
        u"""
        Calcula os pontos a serem traçados para o polinômio em questão
        """       
        eq = np.poly1d(coefs)
        
        x = np.linspace (-10.0,10.0,101)
        y = eq(x)
        
        self.grafico.clear()
        self.graf = self.grafico.add_subplot(111)       
        self.graf.plot(x,y,'b') 
        self.canvasFC.draw()
        # Obrigado ao StackOverflow
        # http://stackoverflow.com/questions/30880358/matplotlib-figure-not-updating-on-data-change
        

#    @pyqtSlot()
#    def apertouBotaoPlota(self):
#        # conseguir os coeficientes  
#        c = np.array([float(self.edX5.text()),
#                      float(self.edX4.text()),
#                      float(self.edX3.text()),
#                      float(self.edX2.text()),
#                      float(self.edX1.text()),
#                      float(self.edX0.text())])
#        self.calculaPontos(c)


    def on_actionTracar_triggered(self):
        # conseguir os coeficientes  
        c = np.array([float(self.edX5.text()),
                      float(self.edX4.text()),
                      float(self.edX3.text()),
                      float(self.edX2.text()),
                      float(self.edX1.text()),
                      float(self.edX0.text())])
        self.calculaPontos(c)

    def on_actionLimites_triggered(self):        
        self.frLimites.setVisible(True)

    def on_btFaca_clicked(self):
        self.graf.set_xlim(float(self.edXmin.text()),float(self.edXmax.text()))
        self.graf.set_ylim(float(self.edYmin.text()),float(self.edYmax.text()))
        self.frLimites.setVisible(False)
        self.canvasFC.draw()
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(1500, 842)        
        MainWindow.setAutoFillBackground(False)
        MainWindow.setStyleSheet(_fromUtf8("background-color: rgb(197, 197, 197)"))

        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.stackedWidget = QtGui.QStackedWidget(self.centralwidget)
        self.stackedWidget.setGeometry(QtCore.QRect(0, 0, 1500, 842))
        self.stackedWidget.setObjectName(_fromUtf8("stackedWidget"))


        self.page1 = QtGui.QWidget()
        self.page1.setObjectName(_fromUtf8("page"))
        self.lineEdit1 = QtGui.QLineEdit(self.page1)
        self.lineEdit1.setGeometry(QtCore.QRect(810, 340, 129, 27))
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit1.sizePolicy().hasHeightForWidth())
        self.lineEdit1.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("URW Chancery L"))
        font.setPointSize(18)
        #self.lineEdit1.setStyleSheet(_fromUtf8("background-color: rgb(166, 166, 166)"))
        self.lineEdit1.setFont(font)
        self.lineEdit1.setAutoFillBackground(True)
        self.lineEdit1.setInputMethodHints(QtCore.Qt.ImhHiddenText|QtCore.Qt.ImhNoAutoUppercase)
        self.lineEdit1.setObjectName(_fromUtf8("lineEdit1"))
        self.label1 = QtGui.QLabel(self.page1)
        self.label1.setGeometry(QtCore.QRect(600, 320, 191, 71))
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("URW Palladio L"))
        font.setPointSize(24)
        self.label1.setFont(font)
        self.label1.setAutoFillBackground(False)
        self.label1.setObjectName(_fromUtf8("label1"))
        self.lineEdit1_2 = QtGui.QLineEdit(self.page1)
        self.lineEdit1_2.setGeometry(QtCore.QRect(810, 420, 129, 27))
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit1_2.sizePolicy().hasHeightForWidth())
        self.lineEdit1_2.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("URW Chancery L"))
        font.setPointSize(18)
        self.lineEdit1_2.setFont(font)
        #self.lineEdit1_2.setStyleSheet(_fromUtf8("background-color: rgb(166, 166, 166)"))
        self.lineEdit1_2.setInputMethodHints(QtCore.Qt.ImhHiddenText|QtCore.Qt.ImhNoAutoUppercase)
        self.lineEdit1_2.setObjectName(_fromUtf8("lineEdit1_2"))
        self.label1_2 = QtGui.QLabel(self.page1)
        self.label1_2.setGeometry(QtCore.QRect(600, 390, 191, 81))
        font = QtGui.QFont()
        font.setFamily(_fromUtf8("URW Palladio L"))
        font.setPointSize(24)
        self.label1_2.setFont(font)
        self.label1_2.setAutoFillBackground(True)
        self.label1_2.setObjectName(_fromUtf8("label1_2"))
        self.label = QtGui.QLabel(self.page1)
        self.pixmap = QPixmap('small_400.jpg')
        self.label.setPixmap(self.pixmap)
        self.label.setGeometry(QtCore.QRect(560, 70, 400, 233))
        self.label.setAutoFillBackground(True)
        self.label.setObjectName(_fromUtf8("label"))

        self.proceed = QtGui.QPushButton(self.page1)
        #self.proceed.setStyleSheet(_fromUtf8("background-color: rgb(166, 166, 166)"))
        self.proceed.setGeometry(QtCore.QRect(730, 490, 121, 31))
        self.proceed.setObjectName(_fromUtf8("proceed"))
        self.proceed.clicked.connect(self.getInterface)

        self.stackedWidget.addWidget(self.page1)





        self.page2 = QtGui.QWidget()
        self.page2.setObjectName(_fromUtf8("page"))
        self.verticalLayout = QtGui.QVBoxLayout(self.page2)
        self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setSizeConstraint(QtGui.QLayout.SetMaximumSize)
        self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
        self.horizontalLayout_2.setContentsMargins(-1, -1, -1, 10)
        
        self.verticalLayout_4 = QtGui.QVBoxLayout()
        self.verticalLayout_4.setContentsMargins(-1, 0, -1, -1)
        self.verticalLayout_4.setSpacing(30)
        self.verticalLayout_4.setObjectName(_fromUtf8("verticalLayout_4"))

        self.w = QtGui.QWidget()
        self.b = QtGui.QLabel(self.w)
        self.b.setText("Sniffing on interface:")
        self.c = QtGui.QLabel(self.w)
        self.c.setText("Timeout Limit")
        self.d = QtGui.QLabel(self.w)
        self.d.setText("ARP Table is Clean.\t\t")
        self.e = QtGui.QLabel(self.w)
        self.e.setText(".\t\t\t\t")
        self.listViewbtn = QtGui.QPushButton(self.w)
        self.listViewbtn.setGeometry(QtCore.QRect(40, 110, 75, 23))
        self.listViewbtn.setObjectName(_fromUtf8("List_View"))
        self.listViewbtn.clicked.connect(self.switchView)
    
        self.c.move(2,30)
        self.d.move(2,60)
        self.e.move(2,80)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.w.sizePolicy().hasHeightForWidth())
        self.verticalLayout_4.addWidget(self.w)

        self.fig5 = Figure(figsize=(1,1))
        #self.fig5.patch.set_alpha(0.5)
        #self.ax = self.fig5.add_subplot(111)
        #self.ax.patch.set_facecolor('#ababab')
        #self.ax.patch.set_alpha(0.5)
        self.canvas5 = FigureCanvas(self.fig5)
        self.canvas5.setStyleSheet(_fromUtf8("background-color: transparent"))
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.canvas5.sizePolicy().hasHeightForWidth())
        clickable(self.canvas5).connect(lambda: self.swap(5))
        self.canvas5.setSizePolicy(sizePolicy)
        self.verticalLayout_4.addWidget(self.canvas5)
        
        self.horizontalLayout_2.addLayout(self.verticalLayout_4)
        self.fig6 = Figure()
        self.canvas6 = FigureCanvas(self.fig6)
        self.canvas6.setStyleSheet("background-color: transparent;")
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.canvas6.sizePolicy().hasHeightForWidth())
        self.canvas6.setSizePolicy(sizePolicy)
        #self.canvas6.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        #clickable(self.canvas6).connect(lambda: self.swap(5))
        self.horizontalLayout_2.addWidget(self.canvas6)


        self.horizontalLayout_2.setStretch(0, 24)
        self.horizontalLayout_2.setStretch(1, 76)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setSpacing(25)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.fig1 = Figure(figsize=(1,1))
        self.canvas1 = FigureCanvas(self.fig1)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.canvas1.sizePolicy().hasHeightForWidth())
        self.canvas1.setSizePolicy(sizePolicy)
        self.canvas1.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        clickable(self.canvas1).connect(lambda: self.swap(1))
        self.horizontalLayout.addWidget(self.canvas1)


        self.fig2 = Figure(figsize=(1,1))
        self.canvas2 = FigureCanvas(self.fig2)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.canvas2.sizePolicy().hasHeightForWidth())
        self.canvas2.setSizePolicy(sizePolicy)
        self.canvas2.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        clickable(self.canvas2).connect(lambda: self.swap(2))
        self.horizontalLayout.mouseReleaseEvent = print("hey")
        self.horizontalLayout.addWidget(self.canvas2)

        self.fig3 = Figure(figsize=(1,1))
        self.canvas3 = FigureCanvas(self.fig3)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.canvas3.sizePolicy().hasHeightForWidth())
        self.canvas3.setSizePolicy(sizePolicy)
        self.canvas3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        clickable(self.canvas3).connect(lambda: self.swap(3))
        self.horizontalLayout.addWidget(self.canvas3)

        self.fig4 = Figure(figsize=(1,1))
        self.canvas4 = FigureCanvas(self.fig4)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.canvas4.sizePolicy().hasHeightForWidth())
        self.canvas4.setSizePolicy(sizePolicy)
        self.canvas4.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        clickable(self.canvas4).connect(lambda: self.swap(4))
        self.horizontalLayout.addWidget(self.canvas4)

        self.verticalLayout.addLayout(self.horizontalLayout)
        self.verticalLayout.setStretch(0, 10)
        self.verticalLayout.setStretch(1, 4)
        self.stackedWidget.addWidget(self.page2)

        #List view:
        self.page3 = QtGui.QWidget()
        self.page3.setObjectName(_fromUtf8("page"))
        self.verticalLayout_List = QtGui.QVBoxLayout(self.page3)
        self.verticalLayout_List.setObjectName(_fromUtf8("verticalLayout_List"))
        self.tableWidget = QtGui.QTableWidget(self.centralwidget)
        self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.tableWidget.sizePolicy().hasHeightForWidth())
        
        self.tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        self.tableWidget.setSizePolicy(sizePolicy)
        self.tableWidget.setColumnCount(6)
        self.tableWidget.setAlternatingRowColors(True)
        self.tableWidget.cellClicked.connect(lambda:self.updateListView(self.tableWidget.currentRow()))
        print(dir(self.tableWidget.scroll))
        self.tableWidget.setColumnWidth(0,220)
        self.tableWidget.setColumnWidth(1,220)
        self.tableWidget.setColumnWidth(2,220)
        self.tableWidget.setColumnWidth(3,220)
        self.tableWidget.setColumnWidth(4,220)
        self.tableWidget.setColumnWidth(5,220)
        self.tableWidget.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        self.tableWidget.scrollToBottom()
        self.tableWidget.setRowCount(0)
        self.verticalLayout_List.addWidget(self.tableWidget)

        self.info = QtGui.QWidget()
        self.b1 = QtGui.QLabel(self.info)
        self.b1.setText("Sniffing on interface:")
        self.b2 = QtGui.QLabel(self.info)
        self.b2.setText("Sniffing on interface:")
        self.b2.move(0,30)
        self.b3 = QtGui.QLabel(self.info)
        self.b3.setText("Sniffing on interface:")
        self.b3.move(0,60)
        self.verticalLayout_List.addWidget(self.info)
        self.verticalLayout_List.setStretch(0, 4)
        self.verticalLayout_List.setStretch(1, 2)


        self.stackedWidget.addWidget(self.page3)

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 25))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        self.view = QtGui.QMenu(self.menubar)
        self.view.setObjectName(_fromUtf8("view")) 
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)
        self.change_View = QtGui.QAction(MainWindow)
        self.change_View.setObjectName(_fromUtf8("change_view"))
        self.change_View.triggered.connect(self.switchView)
        self.view.addAction(self.change_View)
        
        

        self.menubar.addAction(self.view.menuAction())
        


        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def mousePressEvent(self, QMouseEvent):
        print (QMouseEvent.pos())

    def mouseReleaseEvent(self, QMouseEvent):
        cursor =QtGui.QCursor()
        print (cursor.pos()) 

    def swap(self,a):
        global cur
        cur = a


    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
        self.listViewbtn.setText(_translate("List_View", "List View", None))
        self.change_View.setText(_translate("change_view", "List View", None))
        self.view.setTitle(_translate("MainWindow", "View", None))
        self.label1.setText(_translate("MainWindow", "Interface :", None))
        self.label1_2.setText(_translate("MainWindow", "Timeout :", None))
        self.proceed.setText(_translate("MainWindow", "Proceed", None))

    
    def getInterface(self):
        global sniffingInterface, sniffingTimeOut, t2
        sniffingInterface = self.lineEdit1.text()
        sniffingTimeOut = int(self.lineEdit1_2.text())
        print(sniffingInterface,sniffingTimeOut)
        self.stackedWidget.setCurrentIndex(1)
        self.plot()

    def switchView(self):
        global isListView
        if(isListView):
            self.change_View.setText("List View")
            self.stackedWidget.setCurrentIndex(1)
            isListView = False
        else:
            self.change_View.setText("Graphic View")
            self.stackedWidget.setCurrentIndex(2)
            isListView = True

    def plot(self):
        global cur
        global a
        global color
        global autoScroll
        global lenOfArray
        global x_base
        global arp_attack
        global mac_add
        
        ax1 = self.fig1.add_subplot(111)
        ax1.clear()
        ax1.set_ylim([0,60])
        ax1.fill_between(x_base,0,a[0,-100:],linewidth=1.4,color=color[0])
        
        self.canvas1.draw()

        ax2 = self.fig2.add_subplot(111)
        ax2.clear()
        ax2.set_ylim([0,60])
        ax2.fill_between(x_base,0,a[1,-100:],linewidth=1.4,color=color[1])
        self.canvas2.draw()

        ax3 = self.fig3.add_subplot(111)
        ax3.clear()
        ax3.set_ylim([0,60])
        ax3.fill_between(x_base,0,a[2,-100:],linewidth=1.4,color=color[2])
        self.canvas3.draw()

        ax4 = self.fig4.add_subplot(111)
        ax4.clear()
        ax4.set_ylim([0,60])
        ax4.fill_between(x_base,0,a[3,-100:],linewidth=1.4,color=color[3])
        self.canvas4.draw()

        ax5 = self.fig5.add_subplot(111)
        ax5.clear()
        ax5.set_ylim([0,60])
        ax5.fill_between(x_base,0,a[4,-100:],linewidth=1.4,color=color[4])
        self.canvas5.draw()

        ax6 = self.fig6.add_subplot(111)
        ax6.clear()
        ax6.set_ylim([0,60])
        ax6.fill_between(x_base,0,a[cur-1,-100:],linewidth=3.0,color=color[cur-1])
        self.canvas6.draw()
        if(lenOfArray<a.size):
            self.tableWidget.insertRow(self.tableWidget.rowCount())
            for i in range(6):
                self.x = self.tableWidget.rowCount()
                self.tableWidget.setRowCount(self.x)
                self.tableWidget.setItem(self.x-1,i,QtGui.QTableWidgetItem(str(a[i,int(lenOfArray/6)])))
            if(autoScroll):
                self.tableWidget.scrollToBottom()   
            lenOfArray += 6  
        QtCore.QTimer.singleShot(1, self.plot)
        
        if(arp_attack):
            self.d.setText("ARP spoof detected")
            self.d.setStyleSheet(_fromUtf8("background-color: rgb(255, 10, 10)"))
            self.e.setText("Suspicious mac address: "+mac_add)
            self.e.setStyleSheet(_fromUtf8("background-color: rgb(255, 10, 10)"))
    

    def updateListView(self, x):
        global autoScroll
        autoScroll = False
        
        self.b1.setText("data"+str(a[0,x+100]))
        self.b2.setText("data"+str(a[1,x+100]))
        self.b3.setText("data"+str(a[2,x+100]))
        print(a[:,x+2])