• 控件拖拽和剪贴板


    拖拽

    '''
    让控件支持拖拽动作
    A.setDragEnabled(True)
    
    B.setAcceptDrops(True)
    
    B需要两个事件
    1. dragEnterEvent   将A拖到B触发
    2. dropEvent        在B的区域放下A时触发
    
    
    '''
    
    import sys,math
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    
    class MyComboBox(QComboBox) :
        def __init__(self):
            super(MyComboBox,self).__init__()
            self.setAcceptDrops(True)
        def dragEnterEvent(self,e):
            print(e)
            if e.mimeData().hasText():
                e.accept()
            else:
                e.ignore()
        def dropEvent(self,e):
            self.addItem(e.mimeData().text())
    
    class DrapDropDemo(QWidget):
        def __init__(self):
            super(DrapDropDemo,self).__init__()
            formLayout = QFormLayout()
            formLayout.addRow(QLabel("请将左边的文本拖拽到右边的下拉列表中"))
            lineEdit = QLineEdit()
            lineEdit.setDragEnabled(True)  # 让QLineEdit控件可拖动
    
            combo = MyComboBox()
            formLayout.addRow(lineEdit,combo)
            self.setLayout(formLayout)
            self.setWindowTitle('拖拽案例')
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = DrapDropDemo()
        main.show()
        sys.exit(app.exec_())

    image

    QMimeData类提为数据提供一个容器,用来记录关于MIME类型数据的信息
    QMimeData常用来描述保存在剪切板里信息,或者拖拽原理
    QMimeData对象把它所保存的信息和正确的MIME类型连接起来来保证信息可以被安全的在应用程序之间转移,或者在同一个应用程序之间拷贝


    剪贴板

    '''
    使用剪贴板
    
    
    '''
    
    import sys,math
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    from PyQt5.QtCore import *
    class ClipBoard(QDialog):
        def __init__(self):
            super(ClipBoard,self).__init__()
            textCopyButton = QPushButton('复制文本')
            textPasteButton = QPushButton('粘贴文本')
    
            htmlCopyButton = QPushButton('复制HTML')
            htmlPasteButton = QPushButton('粘贴HTML')
    
            imageCopyButton = QPushButton('复制图像')
            imagePasteButton = QPushButton('粘贴图像')
    
            self.textLabel  = QLabel('默认文本')
            self.imageLabel=QLabel()
          #  self.imageLabel.setPixmap(QPixmap('./images/book1.png'))
    
            layout = QGridLayout()
            layout.addWidget(textCopyButton,0,0)
            layout.addWidget(imageCopyButton,0,1)
            layout.addWidget(htmlCopyButton,0,2)
            layout.addWidget(textPasteButton,1,0)
            layout.addWidget(htmlPasteButton,1,1)
            layout.addWidget(imagePasteButton,1,2)
    
            layout.addWidget(self.textLabel,2,0,1,2)
            layout.addWidget(self.imageLabel,2,2)
    
            self.setLayout(layout)
    
            textCopyButton.clicked.connect(self.copyText)
    
            textPasteButton.clicked.connect(self.pasteText)
            htmlCopyButton.clicked.connect(self.copyHtml)
            htmlPasteButton.clicked.connect(self.pasteHtml)
            imageCopyButton.clicked.connect(self.copyImage)
            imagePasteButton.clicked.connect(self.pasteImage)
    
            self.setWindowTitle('剪贴板演示')
    
        def copyText(self):
            clipboard = QApplication.clipboard()
            clipboard.setText('hello world')
        def pasteText(self):
            clipboard = QApplication.clipboard()
            self.textLabel.setText(clipboard.text())
    
        def copyImage(self):
            clipboard = QApplication.clipboard()
            clipboard.setPixmap(QPixmap('./images/book.png'))
    
        def pasteImage(self):
            clipboard = QApplication.clipboard()
            self.imageLabel.setPixmap(clipboard.pixmap())
    
        def copyHtml(self):
            mimeData = QMimeData()
            mimeData.setHtml('<b>Bold and <font color=red>Red</font></b>')
            clipboard = QApplication.clipboard()
            clipboard.setMimeData(mimeData)
    
        def pasteHtml(self):
            clipboard = QApplication.clipboard()
            mimeData = clipboard.mimeData()
            if mimeData.hasHtml():
                self.textLabel.setText(mimeData.html())
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        main = ClipBoard()
        main.show()
        sys.exit(app.exec_())

    image

    天道酬勤 循序渐进 技压群雄
  • 相关阅读:
    JavaScript 循环语句
    python 学习(day1)
    spring定时任务(@Scheduled注解)cron表达式详解
    IDEA 实用插件
    mysql版本和mysql-connector-java的对应关系记录
    CAS单点登录(理论部分)
    AOP
    获取post请求数据工具类
    nodeJs 安装
    docker 安装Nginx
  • 原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/14822334.html
Copyright © 2020-2023  润新知