pyqt pyautogui pygetwindow实现的窗口宽高和在窗口内坐标

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QLabel
from PyQt5.QtWidgets import QVBoxLayout,QHBoxLayout,QLineEdit,QTableWidget,QTableWidgetItem
from PyQt5.QtCore import QTimer,QThread,pyqtSignal,Qt
import pygetwindow
import pyautogui
class myWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('窗口数据')
        self.resize(239,139)
        self.setFixedSize(239,139)
        self.setWindowFlag(Qt.WindowStaysOnTopHint, True)
        box=QVBoxLayout()
        # 搜索
        search_box=QHBoxLayout()
        self.search_input=QLineEdit()
        self.search_button=QPushButton('确定')
        search_box.addWidget(self.search_input,8)
        search_box.addWidget(self.search_button,2)
        # 结果
        self.results=QLabel('待')
        # 表格
        self.table=QTableWidget(self)
        self.table.setRowCount(1)
        self.table.setColumnCount(2)
        self.table.setHorizontalHeaderLabels(['窗口大小','鼠标位置'])
        # box
        box.addLayout(search_box,1)
        box.addWidget(self.results,1)
        box.addWidget(self.table,6)
        # self.t = QTimer()
        # self.t.timeout.connect(self.datas)
        # self.t.start(1000)
        self.setLayout(box)
    def datas(self):
        print(self.width(),self.height())
class main(myWindow):
    sj=pyqtSignal(int,int,str)
    sjs = pyqtSignal(int, int, str)
    def __init__(self):
        super().__init__()
        self.win_t=QTimer()
        self.win_t.timeout.connect(lambda: self._win_xy())
        self.move_t=QTimer()
        self.move_t.timeout.connect(lambda :self._move_xy())
        self.search_button.clicked.connect(lambda :self.button_search())
        self.sj.connect(self.win_xy)
        self.sjs.connect(self.move_xy)
        self.k=True
    def button_search(self):
        self.s=self.search_input.text()
        if not self.s:
            self.results.setText('不要留空!')
            pass
        else:
            self.win_t.start()
    def win_xy(self,row,c,data):
        item=QTableWidgetItem(data)
        item.setTextAlignment(Qt.AlignCenter)
        self.table.setItem(row,c,item)
    def _win_xy(self):
        print('运行')

        try:
            windows=pygetwindow.getWindowsWithTitle(self.s)[0]
            self.l=windows
            print(windows)
            self.results.setText('找到窗口')
            self.sj.emit(0, 0, f'w:{windows.width}h:{windows.height}')
            if self.k:
                self.move_t.start()
                self.k=False
        except Exception as e:
            print(e)
            self.k=True
            self.results.setText('没有这个窗口')
            self.win_t.stop()
        pass
    def move_xy(self,r,c,data):
        item = QTableWidgetItem(data)
        item.setTextAlignment(Qt.AlignCenter)
        self.table.setItem(r, c, item)
        pass
    def _move_xy(self):
        try:
            x,y=pyautogui.position()
            self.sjs.emit(0,1,f'x:{x-self.l.left},y{y-self.l.top}')
        except Exception as e:
            print(e)
        pass


if __name__ == '__main__':
    app=QApplication(sys.argv)
    windows=main()
    windows.show()
    sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值