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闭包和装饰器用法实例详解
May 22 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
python数据归一化及三种方法详解
Aug 06 Python
django实现支付宝支付实例讲解
Oct 17 Python
详解python破解zip文件密码的方法
Jan 13 Python
新建文件时Pycharm中自动设置头部模板信息的方法
Apr 17 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Keras设置以及获取权重的实现
Jun 19 Python
python3让print输出不换行的方法
Aug 24 Python
python 进制转换 int、bin、oct、hex的原理
Jan 13 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
php实现登录页面的简单实例
2019/09/29 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
jQuery.Validate表单验证插件的使用示例详解
2017/01/04 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python QTimer实现多线程及QSS应用过程解析
2020/07/11 Python
Python 实现简单的客户端认证
2020/07/29 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
Theory美国官网:后现代都市风时装品牌
2018/05/09 全球购物
教师个人剖析材料
2014/02/05 职场文书
企业宣传方案
2014/03/04 职场文书
英语故事演讲稿
2014/04/29 职场文书
服务标语口号
2014/07/01 职场文书
感恩教育主题班会
2015/08/12 职场文书
校园安全教育心得体会
2016/01/15 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL