先放代码
- 监听剪切板.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
复制
复制完毕后,可以看到我们的后台应用已经启动了,并且执行了特定操作后对话框会自动隐藏,直到响应下一次的
文件复制事件