import logging
from datetime import datetime
from sip_parser.someip_parser.py.getSipInfo import get_pcap_msg, someip_entire_dict_list, someip_header_dict_list
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import tkinter as tk
import os
from GenerateLogFile import MakeLogFile
from readfile import ReadFile
class Ui_Dialog(QMainWindow):
def __init__(self,packet_list):
super().__init__()
self.file_path = ''
self.some_ip_dic_list = []
self.packet_list = packet_list
self.setupUi(self)
self.retranslateUi(self)
# 各控件的信号与槽函数绑定
self.connectSignalAndSlot()
def setupUi(self, MainWindow):
root = tk.Tk()
# 取得屏幕size
self.screen_width = root.winfo_screenwidth()
self.screen_height = root.winfo_screenheight()
# 设置主画面size
MainWindow.resize(self.screen_width, self.screen_height)
self.setMinimumSize(800, 600) # 设置最小窗口大小
self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
# 取得运行路径
path = os.getcwd()
# 设置图标
icon = QtGui.QIcon.fromTheme(path + "/image/Admin.jpeg")
MainWindow.setWindowIcon(icon)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
# 使用网格布局
self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, self.screen_width, self.screen_height - 50))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(1, 30, 1, 1)
self.gridLayout.setObjectName("gridLayout")
# 设置表格
self.tableView = QtWidgets.QTableView(self.gridLayoutWidget)
self.tableView.setObjectName("tableView")
# 隐藏表头
self.tableView.verticalHeader().hide()
# 设置选择一行
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
# 网格不显示
self.tableView.setShowGrid(False)
# 创建一个QStandardItemModel实例
self.db_table_model_ = QStandardItemModel()
# 设置表格列名
self.db_table_model_.setHorizontalHeaderLabels(['No.','Time','Source','Destination','Protocol','Length','Info'])
if self.file_path:
# 设置数据内容
self.setTable_view(self.some_ip_dic_list)
self.tableView.setModel(self.db_table_model_)
self.selection_model = QItemSelectionModel(self.db_table_model_) # 创建一个QItemSelectionModel实例
self.tableView.setSelectionModel(self.selection_model) # 设置QItemSelectionModel
self.selection_model.selectionChanged.connect(self.handle_clicked) # 绑定行点击事件
# tableView添加到网格布局中
self.gridLayout.addWidget(self.tableView, 11, 0, 1, 2)
self.treeView = QtWidgets.QTreeView(self.gridLayoutWidget)
# tableView隐藏表头
self.treeView.header().hide()
self.treeView.setObjectName("treeView")
# treeView添加到网格布局中
self.gridLayout.addWidget(self.treeView, 26, 0, 1, 2)
# 创建显示json的treeView实例
self.jsontreeView = QtWidgets.QTreeView(self.gridLayoutWidget)
self.jsontreeView.setObjectName("jsontreeView")
# jsontreeView添加到网格布局中
self.gridLayout.addWidget(self.jsontreeView, 29, 0, 1, 2)
# 创建水平布局实例化对象horizontalLayoutWidget
self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(1, 0, self.screen_width, 30))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(1, 1, 1, 1)
self.horizontalLayout.setObjectName("horizontalLayout")
# 创建QLineEdit对象lineEdit
self.lineEdit = QtWidgets.QLineEdit(self.horizontalLayoutWidget)
self.lineEdit.setObjectName("lineEdit")
self.lineEdit.setPlaceholderText('请输入Service ID')
# lineEdit添加到水平布局horizontalLayout
self.horizontalLayout.addWidget(self.lineEdit)
# 创建'搜索'按钮
self.pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.pushButton.setText('搜索')
self.pushButton.setObjectName("pushButton")
# 绑定'搜索'按钮点击事件
self.pushButton.clicked.connect(self.button_clicked)
# '搜索'按钮添加到水平布局horizontalLayout
self.horizontalLayout.addWidget(self.pushButton)
# 创建'清除'按钮
self.pushButton1 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
self.pushButton1.setText('清除')
self.pushButton1.setObjectName("pushButton1")
# 绑定'清除'按钮点击事件
self.pushButton1.clicked.connect(self.button1_clicked)
if self.some_ip_dic_list:
# '搜索''清除'按钮起效
self.pushButton.setEnabled(True)
self.pushButton1.setEnabled(True)
else:
# '搜索''清除'按钮失效
self.pushButton.setEnabled(False)
self.pushButton1.setEnabled(False)
# '清除'按钮添加到水平布局horizontalLayout
self.horizontalLayout.addWidget(self.pushButton1)
# 创建弹簧
spacerItem = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
# 弹簧添加到水平布局horizontalLayout
self.horizontalLayout.addItem(spacerItem)
MainWindow.setCentralWidget(self.centralwidget)
# 创建菜单栏
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 902, 20))
self.menubar.setObjectName("menubar")
# 创建File菜单
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
# 导入pcap文件
self.actionImport_pcap_File = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme(path + "/image/Import.jpeg")
self.actionImport_pcap_File.setIcon(icon)
self.actionImport_pcap_File.setObjectName("actionImport_pcap_File")
# 导入excel文件
self.actionImport_excel_File = QtWidgets.QAction(MainWindow)
icon = QtGui.QIcon.fromTheme(path + "/image/Import.jpeg")
self.actionImport_excel_File.setIcon(icon)
self.actionImport_excel_File.setObjectName("actionImport_excel_File")
self.menuFile.addAction(self.actionImport_pcap_File)
self.menuFile.addAction(self.actionImport_excel_File)
self.menubar.addAction(self.menuFile.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def setTable_view(self,some_ip_dic_list_temp):
for i in range(0,len(some_ip_dic_list_temp)):
# 设置No.
self.db_table_model_.setItem(i, 0, QStandardItem(str(some_ip_dic_list_temp[i].get('No.'))))
# 设置time
self.db_table_model_.setItem(i, 1, QStandardItem('time'))
# 设置source
self.db_table_model_.setItem(i, 2, QStandardItem('source'))
# 设置Destination
self.db_table_model_.setItem(i, 3, QStandardItem('Destination'))
protocol = ''
if some_ip_dic_list_temp[i].get('Pa
没有合适的资源?快使用搜索试试~ 我知道了~
PYQt5 工具导入文件tableiew、treeView(单列、多列)显示
共24个文件
py:7个
xml:4个
jpeg:3个
需积分: 0 0 下载量 127 浏览量
2024-05-08
16:02:07
上传
评论
收藏 632KB ZIP 举报
温馨提示
PYQt5 工具导入文件tableiew、treeView(单列、多列)显示
资源推荐
资源详情
资源评论
收起资源包目录
DisplayTool.zip (24个子文件)
DisplayTool
GenerateLogFile.py 1KB
display.py 17KB
image
File.jpeg 6KB
Import.jpeg 6KB
admin.png 4KB
open.png 127B
Admin.jpeg 4KB
main.py 8KB
data
wyf.pcap 44KB
.~lock.DSV_ALG_A02_SOC_MCU_SomeIP_Service_Momenta_20240408_v2.5_temp.xlsx# 93B
DSV_ALG_A02_SOC_MCU_SomeIP_Service_Momenta_20240408_v2.5_temp.xlsx 440KB
.idea
DisplayTool.iml 352B
workspace.xml 5KB
misc.xml 199B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 274B
.gitignore 47B
readfile.py 2KB
QJsonModel.py 5KB
sip_parser
someip_parser
py
getSipInfo.py 11KB
__pycache__
getSipInfo.cpython-38.pyc 7KB
pcap
wyf.pcap 44KB
tp.pcap 1.01MB
DateInfo.py 1KB
共 24 条
- 1
资源评论
qq_35507512
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功