python 窗口置顶_PyQt5 窗口置顶

本文介绍了如何使用PyQt5创建一个始终置顶的窗口,并结合pynput库实现了鼠标监听功能,包括鼠标移动和点击事件的捕获。通过监听鼠标的移动和点击位置,窗口可以显示相关信息。

65f3c08c1696c25b7d8998230f90c811.pngself.setWindowFlags(Qt.WindowStaysOnTopHint)

附:获取坐标

listen.pyfrom pynput.mouse import Listener as MouseListener

from pynput.keyboard import Listener as KeyboardListener

class Listen:

def __init__(self):

pass

def mouseMove(self, x,y):

self.triggerMove.emit("{},{}".format(x,y))

def mouseClick(self, x, y, button, pressed):

self.triggerClick.emit("{},{}".format(x, y))

def mouseListen(self):

with MouseListener(on_move=self.mouseMove, on_click=self.mouseClick) as listerner:

listerner.join()

if __name__ == "__main__":

rec = Listen()

# rec.mouseListen()

rec.mouseClickPos()

mpos.pyimport sys

from PyQt5.QtWidgets import QWidget, QMainWindow, QApplication, QDesktopWidget, QPushButton, QVBoxLayout, QHBoxLayout, \

QLineEdit

from PyQt5.QtCore import Qt, QThread, pyqtSignal, QObject

from lib.Listen import Listen

class CombWidget(QObject):

def __init__(self):

super().__init__()

def combHBox(self, lst: list):

h = QHBoxLayout()

for x, y in lst:

h.addWidget(x, y)

wg = QWidget()

wg.setLayout(h)

return wg

def combVBox(self, lst: list):

h = QVBoxLayout()

for x, y in lst:

h.addWidget(x, y)

wg = QWidget()

wg.setLayout(h)

return wg

class MouseThread(QThread):

clickPos = pyqtSignal(str)

movePos = pyqtSignal(str)

def run(self):

print("mouse thread init")

self.mouseListener.triggerClick = self.clickPos

self.mouseListener.triggerMove = self.movePos

self.mouseListener.mouseListen()

class Mpos(QMainWindow):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setWindowFlags(Qt.WindowStaysOnTopHint)

comb = CombWidget()

v = QVBoxLayout()

self.pos_btn = QPushButton("获取坐标")

self.pos_btn.clicked.connect(self.getPos)

self.pos_txt = QLineEdit("")

self.pos_txt.setReadOnly(True)

self.movepos_txt = QLineEdit("")

self.movepos_txt.setReadOnly(True)

v.addWidget(comb.combHBox([(self.pos_btn, 2), (self.pos_txt, 2), (self.movepos_txt, 2)]), 2)

# v.addWidget(QTextEdit(""), 22)

wg = QWidget()

wg.setLayout(v)

self.setCentralWidget(wg)

self.mouseThread = MouseThread()

self.mouseThread.clickPos.connect(self.clickPos)

self.mouseThread.movePos.connect(self.movePos)

self.mouseThread.mouseListener = self.mouseListener = Listen()

self.setGeometry(300, 300, 300, 100)

self.setWindowTitle("坐标/点击/移动")

self.center()

def getPos(self):

self.mouseThread.start()

def clickPos(self,pos):

self.pos_txt.setText(pos)

def movePos(self,pos):

self.movepos_txt.setText(pos)

def center(self):

qr = self.frameGeometry()

cp = QDesktopWidget().availableGeometry().center()

qr.moveCenter(cp)

self.move(qr.topLeft())

if __name__ == "__main__":

app = QApplication(sys.argv)

mpos = Mpos()

mpos.show()

sys.exit(app.exec_())

如果本文对您有所帮助,请支持下本站哦!!!^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值