利用python控制Qt程序的示例详解

 更新时间:2023年08月15日 10:22:26   作者:点墨  
这篇文章主要为大家详细介绍了如何利用python实现控制Qt程序,从而进行文本输入,按钮点击等组件控制,感兴趣的小伙伴可以跟随小编一起学习一下

使用python控制Qt程序,进行文本输入,按钮点击等组件控制

方法一

思路:使用pywin32获取窗口句柄,获取窗口位置,根据组件相对定位与窗口定位得到组件绝对定位,模拟鼠标按下,键盘输入即可

安装

pip install pywin32

源码

import pyautogui
import win32api
import win32gui
import pyperclip
def findWindow(title):
    windows = pyautogui.getWindowsWithTitle(title)
    if(len(windows) == 0):
        raise Exception("未找到窗口")
    return windows[0]
def PushButtonClick(hwd,relatePos):
    # 模拟按钮点击
    curPosi = win32api.GetCursorPos()
    hwdPosi = win32gui.GetWindowRect(hwd)
    win32api.SetCursorPos([hwdPosi[0]+relatePos[0],hwdPosi[1]+relatePos[1]])
    pyautogui.click()
    pyautogui.sleep(0.3)
    win32api.SetCursorPos(curPosi)
def LineEditInput(hwd,relatePos,value):
    # 模拟输入框输入
    curPosi = win32api.GetCursorPos()
    hwdPosi = win32gui.GetWindowRect(hwd)
    win32api.SetCursorPos([hwdPosi[0] + relatePos[0], hwdPosi[1] + relatePos[1]])
    pyautogui.click()
    pyperclip.copy(value)
    pyautogui.hotkey('ctrl','v')
    pyautogui.sleep(0.3)
    win32api.SetCursorPos(curPosi)
def main():
    hwd = win32gui.FindWindow(None,"Test")
    win32gui.SetForegroundWindow(hwd)
    LineEditInput(hwd, [140, 70], "测试")
    PushButtonClick(hwd,[300,70])
main()

效果图

方法二

思路:使用uiautomation进行组件的控制

uiautomation是yinkaisheng开发的基于微软UIAutomation API的一个python模块,支持自动化Win32,MFC,WPF,Modern UI(Metro UI), Qt, IE, Firefox等UI框架

安装

pip install uiautomation

源码

import uiautomation
def getAllControls(control,map):
    if len(control.GetChildren()) != 0:
        for child in control.GetChildren():
            getAllControls(child,map)
    if map.get(control.ControlTypeName) != None:
        map[control.ControlTypeName].append(control)
    else:
        map[control.ControlTypeName] = []
        map[control.ControlTypeName].append(control)
def main():
    control = uiautomation.WindowControl(searchDepth=1,Name="Test")
    controlList = {}
    getAllControls(control,controlList)
    edit = controlList.get("EditControl")[0]
    edit.SendKeys("测试")
    btn = controlList.get("ButtonControl")[3]
    btn.Click()
main()

效果图

到此这篇关于利用python控制Qt程序的示例详解的文章就介绍到这了,更多相关python控制Qt程序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现模块热加载的示例代码

    Python实现模块热加载的示例代码

    这篇文章主要为大家详细介绍了Python实现模块热加载的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2023-12-12
  • 用python 批量操作redis数据库

    用python 批量操作redis数据库

    这篇文章主要介绍了如何用python 批量操作redis数据库,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • 浅谈python中的变量默认是什么类型

    浅谈python中的变量默认是什么类型

    python中的变量默认是什么类型呢?还有很多新手不太明白。下面小编就为大家介绍一下python中的变量默认是什么类型。一起跟随小编过来看看吧
    2016-09-09
  • Django自定义权限及用户分组

    Django自定义权限及用户分组

    这篇文章主要为大家介绍了Django登录权限及分组模板使用权限,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 符合语言习惯的 Python 优雅编程技巧【推荐】

    符合语言习惯的 Python 优雅编程技巧【推荐】

    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净、整洁、一目了然。这篇文章给大家介绍Python 优雅编程技巧,感兴趣的朋友跟随小编一起看看吧
    2018-09-09
  • 利用Python制作PPT的完整步骤

    利用Python制作PPT的完整步骤

    这篇文章主要给大家介绍了关于如何利用Python制作PPT的相关资料,主要利用的是python-pptx库,我们可以通过写脚本,来定时执行更新ppt内容,需要的朋友可以参考下
    2021-09-09
  • Python抓取框架Scrapy爬虫入门:页面提取

    Python抓取框架Scrapy爬虫入门:页面提取

    Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改,下面这篇文章主要给大家介绍了关于Python抓取框架Scrapy爬虫入门之页面提取的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • Python使用googletrans报错的解决方法

    Python使用googletrans报错的解决方法

    这篇文章主要给大家介绍了关于Python使用googletrans报错的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 详解PyQt5中textBrowser显示print语句输出的简单方法

    详解PyQt5中textBrowser显示print语句输出的简单方法

    这篇文章主要介绍了详解PyQt5中textBrowser显示print语句输出的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python Pandas:DataFrame一列切分成多列、分隔符切分选字段方式

    Python Pandas:DataFrame一列切分成多列、分隔符切分选字段方式

    这篇文章主要介绍了Python Pandas:DataFrame一列切分成多列、分隔符切分选字段方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09

最新评论