在没有全局变量的其他包中的非返回函数内访问变量

时间:2017-02-11 15:54:04

标签: python

是否有方法可以访问函数结果,我已经在其上应用了另一个函数。例如:

win32gui.EnumWindows(a_function, extra)

EnumWindows将迭代所有顶级窗口并将hwnd传递给a_function。

如果我设置一些条件来grep我想要的hwnd,我们需要产生hwnd id

是否有方法可以从a_function访问某些返回/产量。而不是函数EnumWindows将grep返回。

1 个答案:

答案 0 :(得分:1)

EnumWindows不返回任何内容。通常从中检索结果的方式通常是使回调函数将数据存储在全局中。在this question中有一个例子。

另一种方法是将一个可变容器对象(例如list)作为extra参数传递,然后在每次调用时将其作为第二个参数传递给回调(第一个)参数是一个窗口句柄。)

这是一个使用第二种技术的示例,它将本地列表对象传递给回调函数修改的EnumWindows(),但前提是该窗口可见。

import win32gui

def my_callback(hwnd, list_object):
    if win32gui.IsWindowVisible(hwnd):
        title = win32gui.GetWindowText(hwnd)
        if title:
            list_object.append(title)

def print_windows_titles():
    my_list = []  # local variable

    win32gui.EnumWindows(my_callback, my_list)  # populates my_list

    # print result of calling EnumWindows
    print('Titles of Visible Windows:')
    for window_title in my_list:
        print('  {!r}'.format(window_title))

print_windows_titles()