设计界面实现后台按键和鼠标点击操作

这篇具有很好参考价值的文章主要介绍了设计界面实现后台按键和鼠标点击操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写了一个在窗口后台按键和点击鼠标的界面。

目标功能:绑定窗口后,实现后台的按键和鼠标点击操作,并输出操作记录。

后台按键,python使用经验,计算机外设,python,ui

UI界面转换为python文件后的代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(340, 600)
        MainWindow.setMinimumSize(QtCore.QSize(340, 600))
        MainWindow.setMaximumSize(QtCore.QSize(480, 780))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(40, 82, 95, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(40, 132, 95, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(40, 316, 125, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(40, 380, 125, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setObjectName("pushButton_4")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(152, 82, 143, 35))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(16)
        self.lineEdit.setFont(font)
        self.lineEdit.setText("")
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(185, 380, 110, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_5.setFont(font)
        self.pushButton_5.setObjectName("pushButton_5")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(40, 208, 125, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_6.setFont(font)
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_7.setGeometry(QtCore.QRect(40, 262, 125, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_7.setFont(font)
        self.pushButton_7.setObjectName("pushButton_7")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(185, 208, 110, 35))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(16)
        self.lineEdit_2.setFont(font)
        self.lineEdit_2.setText("")
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_8.setGeometry(QtCore.QRect(40, 32, 95, 35))
        font = QtGui.QFont()
        font.setFamily("Adobe 黑体 Std R")
        font.setPointSize(16)
        self.pushButton_8.setFont(font)
        self.pushButton_8.setObjectName("pushButton_8")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(185, 262, 110, 35))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(16)
        self.lineEdit_3.setFont(font)
        self.lineEdit_3.setText("")
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_4.setGeometry(QtCore.QRect(185, 316, 110, 35))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(16)
        self.lineEdit_4.setFont(font)
        self.lineEdit_4.setText("")
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(42, 178, 261, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(40, 436, 257, 91))
        self.textEdit.setObjectName("textEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 340, 23))
        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.pushButton.setText(_translate("MainWindow", "绑定后台"))
        self.pushButton_2.setText(_translate("MainWindow", "解绑窗口"))
        self.pushButton_3.setText(_translate("MainWindow", "按键"))
        self.pushButton_4.setText(_translate("MainWindow", "鼠标点击"))
        self.pushButton_5.setText(_translate("MainWindow", "鼠标右击"))
        self.pushButton_6.setText(_translate("MainWindow", "循环次数"))
        self.pushButton_7.setText(_translate("MainWindow", "间隔时间(S)"))
        self.pushButton_8.setText(_translate("MainWindow", "初始化"))

转换命令:

转换格式:
pyuic5 -o py文件 ui文件
--------------------------------------------------------------------
pyuic5 -o py文件的路径和文件名 ui文件的路径和文件名
--------------------------------------------------------------------
文件名称不能有空格
--------------------------------------------------------------------

在cmd界面输入:

pyuic5 -o B:\我的游戏\天涯明月刀\天刀脚本\天刀后台键鼠界面.py B:\我的游戏\天涯明月刀\天刀脚本\天刀后台键鼠.ui

接下来,就是让这个界面能够工作。

大致流程是这样的:


先导入必要的模块。

import sys
# 使用插件必要
import win32com.client
# 导入界面文件
from 天刀后台键鼠界面 import *

继承UI界面,这里需要继承窗体,调用父类的初始化,并且初始化自行定义的函数。

# 继承界面的类
class MyMainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    """ 继承窗体:QMainWindow,和转化的py文件:Ui_MainWindow """
    def __init__(self):  # 子类的初始化函数,此时会覆盖父类Ui_MainWindow类的初始化函数
        # 调用父类的初始化接口
        """ 在子类进行初始化时,也想继承父类的初始化__init__()就通过super()实现 """
        # super(MyMainWindow,self)也可以写成super()
        super(MyMainWindow, self).__init__()  # 继承父类的__init__()
        self.setupUi(self)  # 调用父类的setupUi()函数

        # 载入自定义设置
        self.test()

    # 自定义设置
    def test(self):
        pass

最后是程序入口,这里就可以运行设计好的界面了,并且实现其功能。

# 程序入口,程序从此处启动PYQT设计的窗体
if __name__ == '__main__':
    # 对于GUI程序必须至少有一个这样的实例来让程序运行。
    app = QtWidgets.QApplication(sys.argv)
    # 调用继承的窗体对象
    myWin = MyMainWindow()
    # 显示窗体
    myWin.show()
    # 程序关闭时退出进程
    # 有时候退出程序后,sys.exit(app.exec_())会报错,改用app.exec_()就没事
    sys.exit(app.exec_())

下面编写具体的函数:

    # 注册大漠插件
    def chushihua(self):
        self.dm = win32com.client.Dispatch('dm.dmsoft')
		pass
		
    def bangding(self):
        # 获取文本
        hwnd = self.lineEdit.text()
        # 延迟
        time.sleep(0.2)
        # 激活指定窗口
        self.dm.SetWindowState(hwnd, 1)
        # 延迟
        time.sleep(0.5)
        # 检测窗口是否已经被绑定
        dm_ret = self.dm.IsBind(hwnd)
        if dm_ret == 0:  #没有绑定
            # 后台绑定窗口
            try:
                # BindWindow(hwnd,display,mouse,keypad,mode)
                dm_ret = self.dm.BindWindow(hwnd, "dx", "dx2", "dx", 101)
                self.textEdit.setText('成功绑定窗口!')
            except:
                self.textEdit.setText('绑定失败!出现错误!')
        elif dm_ret == 1:
            self.textEdit.setText('窗口1已绑定,跳过。')

    def jiebang(self):
        hwnd = self.lineEdit.text()
        # 激活指定窗口
        self.dm.SetWindowState(hwnd, 1)
        bangding = self.dm.UnBindWindow()
        if bangding == 1:
            self.textEdit.setText('窗口解绑成功')
        else:
            self.dm.ForceUnBindWindow(hwnd)
            self.textEdit.setText('解绑失败,进行强制解绑!')

    def anjian(self):
        count = self.lineEdit_2.text()
        count = int(count)
        second = self.lineEdit_3.text()
        second = int(second)
        key = self.lineEdit_4.text()
        self.textEdit.setText(f'按键{key}{count}次,每次间隔{second}秒')
        for i in range(count):
            self.dm.KeyPressChar(key)
            time.sleep(second)

    def zuoji(self):
        count = self.lineEdit_2.text()
        count = int(count)
        second = self.lineEdit_3.text()
        second = int(second)
        key = self.lineEdit_4.text()
        self.textEdit.setText(f'左键单击{count}次,每次间隔{second}秒')
        for i in range(count):
            self.dm.LeftClick()
            time.sleep(second)

    def youji(self):
        count = self.lineEdit_2.text()
        count = int(count)
        second = self.lineEdit_3.text()
        second = int(second)
        key = self.lineEdit_4.text()
        self.textEdit.setText(f'右键单击{count}次,每次间隔{second}秒')
        for i in range(count):
            self.dm.RightClick()
            time.sleep(second)

把函数和pushButton按钮绑定起来,单击pushButton按钮则触发对应的函数。

在类MyMainWindow下的初始化函数__init__(self)下面添加:文章来源地址https://www.toymoban.com/news/detail-519701.html

    # 单击pushButton按钮触发计算函数
    self.pushButton_8.clicked.connect(self.chushihua)
    self.pushButton.clicked.connect(self.bangding)
    self.pushButton_2.clicked.connect(self.jiebang)
    self.pushButton_3.clicked.connect(self.anjian)
    self.pushButton_4.clicked.connect(self.zuoji)
    self.pushButton_5.clicked.connect(self.youji)

到了这里,关于设计界面实现后台按键和鼠标点击操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab:连续按键、移动鼠标、鼠标点击、鼠标连点、输入字符,10行代码即可。

    Matlab 也可以实现 按键J灵 的一些基本功能,比如: 连续按键、移动鼠标、鼠标点击、鼠标连点和输入字符! 其中, “连续按键” :指间隔一定的时间(如:0.1s)按一下某个按键(如:键盘上的A键)。这个在游戏挂机时,用做 卡键练技能 很有效,而且使用Matlab语言 能避免

    2024年02月09日
    浏览(43)
  • 管理后台低代码PaaS平台源码:点击鼠标,就能编程

    低代码平台源码10大核心功能:1建模引擎 、2 移动引擎 、3,流程引擎 5.报表引擎、6安全引擎、 7 API引擎 、8.应用集成引擎、 9.代码引擎、 10.公式引擎。 1.低代码开发:管理后台提供了一系列易于使用的低代码开发工具,使企业可以快速构建自己的应用程序,无需编写复杂的

    2024年02月15日
    浏览(32)
  • vue 通过 Ctrl 、Shift 键 + 点击鼠标实现 div 多选操作(1)

    接下来就是相关主要代码的编写问题,因为每个人的项目和需求是不一样的,所以我就简单分享一下自己的主要代码逻辑。 代码 首先在vue项目里面定义几个变量哈。 data() { return { tableData: [], // 假设这个是上边小div的列表,后台数据请求回来的吗,假设已经有数据了哈,里面

    2024年04月13日
    浏览(32)
  • Python: 实现鼠标点击tkinter窗口任意位置拖动

    近期在用python的tkinter库开发一个GUI,在开发接近尾声时候,同事发现一个问题:因GUI窗口较大,在他的笔记本上不能全部展示,而且只能通过点击顶部状态栏才能拖动,这样即使鼠标已经在屏幕最顶部,也无法看到窗口底部的控件。 一个解决方法就是:窗口及控件可以自适

    2024年02月11日
    浏览(43)
  • python 实现模拟鼠标点击器 可运行 附源码

    https://pan.baidu.com/s/1GIZPHQnRQqTD5h1Cy70MNQ?pwd=kxzz 一、前言: 对于一些比较肝的游戏,想要使用工具挂机; 对于一些购物时的抢购,使用工具来帮自己点击抢购,解放双手; 甚至当我们使用电脑时,有些情况下会强制跳出一些窗口,影响某些任务的进展,使用这个工具可以帮忙点

    2024年02月11日
    浏览(32)
  • C# Windows登录界面进行截图,控制鼠标键盘等操作实现(三)

    在Windows登录界面进行截图,目前尝试到的以下的截图方法可以截取到图,其它的方式要么卡住,要么截出来是黑屏的,直接上代码: 操作鼠标键盘等操作可以参考本人另一篇文章:使用C#制作可以录制自动化执行Windows操作脚本工具——类似于按键精灵 - log9527 - 博客园 (cnbl

    2024年02月12日
    浏览(25)
  • C# Windows登录界面进行截图,控制鼠标键盘等操作实现(二)

    上一篇:C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一) - log9527 - 博客园 (cnblogs.com) 我们了解了要实现在Windows登录界面进行截图等操作必须满足的条件,这一篇我们主要通过代码实现这些条件。 首先先建一个项目A 下面一些windows自带非托管dll的调用类。 外部调用

    2024年02月12日
    浏览(29)
  • 【Python】实现一个鼠标连击器,每秒点击1000次

    鼠标连击是指在很短的时间内多次点击鼠标按钮,通常是鼠标左键。当触发鼠标连击时,鼠标按钮会迅速按下和释放多次,产生连续的点击效果。 在这里鼠标连击的主要用途是: 帮助我们进行鼠标点击,疯狂连击; 例如在射击游戏中连续开火,如果点击就可以攻击怪物,那

    2024年02月12日
    浏览(24)
  • 精心打造:使用easyx做界面时,想要鼠标到一个按键时背景颜色发生改变

    我们在用easyx开发小的应用程序时(比如写表白程序doge),感觉很高级,但还要注意一些细节的东西以使我们的程序变得更完美,也让客户(或者你的女朋友)感觉到你的细心以及注意细节,不得不面临一些细节的难题。 这里要说的就是如何使鼠标与界面进行交互,包括以下

    2024年02月09日
    浏览(40)
  • python基于win32实现梦幻西游手游后台鼠标键盘

    获取窗口句柄         可以使用按键精灵的按键抓抓         

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包