2016-03-30 1 views
0

Я построил webView как wv=wx.html2.WebView.New(myFrame), и я использовал wv.setPage(content, ""), чтобы поместить строку html-текста, она хорошо показывает и имеет полосу прокрутки на стороне, так как контент больше, чем может показать окно ,wxpython, чтобы прокрутить webView

Теперь я хочу управлять webView и прокручивать его программно (например, пусть он прокручивает строку каждые 10 секунд). Я попытался использовать wv.ScrollLines(1) или wv.ScrollWindow(1, 1), но у них не было ответа. Также wv.GetScrollRange(0), wv.GetScrollRange(0) дал мне 0, даже wv.HasScrollbar(wx.VERTICAL) ответил False. И я попытался найти документ webView и не нашел никаких других атрибутов или функций, связанных с прокруткой.

Не могли бы вы мне помочь по этому вопросу? Большое спасибо!!

ответ

0

Я думаю, HasScrollbar возвращает False, потому что, как wx-окно, у него нет полосы прокрутки; У документа есть полоса прокрутки. Что касается прокрутки, можно выбрать два варианта:

1) Используйте метод Find. Это приведет к поиску текста, и если найден, прокрутите его до этой позиции. Например, можно использовать wx.Timer и использование Find прокрутки к следующей позиции:

import wx 
import wx.html2 

class MyFrame(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Scroll", size=(500,500)) 
     self.timer = wx.Timer(self) 
     self.Bind(wx.EVT_TIMER, self._on_timer, self.timer) 
     self.wv=wx.html2.WebView.New(self) 
     self.wv.SetPage(content, "") 
     self.timer.Start(100) # adjust the timer interval 
    def _on_timer(self, event): 
     self.wv.Find("Some string in the text") 

app = wx.App() 
frame = MyFrame() 
frame.Show() 
app.MainLoop() 

2) Использование JavaScript для выполнения свитки в документе, см scrollTo.

+0

Большое спасибо за помощь! Я думаю, я могу использовать 'self.wv.RunScript ('scrollTo (% d,% d)'% (xPos, yPos))'. – Jack