
# -*- coding:utf-8 -*-
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtCore import Qt
from PyQt5 import QtCore, QtWidgets
# 复制选择表格数据
def selected_tb_text(table_view):
try:
indexes = table_view.selectedIndexes() # 获取表格对象中被选中的数据索引列表
indexes_dict = {}
for index in indexes: # 遍历每个单元格
row, column = index.row(), index.column() # 获取单元格的行号,列号
if row in indexes_dict.keys():
indexes_dict[row].append(column)
else:
indexes_dict[row] = [column]
# 将数据表数据用制表符(\t)和换行符(\n)连接,使其可以复制到excel文件中
text = ''
for row, columns in indexes_dict.items():
row_data = ''
for column in columns:
data = table_view.model().item(row, column).text()
if row_data:
row_data = row_data + '\t' + data
else:
row_data = data
if text:
text = text + '\n' + row_data
else:
text = row_data
return text
except BaseException as e:
print(e)
return ''
class Ui_Form(object): # UI类
def setupUi(self, Form):
Form.setObjectName("Form")
self.tableView = QtWidgets.QTableView(Form)
self.tableView.setEnabled(True)
self.tableView.setGeometry(QtCore.QRect(5, 5, 400, 200))
self.tableView.setObjectName("tableView")
QtCore.QMetaObject.connectSlotsByName(Form)
# 逻辑类
class StartRun(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.init_ui() # 实例化窗体
self.show()
def init_ui(self):
self.setupUi(self) # 实例化控件
self.update_table_view()
def update_table_view(self):
data = [
(1, '张三', 18),
(2, '李四', 29),
(3, '王五', 25),
(4, '赵六', 26),
]
columns = ['id', 'name', 'age']
model = QStandardItemModel(len(data), len(columns)) # 设置数据层次结构,rows行cols列
model.setHorizontalHeaderLabels([str(i) for i in columns]) # 设置列名
for row in range(len(data)):
for column in range(len(data[row])):
item = QStandardItem(str(data[row][column]))
model.setItem(row, column, item) # 设置每个位置的文本值
self.tableView.setModel(model) # 实例化表格视图,设置模型为自定义的模型
def keyPressEvent(self, event): # 重写键盘监听事件
# 监听 CTRL+C 组合键,实现复制数据到粘贴板
if (event.key() == Qt.Key_C) and QApplication.keyboardModifiers() == Qt.ControlModifier:
text = selected_tb_text(self.tableView) # 获取当前表格选中的数据
if text:
try:
clipboard = QApplication.clipboard()
clipboard.setText(text) # 复制到粘贴板
except BaseException as e:
print(e)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
S = StartRun()
sys.exit(app.exec_())
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
(select 198766*667891 from DUAL)
(select 198766*667891)
@@4Sota
555����%2527%2522\'\"
555'"
555
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
555ENTXP5lC')) OR 423=(SELECT 423 FROM PG_SLEEP(15))--
555eOaGWvcb') OR 141=(SELECT 141 FROM PG_SLEEP(15))--
555DIuX8RM6' OR 415=(SELECT 415 FROM PG_SLEEP(15))--
555-1)) OR 734=(SELECT 734 FROM PG_SLEEP(15))--
555-1) OR 781=(SELECT 781 FROM PG_SLEEP(15))--
555-1 OR 787=(SELECT 787 FROM PG_SLEEP(15))--
555lVj73rKh'
555-1 waitfor delay '0:0:15' --
555-1)
555-1
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z
5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z
555*if(now()=sysdate(),sleep(15),0)
-1" OR 5*5=25 or "ZVaIcUmb"="
-1' OR 5*5=25 or '8fw4evwS'='
-1" OR 5*5=25 --
-1' OR 5*5=25 --
-1 OR 5*5=25
-1 OR 5*5=25 --
555
555
555