当前位置 博文首页 > haimianjie2012的专栏:python控制paraview GUI

    haimianjie2012的专栏:python控制paraview GUI

    作者:[db:作者] 时间:2021-09-01 10:31

    1.python启动exe 软件:paraview.exe和pvserver.exe

    1.1python编译环境搭建

    下载pycharm

    Download PyCharm: Python IDE for Professional Developers by JetBrains

    1.2 win32api启动paraview.exe和 pvserver.exe

    import win32api

    在使用import win32api时,报错:No module named win32api

    想要使用win32api需要先安装win32api

    Releases · mhammond/pywin32 · GitHub

    下载后,双击pywin32-221.win-amd64-py3.8.exe,会识别Python的安装路径,一路Next安装即可

    win32api模块中的ShellExecute()函数。其函数如下所示。
    ShellExecute(hwnd, op , file , params , dir , bShow )
    其参数含义如下所示。
    hwnd:父窗口的句柄,如果没有父窗口,则为0。
    op:要进行的操作,为“open”、“print”或者为空。
    file:要运行的程序,或者打开的脚本。
    params:要向程序传递的参数,如果打开的为文件,则为空。
    dir:程序初始化的目录。
    bShow:是否显示窗口。

        path = "C:\\Program Files\\ParaView 5.9.0-Windows-Python3.8-msvc2017-64bit\\bin\\paraview.exe"
        win32api.ShellExecute(0, 'open', path, '', '', 1)

    ?打开paraview.exe,让paraview在前台运行。

        pvserver = "C:\\Program Files\\ParaView 5.9.0-Windows-Python3.8-msvc2017-64bit\\bin\\pvserver.exe"
        win32api.ShellExecute(0, 'open', pvserver, '--multi-clients', '', 1)

    打开pvserver.exe,如下图所示:

    ?1.3参考文献:

    Python调用Windows外部程序 - 帅胡 - 博客园 (cnblogs.com)

    从Python IDLE控制Paraview GUI (codingdict.com)

    2.paraview GUI连接到服务器pvserver进程

    2.1默认服务器

    当ParaView启动时,它会按以下顺序查找多个服务器定义文件:

    在基于Unix的系统和Mac OS X上

    • default_servers.pvsc?在ParaView可执行目录中(您可以执行ls-l/proc/<ParaView PID here>/exe来标识可执行目录)
    • /usr/share/ParaView/servers.pvsc
    • $HOME/.config/ParaView/servers.pvsc

    在windows系统上

    • default_servers.pvsc?在ParaView可执行目录中
    • %COMMON_APPDATA%\ParaView\servers.pvsc
    • %APPDATA%\ParaView\servers.pvsc

    如果在多个文件中定义了同一服务器,则最后读取的定义将覆盖以前的任何定义。

    2.2服务器配置用例

    这个用例中,我们为一个简单的服务器连接设置配置,该配置连接到pvserver进程,pvserver进程运行在名为”amber1“的节点上,进程端口 号为20234。pvserver将由用户手动启动。

      <Server name="case1" resource="cs://amber1:20234">
        <ManualStartup />
      </Server>

    ?resource属性标识连接的类型、主机名和端口。

    这里连接的类型为cs,cs表示客户端服务器。

    主机名:amber1

    端口号:20234,如果没有指定端口默认端口号为11111.

    因为用户手动启动pvserver进程,因此我们使用<ManualStartup/>标记。

    2.3paraview GUI客户端连接到服务器

    File->Connect
    AddServer -> Choose a name -> Configure -> Save
    Connect

    具体怎么配置连接服务器参见《Starting the server - KitwarePublic (paraview.org)》

    2.4参考文献:

    Starting the server - KitwarePublic (paraview.org)

    从Python IDLE控制Paraview GUI (codingdict.com)

    https://hpc.llnl.gov/software/visualization-software/paraview/running-paraview-client-server-mode

    3.python自动化控制paraview GUI连接到pvserver进程

    3.1pywinauto安装

    这里介绍windows系统下安装pywinauto

    github 地址:GitHub - pywinauto/pywinauto: Windows GUI Automation with Python (based on text properties)

    官方文档:

    What is pywinauto — pywinauto 0.6.8 documentation

    Pywinauto:PC端自动化工具

    https://github.com/pywinauto/pywinauto/releases

    下载pywinauto

    打开cmd.exe命令行提示符,安装pywinauto

    测试pywinauto是否安装成功:

    打开的命令行提示符输入python指令后,然后输入以下指令,不报错则安装成功:

      from pywinauto.application import Application
      app = Application(backend="uia").start("notepad.exe")
    

    pywinauto示例代码:

    dlg = app['TRACE? 3D Plus']
    dlg.child_window(auto_id='Airflows').invoke() # or .click() that just calls an action
    # or
    dlg.child_window(auto_id='Airflows').click_input() # true click with moving cursor

    Can i select toolbar option using pywinauto · Issue #696 · pywinauto/pywinauto (github.com)

    python 3.x - to iterate the sub menu item using pywinauto - Stack Overflow?

    paraview无法定位paraview软件的menu、toolbar、button等元素,而且2019年之后就没有再维护,文档手册也不是特别详细,所以经过几天的努力之后,选择autoit实现paraview软件自动化控制。

    详情见博文:

    参考文献:

    (23条消息) pywinauto教程_Emilymcwu的博客-CSDN博客_pywinauto

    cs