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使用datetime模块计算各种时间间隔的方法
Mar 24 Python
python实现NB-IoT模块远程控制
Jun 20 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
Jun 17 Python
Python线程障碍对象Barrier原理详解
Dec 02 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 Python
python打印异常信息的两种实现方式
Dec 24 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 Python
Python字符串格式化常用手段及注意事项
Jun 17 Python
Python中qutip用法示例详解
Oct 02 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
Banner程序
2006/10/09 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
浅谈struts1 & jquery form 文件异步上传
2017/05/25 jQuery
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
使用Pyinstaller的最新踩坑实战记录
2017/11/08 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
python 表格打印代码实例解析
2019/10/12 Python
python 串口读取+存储+输出处理实例
2019/12/26 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
生产总经理岗位职责
2013/12/19 职场文书
财务部出纳岗位职责
2013/12/22 职场文书
前台文员职责范本
2014/03/07 职场文书
铲车司机岗位职责
2014/03/15 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
向女朋友道歉的话
2015/01/20 职场文书
企业计划生育责任书
2015/05/09 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers