博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZetCode PyQt4 tutorial Drag and Drop
阅读量:6531 次
发布时间:2019-06-24

本文共 4550 字,大约阅读时间需要 15 分钟。

#!/usr/bin/python# -*- coding: utf-8 -*-"""ZetCode PyQt4 tutorialThis is a simple drag anddrop example. author: Jan Bodnarwebsite: zetcode.comlast edited: January 2015"""import sysfrom PyQt4 import QtGui# In order to drop text on the QtGui.QPushButton widget, we must reimplement some methods. Therefore, we create our own Button class which inherits from the QtGui.QPushButton class.class Button(QtGui.QPushButton):      def __init__(self, title, parent):        super(Button, self).__init__(title, parent)                # We enable drop events for the widget.        self.setAcceptDrops(True)    # First, we reimplement the dragEnterEvent() method. We inform about the data type that we accept. In our case it is plain text.    def dragEnterEvent(self, e):              if e.mimeData().hasFormat('text/plain'):            e.accept()        else:            e.ignore()     # By reimplementing the dropEvent() method we define what we will do upon the drop event. Here we change the text of the button widget.    def dropEvent(self, e):        self.setText(e.mimeData().text()) class Example(QtGui.QWidget):      def __init__(self):        super(Example, self).__init__()                self.initUI()            def initUI(self):        edit = QtGui.QLineEdit('', self)        # The QtGui.QLineEdit widget has a built-in support for drag operations. All we need to do is to call setDragEnabled() method to activate it.        edit.setDragEnabled(True)        edit.move(30, 65)        button = Button("Button", self)        button.move(190, 65)                self.setWindowTitle('Simple drag & drop')        self.setGeometry(300, 300, 300, 150)def main():      app = QtGui.QApplication(sys.argv)    ex = Example()    ex.show()    app.exec_()    if __name__ == '__main__':    main()   --------------------------------------------------------------------------------#!/usr/bin/python# -*- coding: utf-8 -*-"""ZetCode PyQt4 tutorialIn this program, we can press on a button with a left mouse click or drag and drop the button with  the right mouse click. author: Jan Bodnarwebsite: zetcode.comlast edited: October 2013"""import sysfrom PyQt4 import QtCore, QtGui# We create a Button class which will derive from the QtGui.QPushButton. We also reimplement two methods of the QtGui.QPushButton: the mouseMoveEvent() and the mousePressEvent(). The mouseMoveEvent() method is the place where the drag & drop operation begins.class Button(QtGui.QPushButton):      def __init__(self, title, parent):        super(Button, self).__init__(title, parent)    def mouseMoveEvent(self, e):        # Here we decide that we can perform drag & drop only with a right mouse button. The left mouse button is reserved for clicking on the button.        if e.buttons() != QtCore.Qt.RightButton:            return        # The QDrag object is created. The class provides support for MIME-based drag and drop data transfer.        mimeData = QtCore.QMimeData()        drag = QtGui.QDrag(self)        drag.setMimeData(mimeData)        drag.setHotSpot(e.pos() - self.rect().topLeft())        # The start() method of the drag object starts the drag & drop operation.        dropAction = drag.start(QtCore.Qt.MoveAction)    # We print 'press' to the console if we left click on the button with the mouse. Notice that we call mousePressEvent() method on the parent as well. Otherwise, we would not see the button being pushed.    def mousePressEvent(self, e):              super(Button, self).mousePressEvent(e)                if e.button() == QtCore.Qt.LeftButton:            print 'press'class Example(QtGui.QWidget):      def __init__(self):        super(Example, self).__init__()        self.initUI()            def initUI(self):        self.setAcceptDrops(True)        self.button = Button('Button', self)        self.button.move(100, 65)        self.setWindowTitle('Click or Move')        self.setGeometry(300, 300, 280, 150)        self.show()    def dragEnterEvent(self, e):              e.accept()    def dropEvent(self, e):        # In the dropEvent() method we code what happens after we release the mouse button and finish the drop operation. We find out the current mouse pointer position and move the button accordingly.        position = e.pos()                self.button.move(position)        # We specify the type of the drop action. In our case it is a move action.        e.setDropAction(QtCore.Qt.MoveAction)        e.accept()        def main():      app = QtGui.QApplication([])    ex = Example()    sys.exit(app.exec_())if __name__ == '__main__':    main()

 

转载地址:http://hwqbo.baihongyu.com/

你可能感兴趣的文章
UG中卸载被占用的DLL
查看>>
eclipse 设置注释模板详解,与导入模板方法介绍总结
查看>>
Cocos2d-x3.2 文字显示
查看>>
估计下星期就能考科目二了
查看>>
轻松实现localStorage本地存储和本地数组存储
查看>>
mongodb group
查看>>
python+selenium自动化测试(二)
查看>>
(笔记 - 纯手敲)Spring的IOC和AOP 含GIT地址
查看>>
7-设计模式介绍
查看>>
让运维更高效:关于ECS系统事件
查看>>
J2EE分布式框架--单点登录集成方案
查看>>
跨域传递参数
查看>>
android 4.2的新特性layoutRtl,让布局自动从右往左显示
查看>>
iOS tableView 下拉列表的设计
查看>>
sharepoint 2010 属性编辑工具 SPCamlEditor 1.5.1
查看>>
linux下配置网络环境
查看>>
java Windows7 下环境变量设置
查看>>
NBU异构还原Oracle完整备份的一些总结
查看>>
freeBSD安装详细讲解
查看>>
WSFC2016 VM弹性与存储容错
查看>>