【问题标题】:Pywinauto: How to set focus on a window from a dataframePywinauto:如何将焦点设置在数据框中的窗口上
【发布时间】:2021-12-24 02:03:17
【问题描述】:

我正在尝试自动化一些 Windows 任务,我得到了所有打开的窗口的数据框,然后我添加了一些列以便在继续自动化之前进行一些验证。

然后我想循环遍历数据框中WebBrowser 列中的所有数据,以便设置焦点并将此窗口激活到前面,然后调整大小。

但是当我尝试以下命令时出现错误app.set_focus():AttributeError: 'list' object has no attribute 'set_focus'

注意:我还不知道如何调整大小,我在前一步停下来,但如果有人能给我提示,我将不胜感激。

我的代码:

from pywinauto import Desktop
import pandas as pd

windows = Desktop(backend="uia").windows()
window = [w.window_text() for w in windows]

# Create a dataframe in order to store the windows needed
df_windows = pd.DataFrame(window, columns =['WebBrowser'])
# Filter dataframe only to show all windows from Brave web browser
df_windows = df_windows.loc[df_windows['WebBrowser'].str.contains("Brave:", case=False)]
# Add column profile from Brave
df_windows['Profile'] = df_windows['WebBrowser'].str.split(':').str[1].str.strip()
# Add column window open from Brave
df_windows['Window'] = df_windows['WebBrowser'].str.split(':').str[0].str.strip()
# Add column about the website open from Brave
df_windows['Website'] = df_windows['Window'].str.replace(" - Brave", "").str.strip()
# Filter dataframe only to show all bombcrypto game window
df_windows = df_windows.loc[df_windows['Website'] == 'GuilhermeMatheus']

print(df_windows)

for x in df_windows['WebBrowser']:
    print(x)
    app = Desktop(backend="uia").windows(title=x)
    app.set_focus()
    # resize window after

【问题讨论】:

    标签: python pywinauto


    【解决方案1】:

    运行您的代码后,我发现app = Desktop(backend="uia").windows(title=x) 中的应用是一个列表。所以需要获取列表中的app元素,即app[0]。这是固定的代码,它会正常运行。

    for x in df_windows['WebBrowser']:
        #get first element in list
        app = Desktop(backend="uia").windows(title=x)[0]
        app.set_focus()
    

    如果你想调整窗口大小,你可以阅读文章here

    【讨论】:

    • 就是这样!非常感谢。
    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多