无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件
Unable to open a local HTML file generated in folium using wxPython
我目前正在尝试将 GPS 坐标绘制为地图上的标记,并在 wxPython 中显示结果。
我已经使用 folium 绘制坐标标记并生成一个 HTML 文件:
import folium
fmap = folium.Map([-43.5321,172.6362], zoom_start=12)
folium.Marker([-43.5321,172.6362], popup='Marker1').add_to(fmap)
fmap.save('maparea.html')
我可以在 Firefox 中打开这个 HTML 文件,没有任何问题。
我需要在 wxPython 中创建一个程序来显示这个 HTML 文件,我尝试实现以下代码:
import wx
import wx.html2
class MyBrowser(wx.Dialog):
def __init__(self, *args, **kwds):
wx.Dialog.__init__(self, *args, **kwds)
sizer = wx.BoxSizer(wx.VERTICAL)
self.browser = wx.html2.WebView.New(self)
self.browser.LoadURL("maparea.html")
sizer.Add(self.browser, 1, wx.EXPAND, 10)
self.SetSizer(sizer)
self.SetSize((1280, 720))
if __name__ == '__main__':
app = wx.App()
dialog = MyBrowser(None)
dialog.Show()
app.MainLoop()
但是,我得到的只是一个空白页。如果我将代码中的 URL 更改为网站(例如 http://www.google.com),上面的代码可以正常工作。
为什么我无法在 wxPython 中查看 HTML 文件?有没有其他方法可以在wxPython中加载和显示一个HTML文件?我更愿意使用 HTML 文件而不是在 wxPython 中显示屏幕截图,因为我想保留在地图中平移、缩放和单击标记的能力。
(我是 运行 Python 3.6.8 和 wxPython 4.0.3 gtk3 (phoenix) wxWidgets 3.0.5 on Ubuntu 18.04.)
我认为您需要先将文件路径转换为 URL(即 file://path/to/file.html
),您可以为此使用 wxFileSystem::FileNameToURL()
函数。
见https://docs.wxwidgets.org/3.0/classwx_file_system.html#a616610cafdb14b841940d5e6b08a9615
除了文件路径需要是一个 file:///url 似乎还有一些无效字符的问题。
在不要求 folium.Marker
的情况下尝试一下,您应该会看到基督城的地图。
编辑:
folium 在 Marker
中使用了单引号的错误字符 '
它在 var 声明中使用了 ` 而不是。
即而不是
var html_280344edc4004eb6b0012ec2e57f9b85 = $('<div id="html_280344edc4004eb6b0012ec2e57f9b85" style="width: 100.0%; height: 100.0%;">Marker1</div>')[0];
它提供:
var html_280344edc4004eb6b0012ec2e57f9b85 = $(`<div id="html_280344edc4004eb6b0012ec2e57f9b85" style="width: 100.0%; height: 100.0%;">Marker1</div>`)[0];
您可以替换它们或使用 webbrowser
而不是 wx.html2
我目前正在尝试将 GPS 坐标绘制为地图上的标记,并在 wxPython 中显示结果。
我已经使用 folium 绘制坐标标记并生成一个 HTML 文件:
import folium
fmap = folium.Map([-43.5321,172.6362], zoom_start=12)
folium.Marker([-43.5321,172.6362], popup='Marker1').add_to(fmap)
fmap.save('maparea.html')
我可以在 Firefox 中打开这个 HTML 文件,没有任何问题。
我需要在 wxPython 中创建一个程序来显示这个 HTML 文件,我尝试实现以下代码:
import wx
import wx.html2
class MyBrowser(wx.Dialog):
def __init__(self, *args, **kwds):
wx.Dialog.__init__(self, *args, **kwds)
sizer = wx.BoxSizer(wx.VERTICAL)
self.browser = wx.html2.WebView.New(self)
self.browser.LoadURL("maparea.html")
sizer.Add(self.browser, 1, wx.EXPAND, 10)
self.SetSizer(sizer)
self.SetSize((1280, 720))
if __name__ == '__main__':
app = wx.App()
dialog = MyBrowser(None)
dialog.Show()
app.MainLoop()
但是,我得到的只是一个空白页。如果我将代码中的 URL 更改为网站(例如 http://www.google.com),上面的代码可以正常工作。
为什么我无法在 wxPython 中查看 HTML 文件?有没有其他方法可以在wxPython中加载和显示一个HTML文件?我更愿意使用 HTML 文件而不是在 wxPython 中显示屏幕截图,因为我想保留在地图中平移、缩放和单击标记的能力。
(我是 运行 Python 3.6.8 和 wxPython 4.0.3 gtk3 (phoenix) wxWidgets 3.0.5 on Ubuntu 18.04.)
我认为您需要先将文件路径转换为 URL(即 file://path/to/file.html
),您可以为此使用 wxFileSystem::FileNameToURL()
函数。
见https://docs.wxwidgets.org/3.0/classwx_file_system.html#a616610cafdb14b841940d5e6b08a9615
除了文件路径需要是一个 file:///url 似乎还有一些无效字符的问题。
在不要求 folium.Marker
的情况下尝试一下,您应该会看到基督城的地图。
编辑:
folium 在 Marker
中使用了单引号的错误字符 '
它在 var 声明中使用了 ` 而不是。
即而不是
var html_280344edc4004eb6b0012ec2e57f9b85 = $('<div id="html_280344edc4004eb6b0012ec2e57f9b85" style="width: 100.0%; height: 100.0%;">Marker1</div>')[0];
它提供:
var html_280344edc4004eb6b0012ec2e57f9b85 = $(`<div id="html_280344edc4004eb6b0012ec2e57f9b85" style="width: 100.0%; height: 100.0%;">Marker1</div>`)[0];
您可以替换它们或使用 webbrowser
而不是 wx.html2