如何使用python win32向文本框写入多行?
我有一个C语言写的程序,里面有一个文本框组件。我想让一个Python的图形界面(GUI)往这个文本框里写字。目前,我可以用以下代码往文本框的HWND
写入文本:
def winFunc(hwnd, lparam):
s = win32gui.GetWindowText(hwnd)
if s == "":
win32gui.SendMessage(hwnd, win32con.WM_SETTEXT, 0, lparam)
hwnd = win32gui.FindWindow("Graph Program", None)
win32gui.EnumChildWindows(hwnd, winFunc, text)
这段代码可以往文本框里写字,但不能在文本框里换行追加文本。请问有没有办法读取文本框里当前的文本,或者能不能往文本框里添加文本?我对使用Windows API还很陌生。另外,能不能把文本写成不同的颜色?这个文本框的类型是RICHEDIT20A
。
1 个回答
1
添加文本
- 发送一个
EM_SETSEL
消息,这样可以把光标移动到富文本编辑框的最后面。你可以用WM_GETTEXTLENGTH
来查看编辑框里有多少个字符。 - 发送一个
EM_REPLACESEL
消息来替换选中的文本。如果光标在编辑框的最后,那么替换文本就等于添加文本。
不要尝试使用 WM_GETTEXT
和 WM_SETTEXT
,因为这样会变得很低效,而且格式也不会被保留。
格式化文本
使用 EM_SETCHARFORMAT
来格式化文本。更多详细信息可以查看 MSDN。