# coding=utf-8 import sys from PyQt5 import QtCore from PyQt5.QtCore import * from PyQt5.QtWidgets import QWidget, QFrame, QCheckBox, QLineEdit, QLabel, QPushButton, QTextBrowser, QTableWidget, \ QAbstractItemView, QTableWidgetItem, QMenuBar, QStatusBar, QApplication, QMainWindow # mysql模块 import pymysql import pygal from fuzzywuzzy import fuzz, process import re import os from PyQt5.QtWidgets import QApplication, QMainWindow import sys from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice from PyQt5.QtGui import QPainter, QPen from PyQt5.QtCore import Qt from PyQt5 import QtGui class Ui_MainWindow(object): def setupUi(self, MainWindow): self.conn = pymysql.connect(host='124.222.200.220', port=3306, user='root', password='Fei1912760', db='data',charset='utf8',) self.cur = self.conn.cursor() self.sqlstring = "select * from " MainWindow.setObjectName("MainWindow") MainWindow.resize(900, 700) MainWindow.setWindowIcon(QtGui.QIcon('../test1.jpg')) # 根据窗口的大小固定大小 这里相当于设置全屏 MainWindow.setFixedSize(MainWindow.width(), MainWindow.height()) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.frame = QFrame(self.centralwidget) self.frame.setGeometry(QtCore.QRect(10, 10, 711, 141)) self.frame.setFrameShape( QFrame.StyledPanel) self.frame.setFrameShadow( QFrame.Raised) self.frame.setObjectName("frame") #大框 self.Cname = QLineEdit(self.frame) #QLineEdit单行输入文本框 self.Cname.setGeometry(QtCore.QRect(280, 50, 200, 31)) self.Cname.setObjectName("Cname") self.Cname.setPlaceholderText('请输入...') #cnnvd self.Cnnvd = QPushButton(self.frame) self.Cnnvd.setGeometry(QtCore.QRect(1, 0, 70, 31)) self.Cnnvd.setObjectName("Cnnvd") self.Cnnvd.clicked.connect(self.cnnvd_btn) #wooyun self.Wooyun = QPushButton(self.frame) self.Wooyun.setGeometry(QtCore.QRect(71, 0, 70, 31)) self.Wooyun.setObjectName("Wooyun") self.Wooyun.clicked.connect(self.wooyun_btn) #seebug self.Seebug = QPushButton(self.frame) self.Seebug.setGeometry(QtCore.QRect(141, 0, 70, 31)) self.Seebug.setObjectName("Seebug") self.Seebug.clicked.connect(self.seebug_btn) #查询按钮 self.find = QPushButton(self.frame) self.find.setGeometry(QtCore.QRect(630, 30, 75, 31)) self.find.setObjectName("find") self.find.clicked.connect(self.find_btn) #圆饼图按钮 self.yuan = QPushButton(self.frame) self.yuan.setGeometry(QtCore.QRect(630, 70, 75, 31)) self.yuan.setObjectName("yuan") self.yuan.clicked.connect(self.shuju_btn) #结果框 self.result_out = QTableWidget(self.centralwidget) # self.result_out = QTableWidget(4, 100) self.result_out.setEditTriggers( QAbstractItemView.NoEditTriggers) # 不可编辑表格 self.result_out.setGeometry(QtCore.QRect(40, 150, 800, 448)) #左上宽高 self.result_out.setObjectName("result_out") self.result_out.setColumnCount(4) self.result_out.setRowCount(100) self.result_out.setHorizontalHeaderLabels(['name','numbering','href','time']) self.result_out.horizontalHeader().setDefaultSectionSize(171) #总列长 self.result_out.horizontalHeader().setMinimumSectionSize(43) #单个列的长度 self.result_out.verticalHeader().setDefaultSectionSize(20) self.pushButton_2 = QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(765, 620, 75, 31)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_2.clicked.connect(self.p2_clicked) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 509, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def p2_clicked(self): self.pyqt_clicked1.emit() def find_btn(self): self.pyqt_clicked2.emit() def cnnvd_btn(self): self.pyqt_clicked3.emit() def wooyun_btn(self): self.pyqt_clicked4.emit() def seebug_btn(self): self.pyqt_clicked6.emit() def shuju_btn(self): self.pyqt_clicked5.emit() def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("v1.0", "v1.0", None)) #按钮名称 self.find.setText(_translate("MainWindow", "查询", None)) self.Cnnvd.setText(_translate("MainWindow","cnnvd",None)) self.Wooyun.setText(_translate("MainWindow", "Wuyun", None)) self.yuan.setText(_translate("MainWindow", "结果图", None)) self.Seebug.setText(_translate("MainWindow", "seebug", None)) self.pushButton_2.setText(_translate("MainWindow", "退出", None)) def mousePressEvent(self, event): # if event.KeyWord == Qt.LeftButton: print("nihao") #点击cnnvd表 def buttonCnnvd(self): print("1") self.temp_sqlstring1 =self.sqlstring+"cnnvd where " self.temp = "cnnvd" # 点击wooyun表 def buttonWuyun(self): print("2") self.temp_sqlstring1 = self.sqlstring + "wooyun where " self.temp = "wooyun" # 点击seebug表 def buttonSeebug(self): print("3") self.temp_sqlstring1 = self.sqlstring + "seebug where " self.temp = "seebug" def buttonTest(self): Ui_MainWindow.temp_sqlstring =self.temp_sqlstring1 is_first = True mystr = self.Cname.text() if is_first: is_first = False if mystr.find("%") == -1: Ui_MainWindow.temp_sqlstring += "name like '" +"%"+self.Cname.text() +"%"+"'" else: Ui_MainWindow.temp_sqlstring += "name like '" +"%"+self.Cname.text() +"%"+"'" else: if mystr.find("%") == -1: Ui_MainWindow.temp_sqlstring += " and name like '" +"%"+self.Cname.text() +"%"+"'" else: Ui_MainWindow.temp_sqlstring += " and name like '" +"%"+self.Cname.text() +"%"+"'" self.result_out.clearContents() # 每一次查询时清除表格中信息 if not (is_first): print(Ui_MainWindow.temp_sqlstring) self.cur.execute(Ui_MainWindow.temp_sqlstring) data = self.cur.fetchall() print(data) x = 0 for i in data: y = 0 for j in i: self.result_out.setItem(x, y, QTableWidgetItem(str(data[x][y]))) y = y + 1 x = x + 1 print("find button pressed") #输出圆饼图 def fenXi(self): print('3') # self.temp = self.temp Ui_MainWindow.temp_sql = "select name from cnnvd" print(Ui_MainWindow.temp_sql) # self.cur.execute("(select name from cnnvd where name like '%sql%') union all (select name from wooyun where name like '%sql%')") self.cur.execute(Ui_MainWindow.temp_sql) result=[] d ={} d1 ={} for i in self.cur: for j in i: result.append(j) for i in result: x = i.split(" ") for i in x: chinese = re.findall('[\u4e00-\u9fa5]+',i) # print(chinese) for j in chinese: if j in d: d[j]+=1 else: d[j]=1 lst= sorted(d.items(),key=lambda x:x[1],reverse=True) # print(lst) return lst # print(lst[0]) def buttonExit(self): self.conn.commit() self.cur.close() self.conn.close() self.close() def keyPressEvent(self, e): if e.key() == QtCore.Qt.Key_Escape: self.buttonExit() class MyWindow(QMainWindow, Ui_MainWindow): pyqt_clicked1 = pyqtSignal() pyqt_clicked2 = pyqtSignal() pyqt_clicked3 = pyqtSignal() pyqt_clicked4 = pyqtSignal() pyqt_clicked5 = pyqtSignal() pyqt_clicked6 = pyqtSignal() def __init__(self): super(MyWindow, self).__init__() self.setupUi(self) self.pyqt_clicked1.connect(self.buttonExit) self.pyqt_clicked2.connect(self.buttonTest) self.pyqt_clicked3.connect(self.buttonCnnvd) self.pyqt_clicked4.connect(self.buttonWuyun) self.pyqt_clicked5.connect(self.fenXi) self.pyqt_clicked6.connect(self.buttonSeebug) self.show() class Window(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("数据分析") self.setGeometry(100, 100, 1280, 600) self.create_piechart() def create_piechart(self): series = QPieSeries() series.append("跨站脚本漏洞", 161) series.append("缓冲区错误漏洞", 155) series.append("输入验证错误漏洞", 143) series.append("代码问题漏洞", 125) series.append("SQL注入漏洞", 101) series.append("资源管理错误漏洞", 91) series.append("路径遍历漏洞", 32) series.append("信息泄露漏洞", 30) series.append("权限许可和访问控制问题漏洞", 28) series.append("跨站请求伪造漏洞", 27) slice0 = QPieSlice() slice0 = series.slices()[0] slice0.setLabelVisible(True) slice1 = QPieSlice() slice1 = series.slices()[1] slice1.setLabelVisible(True) slice2 = QPieSlice() slice2 = series.slices()[2] slice2.setLabelVisible(True) slice3 = QPieSlice() slice3 = series.slices()[3] slice3.setLabelVisible(True) slice4 = QPieSlice() slice4 = series.slices()[4] slice4.setLabelVisible(True) slice5 = QPieSlice() slice5 = series.slices()[5] slice5.setLabelVisible(True) slice6 = QPieSlice() slice6 = series.slices()[6] slice6.setLabelVisible(True) slice7 = QPieSlice() slice7 = series.slices()[7] slice7.setLabelVisible(True) slice8 = QPieSlice() slice8 = series.slices()[8] slice8.setLabelVisible(True) slice9 = QPieSlice() slice9 = series.slices()[9] slice9.setLabelVisible(True) chart = QChart() chart.legend().hide() chart.addSeries(series) chart.createDefaultAxes() chart.setAnimationOptions(QChart.SeriesAnimations) chart.setTitle("Pie Chart Example") chart.legend().setVisible(True) chart.legend().setAlignment(Qt.AlignBottom) chartview = QChartView(chart) chartview.setRenderHint(QPainter.Antialiasing) self.setCentralWidget(chartview) if __name__ == "__main__": app = QApplication(sys.argv) app.aboutToQuit.connect(app.deleteLater) myshow = MyWindow() b = Window() myshow.yuan.clicked.connect(b.show) sys.exit(app.exec_()) # app.exec_() # sys.exit(0)