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

目录

1、拖拽功能(Drag&Drop)

2、剪切板(QApplication.clipboard)


1、拖拽功能(Drag&Drop)

'''
选择文本输入框中的文本,移动到下拉框中自动添加

步骤:
1、将文本输入框设置为可拖拽
lineEdit.setDragEnabled(True)
2、设置下拉框的两个信号属性:
0)将控件设置为接受其它地方拖拽过来的内容

self.setAcceptDrops(True)

1)拖动还没有放下时触发

def dragEnterEvent(self, event):
   print(event)
   ## 若拖拽含有文本,则接受,否则忽略
   if event.mimeData().hasText():
      event.accept()
   else:
      event.ignore()

2)拖动放下时触发
def dropEvent(self,event):
   self.addItem(event.mimeData().text())

'''

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/26 16:46
# @Author  : @linlianqin
# @Site    : 
# @File    : Drag_learn.py
# @Software: PyCharm
# @description:

'''
选择文本输入框中的文本,移动到下拉框中自动添加

步骤:
1、将文本输入框设置为可拖拽
2、设置下拉框的两个信号属性:
0)将控件设置为接受其它地方拖拽过来的内容
1)拖动还没有放下时触发
2)拖动放下时触发
'''
from PyQt5.QtWidgets import QComboBox,QWidget,QLineEdit,QFormLayout,QLabel,QApplication
import sys

class Mycombobox(QComboBox):
	def __init__(self):
		super(Mycombobox, self).__init__()
		# 0)将控件设置为接受其它地方拖拽过来的内容
		self.setAcceptDrops(True)

	# 1)拖动还没有放下时触发
	def dragEnterEvent(self, event):
		print(event)
		## 若拖拽含有文本,则接受,否则忽略
		if event.mimeData().hasText():
			event.accept()
		else:
			event.ignore()

	# 2)拖动放下时触发
	def dropEvent(self,event):
		self.addItem(event.mimeData().text())

class DragDropDemo(QWidget):
	def __init__(self):
		super(DragDropDemo, self).__init__()
		layout = QFormLayout()
		layout.addRow(QLabel("请将左边文本移动到右边下拉框中"))
		combo = Mycombobox()
		lineEdit = QLineEdit()
		layout.addRow(lineEdit,combo)

		# 1、将文本输入框设置为可拖拽
		lineEdit.setDragEnabled(True)

		self.setLayout(layout)


if __name__ == '__main__':
	app = QApplication(sys.argv)
	mainWin = DragDropDemo()
	mainWin.show()
	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()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/26 17:00
# @Author  : @linlianqin
# @Site    : 
# @File    : ClipBoard_learn.py
# @Software: PyCharm
# @description:

'''
使用剪切板

'''
from PyQt5.QtWidgets import QComboBox,QWidget,QPushButton,QLabel,QGridLayout,QApplication
from PyQt5.QtGui import QPixmap
import sys

class ClipBoard_learn(QWidget):
	def __init__(self):
		super(ClipBoard_learn, self).__init__()

		textcopyBtn = QPushButton("复制text")
		textpasteBtn = QPushButton("粘贴text")

		imagecopyBtn = QPushButton("复制image")
		imagepasteBtn = QPushButton("粘贴image")

		self.textlabel1 = QLabel("文本")
		self.textlabel2 = QLabel()
		self.imageLabel1 = QLabel()
		self.imageLabel2 = QLabel()

		gridLayout = QGridLayout()
		gridLayout.addWidget(textcopyBtn,0,0)
		gridLayout.addWidget(textpasteBtn,0,1)
		gridLayout.addWidget(imagepasteBtn,1,1)
		gridLayout.addWidget(imagecopyBtn,1,0)
		gridLayout.addWidget(self.textlabel1,2,0)
		gridLayout.addWidget(self.textlabel2,2,1)
		gridLayout.addWidget(self.imageLabel1,3,0)
		gridLayout.addWidget(self.imageLabel2,3,1)

		self.setLayout(gridLayout)
		self.setWindowTitle("剪切板演示")

		textcopyBtn.clicked.connect(self.textcopy)
		textpasteBtn.clicked.connect(self.textpaste)
		imagecopyBtn.clicked.connect(self.imagecopy)
		imagepasteBtn.clicked.connect(self.imagepaste)

	def textcopy(self):
		clipboard = QApplication.clipboard()
		clipboard.setText(self.textlabel1.text())

	def textpaste(self):
		clipboard = QApplication.clipboard()
		self.textlabel2.setText(clipboard.text())

	def imagecopy(self):
		clipboard = QApplication.clipboard()
		clipboard.setPixmap(QPixmap("icon.jpg"))

	def imagepaste(self):
		clipboard = QApplication.clipboard()
		self.imageLabel2.setPixmap(clipboard.pixmap())


if __name__ == '__main__':
	app = QApplication(sys.argv)
	mainWin = ClipBoard_learn()
	mainWin.show()
	sys.exit(app.exec_())

 复制粘贴文本演示:

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值