У меня есть приложение PySimple GUI, которое использует cef python3, чтобы открыть окно браузера (и делает его дочерним окном pysimple gui .Canvas), чтобы отобразить интерактивную сборку для просмотра в 3D с помощью Babylon. js.
def createBrowser(windowInfo, settings, url):
global browser
browser = cef.CreateBrowserSync(windowInfo,
settings=settings,
url=url)
def WebUiThread():
win32gui.PumpMessages()
webUiThread=threading.Thread(target=WebUiThread)
webUiThread.daemon=True
webUiThread.start()
sys.excepthook = cef.ExceptHook
settings={"multi_threaded_message_loop": True}
cef.Initialize(settings)
windowInfo = cef.WindowInfo()
rect = [0, 0, 1000, 500]
windowHandle = window.FindElement("browserFrame").TKCanvas.winfo_id()
windowInfo.SetAsChild(windowHandle, rect)
cef.PostTask(cef.TID_UI, createBrowser, windowInfo, {}, "http://localhost:1234")
Все это работает, но как только я взаимодействую с окном браузера (например, использовал мышь для поворота 3d-объекта), ввод с клавиатуры в поля PySimple GUI становится невозможно (ввод мыши (например, изменение Spinners) все еще возможен): я не вижу курсор после того, как щелкнул (с помощью мыши) по полю.
Когда я щелкаю мышью где-то за пределами PySimple Окно GUI (а затем поле в окне PySimple GUI) снова работает с клавиатуры.