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

时间:2016-01-20 13:44:13

标签: python wxpython wxwidgets

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

[CODE]

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

中没有任何内容被填充

[希望输出]: 文本应写在textBox

1 个答案:

答案 0 :(得分:3)

您需要注册一个事件处理程序,以便在页面加载后调用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()