python - 如何使用python返回if in的所有输出
问题描述
我正在尝试根据我已经完成的名称返回所有 Windows 位置的输出。
但是由于某种原因,我无法将结果返回为 1 行、元组列表等。我将输出以单独的行返回(然后我不能将其作为一个整体使用)。
代码:
import win32gui as win
win_name = "SomeApplication"
def get_all_windows_locs(hwnd, lparam):
if win_name in win.GetWindowText(hwnd):
windows_locs = win.GetWindowRect(hwnd)
print(windows_locs)
win.EnumWindows(get_all_windows_locs, None)
输出:
(2, 2, 1162, 803)
(768, 1112, 1928, 1913)
(1421, 635, 2581, 1436)
我真的很想把它作为一个实际的元组列表返回。类似这样的东西:
(2, 2, 1162, 803), (768, 1112, 1928, 1913), (1421, 635, 2581, 1436)
我希望它在 1 行中返回的原因是,如果我在函数外部调用它,它只会返回输出的最后一行。
解决方案
您可以通过包含一个全局(函数外部)变量来收集所有条目。在这里,一个列表all_windows_locs
:
import win32gui as win
all_windows_locs = []
win_name = "SomeApplication"
def get_all_windows_locs(hwnd, lparam):
if win_name in win.GetWindowText(hwnd):
windows_locs = win.GetWindowRect(hwnd)
all_windows_locs.append(windows_locs)
win.EnumWindows(get_all_windows_locs, None)
print(all_windows_locs)
为了避免变量污染全局命名空间,一个更好的解决方案可以在包装函数中捕获列表:
def all_windows_locs(win_name):
windows_locs_list = []
def test_window(hwnd, lparam):
if win_name in win.GetWindowText(hwnd):
windows_locs = win.GetWindowRect(hwnd)
windows_locs_list.append(windows_locs)
win.EnumWindows(test_window, None)
return windows_locs_list
print(all_windows_locs("SomeApplication"))
推荐阅读
- windows-subsystem-for-linux - 如何获得 man 命令?
- .net - 如何在没有任何外键关系的情况下包含表数据并在对象之间推送
- sql - 查询以使用 sql server 从字符串中间删除尾随或前导空格
- sql - 索引视图与表
- javascript - 当 readyState 为 1 时,Mongoose 查询不运行
- html - 带有视频的响应式 DIV
- mysql - MySQL 8.0 中的存储过程中出现错误 1064
- sql - 左外连接返回结果被排除
- arrays - 将 userDefaults 导入为 [Int],然后使用 forloop 进行迭代并切换?
- c# - 在泛型方法中将对象打包成基本类型