如何基于Win32 Python代码多次更新windowText?支持文件读取
没问题!要实现窗口文本的多次更新其实很简单,核心就是循环遍历你要显示的内容,每次更新后加个延时让你能看到变化。我给你分两种常用场景来写修改方案,你可以直接套用:
场景一:用预设的文本序列依次更新
如果你的更新内容是固定的,比如依次显示"something new 2"、"something new 3"这类,直接把这些内容放进一个列表,循环调用更新函数就行。这里我基于你现有的代码结构做了修改:
import win32gui import win32api import win32con import time # 导入time模块实现延时,让你能看到每一次的更新效果 def update_window_text(window_title, new_text): # 找到目标窗口的句柄 hwnd = win32gui.FindWindow(None, window_title) if hwnd: # 发送消息更新窗口文本 win32api.SendMessage(hwnd, win32con.WM_SETTEXT, 0, new_text) else: print(f"未找到标题为「{window_title}」的窗口,请检查标题是否正确!") # 把你要依次显示的文本放进这个列表里 text_list = [ "Hello send by Python via Win32!", "Something new", "something new 2", "something new 3", "更新完成啦!" ] # 替换成你实际要修改的窗口标题 target_window = "你的目标窗口标题" # 循环遍历文本列表,逐个更新 for text in text_list: update_window_text(target_window, text) time.sleep(2) # 每次更新后等待2秒,你可以根据需求调整这个时间(比如1秒或3秒)
场景二:从文本文件逐行读取内容更新
如果你的更新内容存在文本文件里(每行一个内容),可以用文件读取的方式来实现,这样不用每次改代码,直接修改文本文件就行:
import win32gui import win32api import win32con import time def update_window_text(window_title, new_text): hwnd = win32gui.FindWindow(None, window_title) if hwnd: win32api.SendMessage(hwnd, win32con.WM_SETTEXT, 0, new_text) else: print(f"未找到标题为「{window_title}」的窗口,请检查标题是否正确!") # 替换成你实际要修改的窗口标题 target_window = "你的目标窗口标题" # 替换成你的文本文件路径(比如"update_content.txt") text_file_path = "你的文本文件路径.txt" try: # 打开文本文件,逐行读取内容(自动跳过空行) with open(text_file_path, 'r', encoding='utf-8') as file: content_lines = [line.strip() for line in file if line.strip()] # 循环更新窗口文本 for line in content_lines: update_window_text(target_window, line) time.sleep(2) # 同样可以调整等待时间 except FileNotFoundError: print(f"出错啦!找不到文件「{text_file_path}」,请检查路径是否正确。") except Exception as e: print(f"读取文件时发生错误:{str(e)}")
几个需要注意的小细节:
- 一定要把代码里的
"你的目标窗口标题"替换成你实际要修改的窗口的准确标题,不然会找不到窗口。 time.sleep()的参数是秒数,如果你觉得等待太久可以改小,比如time.sleep(1)就是等待1秒。- 如果你的文本文件是用GBK编码保存的,记得把
encoding='utf-8'改成encoding='gbk',避免出现乱码。
内容的提问来源于stack exchange,提问作者Steed
相关产品推荐
相关产品推荐

