当前位置:   article > 正文

【pyqt5学习】——拖拽功能(Drag&Drop)、剪切板(QApplication.clipboard)_pyqt5实现拖拽复制

pyqt5实现拖拽复制

目录

1、拖拽功能(Drag&Drop)

2、剪切板(QApplication.clipboard)


1、拖拽功能(Drag&Drop)

  1. '''
  2. 选择文本输入框中的文本,移动到下拉框中自动添加
  3. 步骤:
  4. 1、将文本输入框设置为可拖拽
  5. lineEdit.setDragEnabled(True)
  6. 2、设置下拉框的两个信号属性:
  7. 0)将控件设置为接受其它地方拖拽过来的内容
  8. self.setAcceptDrops(True)
  9. 1)拖动还没有放下时触发
  10. def dragEnterEvent(self, event):
  11. print(event)
  12. ## 若拖拽含有文本,则接受,否则忽略
  13. if event.mimeData().hasText():
  14. event.accept()
  15. else:
  16. event.ignore()
  17. 2)拖动放下时触发
  18. def dropEvent(self,event):
  19. self.addItem(event.mimeData().text())
  20. '''

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # @Time : 2022/5/26 16:46
  4. # @Author : @linlianqin
  5. # @Site :
  6. # @File : Drag_learn.py
  7. # @Software: PyCharm
  8. # @description:
  9. '''
  10. 选择文本输入框中的文本,移动到下拉框中自动添加
  11. 步骤:
  12. 1、将文本输入框设置为可拖拽
  13. 2、设置下拉框的两个信号属性:
  14. 0)将控件设置为接受其它地方拖拽过来的内容
  15. 1)拖动还没有放下时触发
  16. 2)拖动放下时触发
  17. '''
  18. from PyQt5.QtWidgets import QComboBox,QWidget,QLineEdit,QFormLayout,QLabel,QApplication
  19. import sys
  20. class Mycombobox(QComboBox):
  21. def __init__(self):
  22. super(Mycombobox, self).__init__()
  23. # 0)将控件设置为接受其它地方拖拽过来的内容
  24. self.setAcceptDrops(True)
  25. # 1)拖动还没有放下时触发
  26. def dragEnterEvent(self, event):
  27. print(event)
  28. ## 若拖拽含有文本,则接受,否则忽略
  29. if event.mimeData().hasText():
  30. event.accept()
  31. else:
  32. event.ignore()
  33. # 2)拖动放下时触发
  34. def dropEvent(self,event):
  35. self.addItem(event.mimeData().text())
  36. class DragDropDemo(QWidget):
  37. def __init__(self):
  38. super(DragDropDemo, self).__init__()
  39. layout = QFormLayout()
  40. layout.addRow(QLabel("请将左边文本移动到右边下拉框中"))
  41. combo = Mycombobox()
  42. lineEdit = QLineEdit()
  43. layout.addRow(lineEdit,combo)
  44. # 1、将文本输入框设置为可拖拽
  45. lineEdit.setDragEnabled(True)
  46. self.setLayout(layout)
  47. if __name__ == '__main__':
  48. app = QApplication(sys.argv)
  49. mainWin = DragDropDemo()
  50. mainWin.show()
  51. sys.exit(app.exec_())

 

2、剪切板(QApplication.clipboard)

关键代码

# 将文本复制到剪切板
clipboard = QApplication.clipboard()
clipboard.setText(self.textlabel1.text())

# 获取剪切板的文本

clipboard.text()

# 将图像复制到剪切板

clipboard = QApplication.clipboard()
clipboard.setPixmap(QPixmap("icon.jpg"))

# 获取剪切板上的图像

clipboard.pixmap()
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # @Time : 2022/5/26 17:00
  4. # @Author : @linlianqin
  5. # @Site :
  6. # @File : ClipBoard_learn.py
  7. # @Software: PyCharm
  8. # @description:
  9. '''
  10. 使用剪切板
  11. '''
  12. from PyQt5.QtWidgets import QComboBox,QWidget,QPushButton,QLabel,QGridLayout,QApplication
  13. from PyQt5.QtGui import QPixmap
  14. import sys
  15. class ClipBoard_learn(QWidget):
  16. def __init__(self):
  17. super(ClipBoard_learn, self).__init__()
  18. textcopyBtn = QPushButton("复制text")
  19. textpasteBtn = QPushButton("粘贴text")
  20. imagecopyBtn = QPushButton("复制image")
  21. imagepasteBtn = QPushButton("粘贴image")
  22. self.textlabel1 = QLabel("文本")
  23. self.textlabel2 = QLabel()
  24. self.imageLabel1 = QLabel()
  25. self.imageLabel2 = QLabel()
  26. gridLayout = QGridLayout()
  27. gridLayout.addWidget(textcopyBtn,0,0)
  28. gridLayout.addWidget(textpasteBtn,0,1)
  29. gridLayout.addWidget(imagepasteBtn,1,1)
  30. gridLayout.addWidget(imagecopyBtn,1,0)
  31. gridLayout.addWidget(self.textlabel1,2,0)
  32. gridLayout.addWidget(self.textlabel2,2,1)
  33. gridLayout.addWidget(self.imageLabel1,3,0)
  34. gridLayout.addWidget(self.imageLabel2,3,1)
  35. self.setLayout(gridLayout)
  36. self.setWindowTitle("剪切板演示")
  37. textcopyBtn.clicked.connect(self.textcopy)
  38. textpasteBtn.clicked.connect(self.textpaste)
  39. imagecopyBtn.clicked.connect(self.imagecopy)
  40. imagepasteBtn.clicked.connect(self.imagepaste)
  41. def textcopy(self):
  42. clipboard = QApplication.clipboard()
  43. clipboard.setText(self.textlabel1.text())
  44. def textpaste(self):
  45. clipboard = QApplication.clipboard()
  46. self.textlabel2.setText(clipboard.text())
  47. def imagecopy(self):
  48. clipboard = QApplication.clipboard()
  49. clipboard.setPixmap(QPixmap("icon.jpg"))
  50. def imagepaste(self):
  51. clipboard = QApplication.clipboard()
  52. self.imageLabel2.setPixmap(clipboard.pixmap())
  53. if __name__ == '__main__':
  54. app = QApplication(sys.argv)
  55. mainWin = ClipBoard_learn()
  56. mainWin.show()
  57. sys.exit(app.exec_())

 复制粘贴文本演示:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/70523
推荐阅读
相关标签
  

闽ICP备14008679号