PyQT5 实现快捷键复制表格数据的方法示例


Posted in Python onJune 19, 2020

本文主要介绍了PyQT5 实现快捷键复制表格数据的方法示例,分享给大家,具体如下:

表格数据如下:

PyQT5 实现快捷键复制表格数据的方法示例

# -*- coding:utf-8 -*-

import pyperclip
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:
        pyperclip.copy(text) # 复制数据到粘贴板


if __name__ == '__main__':
  import sys
  app = QApplication(sys.argv)
  S = StartRun()
  sys.exit(app.exec_())

 到此这篇关于PyQT5 实现快捷键复制表格数据的方法示例的文章就介绍到这了,更多相关PyQT5 快捷键复制表格数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 条件判断的缩写方法
Sep 06 Python
Python while 循环使用的简单实例
Jun 08 Python
python 字符串转列表 list 出现\ufeff的解决方法
Jun 22 Python
Python中执行存储过程及获取存储过程返回值的方法
Oct 07 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
python 执行终端/控制台命令的例子
Jul 12 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
PyTorch实现AlexNet示例
Jan 14 Python
基于Keras中Conv1D和Conv2D的区别说明
Jun 19 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
python palywright库基本使用
Jan 21 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 #Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 #Python
Python实现爬取并分析电商评论
Jun 19 #Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 #Python
Python爬虫实现HTTP网络请求多种实现方式
Jun 19 #Python
Keras设置以及获取权重的实现
Jun 19 #Python
Python包和模块的分发详细介绍
Jun 19 #Python
You might like
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
类之Prototype.js学习
2007/06/13 Javascript
Javascript 事件流和事件绑定
2009/07/16 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
layui中table表头样式修改方法
2018/08/15 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python二分查找详解
2015/09/13 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
python实现批量修改文件名
2020/03/23 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
上海方立数码笔试题
2013/10/18 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
几个常见的软件测试问题
2016/09/07 面试题
中西医专业毕业生职业规划书
2014/02/24 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
2014年党员整改措施
2014/10/24 职场文书
高二英语教学反思
2016/03/03 职场文书
优秀员工演讲稿
2019/06/21 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
Java存储没有重复元素的数组
2022/04/29 Java/Android