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基于xml parse实现解析cdatasection数据
Sep 30 Python
python学习必备知识汇总
Sep 08 Python
Python矩阵常见运算操作实例总结
Sep 29 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
在windows下Python打印彩色字体的方法
May 15 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
python tkinter图形界面代码统计工具
Sep 18 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
python之列表推导式的用法
Nov 29 Python
Python实现不规则图形填充的思路
Feb 02 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
详解在OpenCV中如何使用图像像素
Mar 03 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
全国FM电台频率大全 - 7 吉林省
2020/03/11 无线电
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
在Django的视图(View)外使用Session的方法
2015/07/23 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
python里反向传播算法详解
2020/11/22 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
竞选体育委员演讲稿
2014/04/26 职场文书
大学生工作求职信
2014/06/23 职场文书
企业标语大全
2014/07/01 职场文书
超市店庆活动方案
2014/08/31 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技