Получить HMENU меню tk в Windows ⇐ Python

Программы на Python
Anonymous
Получить HMENU меню tk в Windows

Сообщение Anonymous »

Я хотел бы получить HMENU меню tk для установки цвета его фона с помощью функции SetMenuInfo из Windows API (установка с помощью configure() влияет только на фон элементов меню, но не на фон самого меню), но я не могу найти способ получить HMENU меню, чтобы иметь возможность вызывать эту функцию, не показывая сначала меню, а затем получая его HMENU. winfo_id() возвращает не HMENU меню, а HWND невидимого окна, которое создается вместе с меню. Я также пытался поискать в Интернете и документации tk что-нибудь, что могло бы мне помочь, но ничего не нашел. Единственный способ найти HMENU, который я могу придумать, — это найти окно меню с помощью функции FindWindowW, а затем получить связанное с ним меню, отправив ему MN_GETHMENU при возникновении события . Примерно так:

Код: Выделить всё

MN_GETHMENU = 0x01E1

def set_menu_background_color(event):
hwnd = ctypes.windll.user32.FindWindowW("#32768", None)
hmenu = ctypes.windll.user32.SendMessageW(hwnd, MN_GETHMENU, 0, 0)

# Set the menu background color using SetMenuInfo()

menu.bind("", set_menu_background_color)
Но это приведет к небольшой задержке при установке цвета фона, а я не хочу, чтобы это произошло.
Действительно ли tk отображает HMENU меню? Если да, то как я могу это получить?

Подробнее здесь: https://stackoverflow.com/questions/798 ... on-windows

Вернуться в «Python»