Как я могу написать несколько строк в текстовое поле, используя python win32?

1

У меня есть программа на языке С, которая имеет компонент текстового поля. Я хочу, чтобы в этом текстовом поле был написан графический интерфейс 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)

Этот код будет писать текст в текстовое поле, но он не может добавлять текст в новую строку в текстовое поле. Можно ли читать текст, который в настоящее время находится в текстовом поле, или можно добавить текст в текстовое поле? Я новичок в использовании API окон. Кроме того, можно ли писать текст как другой цвет? Класс текстового поля - RICHEDIT20A.

Теги:
winapi
textbox

1 ответ

1
Лучший ответ

Добавление текста

  1. Отправьте сообщение EM_SETSEL чтобы переместить выделение в конец элемента управления редактирования. Используйте WM_GETTEXTLENGTH чтобы узнать, сколько символов находится в элементе управления редактированием.
  2. Отправьте сообщение EM_REPLACESEL чтобы заменить выбор. Если точка выбора находится в конце элемента управления, то замена такая же, как и добавление.

Не пытайтесь использовать WM_GETTEXT & WM_SETTEXT так как он быстро становится неэффективным, не говоря уже о том, что форматирование не сохраняется.

Форматирование текста

Используйте EM_SETCHARFORMAT для форматирования текста. Более подробная информация в MSDN.

  • 0
    Добавление текста работало отлично!
  • 0
    Я до сих пор не могу найти способ изменить цвет текста, чтобы каждая добавленная строка была новым цветом в python. Я не смог найти способ вызвать EM_SETCHARFORMAT с использованием Python.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню