Я создаю приложение в Windows, используя wxpython, и я хочу опубликовать некоторые данные для создания представления html, данные pubsub могут быть напечатаны в окне cmd, но когда я устанавливаю страницу в веб-просмотре, это не работает, могу ли я использовать веб-просмотр сделать этот эффект? ps: если веб-просмотр может это сделать, и если щелкнуть ссылку, может ли он открыть новый кадр для анализа некоторых данных с помощью этой ссылки?
ну, я не описываю свою проблему четко, может быть, я могу четко описать ее по коду:
в wxpython2.8 мой код:
import time
import wx
import re
from threading import Thread
from wx.lib.pubsub import Publisher
import urllib2
from win32gui import *
import win32gui
from wx.lib.wordwrap import wordwrap
import wx.html2 as webview
import lxml.html
import lxml.html.soupparser as soupparser
class ListenerThread(Thread):
def __init__(self):
Thread.__init__(self)
self.start()
def findtitle(self):
........
........
def find_window(self):
title = self.findtitle()
dlg=win32gui.FindWindow(None,title)
return dlg
def run(self):
tempWindowName=win32gui.GetWindowText (self.find_window())
while True:
........
........
Publisher().sendMessage("update", info)
time.sleep(0.1)
class InfoFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="title",size=(430, 700))
panel = InfoPanel(self)
style= self.GetWindowStyle()
self.SetWindowStyle(style|wx.STAY_ON_TOP)
class InfoPanel(wx.Panel):
def __init__(self, parent):
.......
self.browser= wx.html.HtmlWindow(self)
Publisher().subscribe(self.updateDisplay)
......
def updateDisplay(self, msg):
t = msg.data
self.browser.SetPage("%s"%t)
class MyApp(wx.App):
def OnInit(self):
self.infoFrame=InfoFrame()
self.SetTopWindow(self.infoFrame)
self.infoFrame.Show(True)
return True
def OnExit(self):
wx.Exit()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = MyApp(False)
app.MainLoop()
структура информации, как
<a href=....>text1</a><br><a href=......>text2</a><br>.....
это анализ с другого веб-сайта с помощью lxml, и этот код работает, но я думаю, что это представление уродливо, я хочу добавить стиль CSS, и я думаю, что, возможно, я могу открыть новый фрейм, чтобы показать некоторый контент, который также анализируется по ссылке, когда я нажмите на ссылку.
Итак, я ищу в Google, а затем обнаружил, что, возможно, веб-просмотр в wxpython2.9 может это сделать, а затем я меняю свой код:
import time
import wx
import re
from threading import Thread
from wx.lib.pubsub import setupv1
from wx.lib.pubsub import pub
import urllib2
from win32gui import *
import win32gui
from wx.lib.wordwrap import wordwrap
import wx.html2 as webview
import lxml.html
import lxml.html.soupparser as soupparser
publisher = pub.Publisher()
class ListenerThread(Thread):
def __init__(self):
"""Init Worker Thread Class."""
Thread.__init__(self)
self.start()
def findtitle(self):
........
........
def find_window(self):
title = self.findtitle()
dlg=win32gui.FindWindow(None,title)
return dlg
def run(self):
tempWindowName=win32gui.GetWindowText (self.find_window())
while True:
........
........
Publisher().sendMessage("update", info)
time.sleep(0.1)
class InfoPanel(wx.Panel):
def __init__(self, parent):
.......
self.browser= webview.WebView.New(self)
publisher.subscribe(self.updateDisplay)
......
def updateDisplay(self, msg):
t = msg.data
page = "<html><body>"+"%s"%t+"</body></html>"
self.browser.SetPage("%s"%t)
class MyApp(wx.App):
def OnInit(self):
self.infoFrame=InfoFrame()
self.SetTopWindow(self.infoFrame)
self.infoFrame.Show(True)
return True
def OnExit(self):
wx.Exit()
#----------------------------------------------------------------------
if __name__ == "__main__":
app = MyApp(False)
app.MainLoop()
но он показывает ошибку:
NotimpementedError: нет соответствующей функции для перегруженного "WebView_SetPage"
Спасибо за ваше время и любые советы ценятся.