Unexpected Indent obwohl Einrückung wie bei Grundfunktion

Plattformunabhängige GUIs mit wxWidgets.
Antworten
pe
User
Beiträge: 44
Registriert: Dienstag 2. Februar 2010, 18:33

Hallo,

ich möchte einen Beispielcode von wxPython anpassen. Diese Funktion öffnet ein "Datei öffnen"-Fenster und setzt dann den Dateinamen in die Baumauswahl:

Code: Alles auswählen

    def OnProjectNew(self, event):
        """Create a new wxProject."""
        open_it = self.CheckProjectDirty()
        if open_it:
            dlg = wx.TextEntryDialog(self, 'Name for new project:', 'New Project',
                                     'New project', wx.OK|wx.CANCEL)
            if dlg.ShowModal() == wx.ID_OK:
                newproj = dlg.GetValue()
                dlg.Destroy()
                dlg = wx.FileDialog(self, 'Place to store new project.', '.', '', '*.wxp', wx.SAVE)
                if dlg.ShowModal() == wx.ID_OK:
                    try:
                        # save the project file.
                        proj = open(dlg.GetPath(), 'w')
                        proj.write(newproj + '\n')
                        proj.close()
                        self.project_open(dlg.GetPath())
                    except IOError:
                        MsgDlg(self, 'There was an error saving the new project file.', 'Error!', wx.OK)
            dlg.Destroy()
Ich will jedoch bei Ausführung dieser Funktion, dass die Zeichenkette "projektname" in die Baumauswahl eingefügt wird:

Code: Alles auswählen

def OnProjectNew(self, event):
	"""Create a new wxProject."""
		open_it = self.CheckProjectDirty()
		newproj = "projektname"
                dlg = "test"
		dlg.Destroy()
Hierbei erhalte ich die Fehlermeldung
IndentationError: unexpect indent
für die Zeile mit

Code: Alles auswählen

open_it = self.CheckProjectDirty()
Dabei habe ich genau eine Einrückung. Wenn ich jedoch die Einrückung entferne, wird mein Programm ausgeführt. Nur das bei einem Klick auf die entsprechende Schaltfläche nichts passiert. In der Konsole ist diese Meldung zu lesen:
Traceback (most recent call last):
File "wxProject.py", line 188, in OnProjectNew
dlg.Destroy()
AttributeError: 'str' object has no attribute 'Destroy'
Hat von euch jemand hierzu eine Idee? Warte gespannt auf eure Antwort.

LG
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Die Zeile ist anders eingerueckt als die darueber (die Kommentar-Zeile). Hat mit wx nichts zu tun...
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
pe
User
Beiträge: 44
Registriert: Dienstag 2. Februar 2010, 18:33

Ich habe den Tab des Kommentars mit dem darunterliegenden Code gleichgesetzt und das Fenster wurde aufgerufen, jedoch meckert Python, dass dlg nicht definiert ist.

Um vom Einfacheren die Sache anzugehen, habe ich mir mit wxGlade eine Baumnavi erstellt. Im Fenster ist jedoch erstmal nichts zu sehen. Wie kann ich die Baumnavi mit Elementen füllen? So sieht die leere Baumauswahl aus:

Code: Alles auswählen

    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.tree_ctrl_1 = wx.TreeCtrl(self, -1, style=wx.TR_HAS_BUTTONS|wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER)
        self.text_ctrl_1 = wx.TextCtrl(self, -1, "")

        self.__set_properties()
        self.__do_layout()
        # end wxGlade
pe
User
Beiträge: 44
Registriert: Dienstag 2. Februar 2010, 18:33

Ok, habs:

Code: Alles auswählen

    def OnProjectNew(self, event):
		"""Create a new wxProject."""
		self.root = self.tree.AddRoot("blar")
2 minutes of manual reading, is replacing hours of try and error: http://docs.wxwidgets.org/2.6/wx_wxtree ... trladdroot

Trotzdem vielen Dank für eure Aufmerksamkeit!
Antworten