Aktives Panel aus Notebook bestimmen
Verfasst: Sonntag 10. Dezember 2006, 11:12
Hallo wxPython-Gemeinde,
wie bestimme ich in einem Frame, dass aus mehreren Notebook-Panels (mit TextCtrl) besteht das aktive Panel um es abzuspeichern?
Sorry, ich habe es bereits auf das wesentlichste gekürtzt.
Grüße, Calo
wie bestimme ich in einem Frame, dass aus mehreren Notebook-Panels (mit TextCtrl) besteht das aktive Panel um es abzuspeichern?
Code: Alles auswählen
import wx
import os
wx.SetDefaultPyEncoding("iso-8859-1")
ID_NEW = 100
ID_OPEN = 101
ID_SAVE = 102
ID_EXIT = 104
class EditPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.filename = ''
self.dirname = ''
vbox = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(vbox)
self.text = wx.TextCtrl(self, 1, "", style=wx.TE_MULTILINE)
vbox.Add(self.text, proportion = 1, flag = wx.ALL | wx.EXPAND, border=1)
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Simple Notebook Example")
self.CreateStatusBar()
filemenu = wx.Menu()
filemenu.Append(ID_NEW, "&New", "Create a new file")
filemenu.Append(ID_OPEN, "&Open", "Open a file")
filemenu.Append(ID_SAVE, "&Save", "Save the active file")
filemenu.Append(ID_EXIT, "E&xit", "Terminate the Program")
wx.EVT_MENU(self, ID_NEW, self.OnNew)
wx.EVT_MENU(self, ID_OPEN, self.OnOpen)
wx.EVT_MENU(self, ID_SAVE, self.OnSave)
wx.EVT_MENU(self, ID_EXIT, self.OnExit)
menubar = wx.MenuBar()
menubar.Append(filemenu, "&File")
self.SetMenuBar(menubar)
self.ePanel = []
editMainPanel = wx.Panel(self)
self.createEditorNotebook(editMainPanel)
###########################################################################
# HaupteditorPanel ...
def createEditorNotebook(self, parent):
vbox = wx.BoxSizer(wx.VERTICAL)
parent.SetSizer(vbox)
self.nb = wx.Notebook(parent, style = wx.NB_BOTTOM)
vbox.Add(self.nb, 1, wx.ALL | wx.EXPAND, border = 5)
###########################################################################
# Neues File erzeugen
def OnNew(self, event):
n = len(self.ePanel)
self.ePanel.append(EditPanel(self.nb))
self.filename = "default.txt"
self.nb.AddPage(self.ePanel[n], self.filename)
###########################################################################
# Programm beenden
def OnExit(self, event):
self.Close(True)
###########################################################################
# File oeffnen
def OnOpen(self, event):
self.dirname = ""
dlg = wx.FileDialog(self, "Open", self.dirname, "", "*.*", wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
filename = dlg.GetFilename()
dirname = dlg.GetDirectory()
f = open(os.path.join(dirname,filename),'r')
n = len(self.ePanel)
self.ePanel.append(EditPanel(self.nb))
self.nb.AddPage(self.ePanel[n], filename)
self.ePanel[n].text.SetValue(f.read())
self.ePanel[n].filename = filename
self.ePanel[n].dirname = dirname
f.close()
dlg.Destroy
###########################################################################
# Datei aus aktivem Panel speichern
def OnSave(self, event):
# print self.ePanel[0].text.GetValue()
# activePanel = event.GetActiveObject() # Enthaelt leider 'nur' das MainObject "MainFrame"
"""if activePanel.dirname == "":
self.dirname = ""
dlg = wx.FileDialog(self, "Save", self.dirname, "", "*.*", wx.SAVE)
if dlg.ShowModal() == wx.ID_OK:
self.filename = dlg.GetFilename()
self.dirname = dlg.GetDirectory()
f = open(os.path.join(self.dirname, self.filename), 'w')
f.write(activePanel.text.GetValue())
f.close()
dlg.Destroy
else:
f = open(os.path.join(activePanel.dirname, activePanel.filename), 'w')
print activePanel.text
f.write(activePanel.text.GetValue())
f.close()"""
if __name__ == "__main__":
app = wx.App()
f = MainFrame()
f.Center()
f.Show()
app.MainLoop()
Sorry, ich habe es bereits auf das wesentlichste gekürtzt.
Grüße, Calo