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 02 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
Jul 23 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
Pytorch实现GoogLeNet的方法
Aug 18 Python
python实现的按要求生成手机号功能示例
Oct 08 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 Python
python解包用法详解
Feb 17 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操作xml代码
2010/06/17 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
php目录拷贝实现方法
2015/07/10 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
js单例模式的两种方案
2013/10/22 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
javascript实现下雨效果
2017/03/27 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
如何检查一个对象是否为空
2019/04/11 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
Python中函数的用法实例教程
2014/09/08 Python
在Django中创建动态视图的教程
2015/07/15 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
Python读取表格类型文件代码实例
2020/02/17 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
Python基于gevent实现文件字符串查找器
2020/08/11 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
ORACLE十问
2015/04/20 面试题
公司节能减排方案
2014/05/16 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
学术会议通知
2015/04/15 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书