PyQt5实现一个小工具:响应文件复制事件

python监听对文件进行复制的操作

先放代码

  • 监听剪切板.py 主代码,自己添加业务逻辑
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from tool import Ui_MainWindow
import os

app = QApplication([])
clipboard = QApplication.clipboard()

global myWin

def on_clipboard_change():
    data = clipboard.mimeData()
    # try:
    if data.hasFormat('text/uri-list'):
        for path in data.urls():
            s=str(path)
            s=s.replace("PyQt5.QtCore.QUrl('file:///",'')
            s = s.replace("')", '')
            if os.path.exists(s):
                global myWin
                myWin.view()
                print(s)
    # except BaseException:
    #     print('error')
    #     exit(0)

class MyMainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyMainWindow, self).__init__(parent)
        self.setupUi(self)
        # self.setWindowFlags(Qt.WindowStaysOnTopHint)
        self.b_change.clicked.connect(self.change)
        self.b_del.clicked.connect(self.Del)
    def view(self):
        if not self.isVisible():
            self.show()
    def change(self):
        self.hide()
        pass
    def Del(self):
        self.hide()
        pass

if __name__ == '__main__':
    global myWin
    myWin = MyMainWindow()
    clipboard.dataChanged.connect(on_clipboard_change)
    app.exec_()
  • tool.py 界面代码
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(338, 162)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.b_del = QtWidgets.QPushButton(self.centralwidget)
        self.b_del.setGeometry(QtCore.QRect(40, 40, 93, 28))
        self.b_del.setObjectName("b_del")
        self.b_change = QtWidgets.QPushButton(self.centralwidget)
        self.b_change.setGeometry(QtCore.QRect(180, 40, 93, 28))
        self.b_change.setObjectName("b_change")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 338, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.b_del.setText(_translate("MainWindow", "删除"))
        self.b_change.setText(_translate("MainWindow", "微调"))

运行效果

  • 选中一个文件,按下Ctrl+C复制
    这里写图片描述

  • 复制完毕后,可以看到我们的后台应用已经启动了,并且执行了特定操作后对话框会自动隐藏,直到响应下一次的文件复制事件
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/tqcai666/article/details/80371471