从 wxPython 启动外部应用程序
Launch external application from wxPython
是否可以从 wxPython 应用程序中启动另一个应用程序?例如,如果我有一个 pdf 文件列表,用户可以双击其中的一个来让用户注册 pdf 文件应用程序以打开并显示内容吗?
我建议使用 Python 的 os
模块可以直接调用 os.startfile(path)
。您也可以为此使用 subprocess
模块。
关于文件选择器的第二个问题,请参阅可能需要 wx.FileDialog
,您可以在此处阅读更多信息:
wx.LaunchDefaultBrowser(url, flags=0)
是您正在寻找的功能。
即
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, id=-1)
sizer = wx.BoxSizer(wx.VERTICAL)
btn = wx.Button(self, wx.NewId(), "Open PDF File",size=(20,50))
self.Bind(wx.EVT_BUTTON, self.OnOpenButton, btn)
sizer.Add(btn, 0, flag=wx.EXPAND|wx.ALL)
self.SetSizer(sizer)
def OnOpenButton(self, event):
dlg = wx.FileDialog(self, wildcard="*.pdf")
if dlg.ShowModal() == wx.ID_OK:
url = dlg.GetPath()
dlg.Destroy()
try:
if not url:
return
except:
return
wx.LaunchDefaultBrowser(url)
app = wx.App()
frame = wx.Frame(None, -1, "PDF Default Browser", size = (640, 480))
MyPanel(frame)
frame.Show(True)
app.MainLoop()
是否可以从 wxPython 应用程序中启动另一个应用程序?例如,如果我有一个 pdf 文件列表,用户可以双击其中的一个来让用户注册 pdf 文件应用程序以打开并显示内容吗?
我建议使用 Python 的 os
模块可以直接调用 os.startfile(path)
。您也可以为此使用 subprocess
模块。
关于文件选择器的第二个问题,请参阅可能需要 wx.FileDialog
,您可以在此处阅读更多信息:
wx.LaunchDefaultBrowser(url, flags=0)
是您正在寻找的功能。
即
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, id=-1)
sizer = wx.BoxSizer(wx.VERTICAL)
btn = wx.Button(self, wx.NewId(), "Open PDF File",size=(20,50))
self.Bind(wx.EVT_BUTTON, self.OnOpenButton, btn)
sizer.Add(btn, 0, flag=wx.EXPAND|wx.ALL)
self.SetSizer(sizer)
def OnOpenButton(self, event):
dlg = wx.FileDialog(self, wildcard="*.pdf")
if dlg.ShowModal() == wx.ID_OK:
url = dlg.GetPath()
dlg.Destroy()
try:
if not url:
return
except:
return
wx.LaunchDefaultBrowser(url)
app = wx.App()
frame = wx.Frame(None, -1, "PDF Default Browser", size = (640, 480))
MyPanel(frame)
frame.Show(True)
app.MainLoop()