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 28 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
python爬虫获取多页天涯帖子
Feb 23 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
Django之路由层的实现
Sep 09 Python
python实现简易淘宝购物
Nov 22 Python
python 输出列表元素实例(以空格/逗号为分隔符)
Dec 25 Python
用 Python 制作地球仪的方法
Apr 24 Python
pycharm全局搜索的具体步骤
Jul 28 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
python 实现朴素贝叶斯算法的示例
Sep 30 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
无线电广播的开始
2002/01/30 无线电
PHP5 面向对象(学习记录)
2009/12/02 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP打印输出函数汇总
2016/08/28 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
使用Python3制作TCP端口扫描器
2017/04/17 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
python try except 捕获所有异常的实例
2018/10/18 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
毕业生自荐书模版
2014/01/04 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
网上书店创业计划书
2014/01/12 职场文书
会计求职简历自我评价
2015/03/10 职场文书
校园安全学习心得体会
2016/01/18 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
MyBatis 动态SQL全面详解
2021/10/05 MySQL