WxPython文件对话框
我正在用wxPython构建一个应用程序,我在博客上读到,你不能在同一个应用程序上同时使用wx.FD_OPEN和wx.FD_SAVE,这是真的吗 如果这是真的,这是否意味着我必须搬到特金特 编辑:我当前拥有的内容WxPython文件对话框,python,wxpython,tkinter,Python,Wxpython,Tkinter,我正在用wxPython构建一个应用程序,我在博客上读到,你不能在同一个应用程序上同时使用wx.FD_OPEN和wx.FD_SAVE,这是真的吗 如果这是真的,这是否意味着我必须搬到特金特 编辑:我当前拥有的内容 SAVE_FILE_ID = wx.NewId() self.Bind(wx.EVT_MENU, self.saveFile, id=SAVE_FILE_ID) LOAD_FILE_ID = wx.NewId() self.Bind(w
SAVE_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.saveFile, id=SAVE_FILE_ID)
LOAD_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.loadFile, id=LOAD_FILE_ID)
accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('O'), LOAD_FILE_ID ),
(wx.ACCEL_CTRL, ord('S'), SAVE_FILE_ID )])
self.SetAcceleratorTable(accel_tbl)
def saveFile(self, event):
saveFileDialog = wx.FileDialog(self, "Save As", "", "",
"Python files (*.py)|*.py",
wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
self.text.SaveFile(saveFileDialog.GetPath())
event.Skip()
def loadFile(self, event):
openFileDialog = wx.FileDialog(self, "Open", "", "",
"Python files (*.py)|*.py",
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
self.text.LoadFile(openFileDialog.GetPath())
event.Skip()
我不确定我是否理解问题所在。当我将此代码放入实际运行的程序中时,它对我来说很好:
import wx
class MyForm(wx.Frame):
#----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial", size=(500,500))
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
SAVE_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.saveFile, id=SAVE_FILE_ID)
LOAD_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.loadFile, id=LOAD_FILE_ID)
accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('O'), LOAD_FILE_ID ),
(wx.ACCEL_CTRL, ord('S'), SAVE_FILE_ID )]
)
self.SetAcceleratorTable(accel_tbl)
#----------------------------------------------------------------------
def loadFile(self, event):
openFileDialog = wx.FileDialog(self, "Open", "", "",
"Python files (*.py)|*.py",
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
openFileDialog.ShowModal()
openFileDialog.GetPath()
openFileDialog.Destroy()
#----------------------------------------------------------------------
def saveFile(self, event):
saveFileDialog = wx.FileDialog(self, "Save As", "", "",
"Python files (*.py)|*.py",
wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
saveFileDialog.ShowModal()
saveFileDialog.GetPath()
saveFileDialog.Destroy()
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()
我在Windows 7上使用wxPython 2.8.12.1和Python 2.6.6我不确定我是否理解问题所在。当我将此代码放入实际运行的程序中时,它对我来说很好:
import wx
class MyForm(wx.Frame):
#----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial", size=(500,500))
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
SAVE_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.saveFile, id=SAVE_FILE_ID)
LOAD_FILE_ID = wx.NewId()
self.Bind(wx.EVT_MENU, self.loadFile, id=LOAD_FILE_ID)
accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('O'), LOAD_FILE_ID ),
(wx.ACCEL_CTRL, ord('S'), SAVE_FILE_ID )]
)
self.SetAcceleratorTable(accel_tbl)
#----------------------------------------------------------------------
def loadFile(self, event):
openFileDialog = wx.FileDialog(self, "Open", "", "",
"Python files (*.py)|*.py",
wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
openFileDialog.ShowModal()
openFileDialog.GetPath()
openFileDialog.Destroy()
#----------------------------------------------------------------------
def saveFile(self, event):
saveFileDialog = wx.FileDialog(self, "Save As", "", "",
"Python files (*.py)|*.py",
wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
saveFileDialog.ShowModal()
saveFileDialog.GetPath()
saveFileDialog.Destroy()
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()
我正在Windows 7上使用wxPython 2.8.12.1和Python 2.6.6。是的。2) 不是真的。你为什么这么想?“打开”和“保存”是用于不同目的的不同对话框“打开”和“另存为”在我的程序中位于同一菜单中,如何通过加速器使这两个对话框工作?它不能与load一起工作,但可以与save一起工作,因为在我的代码中,save是第一位的。@vjgaro我想你误解了。您可以有单独的“打开”和“保存”对话框,没有问题。这就是您在代码中所做的。您不能同时打开和保存一个对话框(即一个样式为
wx.FD_OPEN | wx.FD_SAVE
)1)是。2) 不是真的。你为什么这么想?“打开”和“保存”是用于不同目的的不同对话框“打开”和“另存为”在我的程序中位于同一菜单中,如何通过加速器使这两个对话框工作?它不能与load一起工作,但可以与save一起工作,因为在我的代码中,save是第一位的。@vjgaro我想你误解了。您可以有单独的“打开”和“保存”对话框,没有问题。这就是您在代码中所做的。你不能做的是有一个同时打开和保存的对话框(即一个样式为wx.FD_OPEN | wx.FD_SAVE
)我比较了代码,发现我不是.showmodel()干杯。我比较了代码,发现我不是.showmodel()干杯。