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的Django框架中的QuerySets
Apr 20 Python
利用python发送和接收邮件
Sep 27 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
Python入门学习指南分享
Apr 11 Python
python 日志增量抓取实现方法
Apr 28 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
OpenCV HSV颜色识别及HSV基本颜色分量范围
Mar 22 Python
Python之——生成动态路由轨迹图的实例
Nov 22 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
通过python 执行 nohup 不生效的解决
Apr 16 Python
总结Python变量的相关知识
Jun 28 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的面试题集
2006/11/19 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
js实现简单计算器
2015/11/22 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
Python中使用PDB库调试程序
2015/04/05 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
使用Python进行目录的对比方法
2018/11/01 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python 实现两个线程交替执行
2020/05/02 Python
Django配置跨域并开发测试接口
2020/11/04 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
工伤私了协议书范本
2014/11/24 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
学生保证书格式
2015/02/27 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
小学感恩主题班会
2015/08/12 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
vue中data里面的数据相互使用方式
2022/06/05 Vue.js