WxPython Web浏览器集Ti

2024-05-26 19:53:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用WxPython在python中创建了一个web浏览器。我能让一切正常运转,前进/后退,重新装载等等。我唯一的问题是我希望能够将程序顶部的标题设置为网页的标题。我知道如何用self.SetTitle(title)来设置标题,我也知道从我做的一些研究中,你可以使用self.browser.GetCurrentTitle()来获得页面的平铺。使用它的唯一问题是,当用户单击一个新链接时,它不会刷新自己。我假设在加载一个新页面时,我可以捕捉到一些函数或东西,并告诉python执行以下操作:

def OnLoad(self, event):
     self.webtitle = self.browser.GetCurrentTitle()
     self.browser.SetTitle(self.webtitle)

或者是一些类似的东西,我只是不确定我可以在哪里或者如何连接或者“捕捉”那个函数。我已经阅读了wx.html2.WebView的文档,但我不知道如何做到这一点,我也浏览了这个网站以及一些邮件列表,但我似乎找不到任何可以解释如何做到这一点的东西。在

下面是运行我的浏览器的主要代码(显然我缩短了它)。在

^{pr2}$

总结一下我要问的是如何设置wx.框架中的网页的当前标题wx.html2.WebView并在每次单击新链接时更改名称?在


Tags: 函数selfbrowserweb网页标题链接wxpython
3条回答

我从迈克的话中发现,利用一个事件来捕捉它是可行的。因此,我没有使用EVT_WEBVIEW_TITLE_CHANGED,而是使用了EVT_WEBVIEW_LOADED,而是将事件绑定到我的函数来处理标题的更改。看起来像这样:

#Binding the function the event to the function. 
self.Bind(wx.html2.EVT_WEBVIEW_LOADED, self.OnPageLoad, self.browser)

#Function binding to the page loading 
def OnPageLoad(self, event):
    self.WebTitle = self.browser.GetCurrentTitle()
    self.SetTitle(self.WebTitle)

您需要的webview事件将被列出here

我将捕捉EVT_WEBVIEW_LOADED事件并更新事件处理程序中的标题。我相信你可以这样做:

def onLoaded(self, event):
    title = self.browser.GetCurrentTitle()
    self.SetTitle(title)

更好的方法是捕捉EVT_WEBVIEW_TITLE_CHANGED,因为它实际上可以检测到页面标题的变化。在

相关问题 更多 >

    热门问题