在Python GUI中实现一个拖放功能

浏览: 2167

在之前的文章中,构建了一个稍显复杂的GUI并且使用Qthread进行了线程的管理。

本篇,我们继续学习PyQt5的使用——介绍在GUI中使用拖放(Drag 和Drop)控件。

1,拖放动作

在GUI中,拖放指的是点击一个对象,并将其拖动到另一个对象上的动作。比如百度云PC客户端支持的拖放文件以快速移动文件:

image.png

拖放动作能够很直观很方便的在GUI程序中完成一些很复杂或繁琐的操作。

2在PyQt中实现拖放

在PyQt5中,我们也可以很轻松地使用拖放功能。

使用Qt设计师或者使用API都可以实现。我们先使用Qt设计师将GUI的图形设计出来,在之前的GUI的基础上,我们新建一个选项卡。

0 (1).gif

我们新建了一个选项卡,然后在里面放置了一个LineEdit部件,一个PushButton部件,两个ListWidget部件。

对于简单的拖放效果,我们可以直接使用Qt设计师中的选项进行设置。例如,我们直接可以使用dragEnable属性、dragDropOverwriteMode属性、dragDropMode属性为ListWidget部件设置拖放功能:

0 (2).gif

而一些稍微复杂的拖放功能,就需要编写Python逻辑处理代码来完成了。

我们先将UI文件保存并转换为Python文件。

image.png

然后,新建一个Python文嘉drag.py,在文件中引入刚刚转换好的Python文件:

image.png

运行代码正常:

0 (3).gif

接着,我们创建一个DragDropButton()类,用来处理按钮的拖放:

image.png

我们使用setAcceptDrops属性设置按钮接收拖放事件,创建一个dragEnterEvent()方法用来设置拖的事件响应,创建一个dropEvent()方法用来设置放的事件响应。

接着我们在MainWindow()主类中,调用它:

image.png

最后,运行一下看看:

0 (4).gif

在上面的程序中,我们能够将文本拖放到按钮上。

推荐 1
本文由 州的先生 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册