如何以编程方式从 wx.html2.WebView wxpython 对象填充文本框?

How to programmatically fill a textBox from wx.html2.WebView wxpython object?

[问题] 我想以编程方式在 wx.html2.WebView wxpython 对象中编写一些文本。

[代码]

import wx
import wx.html2    
app = wx.App(False)
frame = wx.Frame(None, -1, 'test')
browser = wx.html2.WebView.New(frame)
browser.LoadURL("https://www.python.org/")

browser.RunScript("document.getElementById('id-search-field').value = test")          

frame.Show()
app.MainLoop()

[当前输出]: textBox

内没有任何内容

[期望的输出]: 文本应写在文本框内

您需要注册一个事件处理程序,以便在页面加载后调用 browser.RunScript。否则,RunScript 将无效,因为调用该函数时页面尚未准备好。

除此之外,test 应该被引用以表示 javascript 中的字符串:

import wx
import wx.html2

app = wx.App(False)
frame = wx.Frame(None, -1, 'test')
browser = wx.html2.WebView.New(frame)
def loaded(e):
    if e.GetURL() == 'about:blank':  # Skip if it's a blank page.
        return
    browser.RunScript("document.getElementById('id-search-field').value = 'test'")
browser.Bind(wx.html2.EVT_WEBVIEW_LOADED, loaded)
browser.LoadURL("https://www.python.org/")
frame.Show()
app.MainLoop()