я обнаружил очень странную проблему об использовании сценариев питона под Python Windows, командной строки, чтобы воспроизвести эту проблему, вы можете просто сделать эти шаги:Windows + Python: Почему первое открытое окно не отображается активно?
- запуска команды Python строка, (это, как правило, в хит Start Меню-> Python 2,7 мкм> Python (командная строка).
типа следующий текст и нажмите клавишу ввода.
import ctypes
введите следующий текст, и нажмите клавишу ввода.
ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)
- Откроется окно сообщения, но окно этого окна сообщений не активировано.
- Используйте мышь, чтобы нажать на иконку в окне сообщения в панели задач, чтобы активировать окно сообщения
- закрыть окно сообщения
типа текст снова в Python промпт
ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)
- Теперь окно сообщения отображается активированным (ожидаемое поведение)
Итак, мой вопрос в том, почему первое окно сообщения (окна) не отображается активно? Первоначально я нахожу эту проблему, когда я запускаю Python довольно принтер в командной строке GDB, потому что я хочу использовать довольно красивый принтер python для визуализации данных, например, это GDB cv::Mat python object issue when debugging a c++ program. Мне нужно показать окно OpenCV Image сразу после ввода команды plot ,
Но позже я обнаружил, что это проблема, связанная с самим Python.
У меня нет времени, чтобы выяснить, как это сделать, но вы проверили [ссылку] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505 (v = vs.85) .aspx) для MessageBoxA? В нем говорится, что есть опция «MB_SETFOREGROUND», которая явно устанавливает диалоговое окно для активного. Если это не модально, вы можете сделать это непосредственно с помощью 'ctypes.windll.user32.SetForegroundWindow (hwnd)'. Я думаю, что 'MB_SETFOREGROUND' делает именно это внутренне. [Эта страница] (http://python.net/crew/theller/ctypes/reference.html) может помочь выяснить, как установить этот параметр. – KobeJohn