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写的Socks5协议代理服务器
Aug 06 Python
一张图带我们入门Python基础教程
Feb 05 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
详解Django中类视图使用装饰器的方式
Aug 12 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
python3发送邮件需要经过代理服务器的示例代码
Jul 25 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
python 字符串格式化的示例
Sep 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
?生?D片??C字串
2006/12/06 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
通过PHP实现获取访问用户IP
2020/05/09 PHP
JQuery优缺点分析说明
2010/06/09 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
jQuery中队列queue()函数的实例教程
2016/05/03 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
python算法与数据结构之单链表的实现代码
2019/06/27 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
2018/01/29 HTML / CSS
法国房车租赁网站:Yescapa
2019/08/26 全球购物
2014年教研活动总结范文
2014/04/26 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
入党函调证明材料
2014/12/24 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
Python Django ORM连表正反操作技巧
2021/06/13 Python
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL