Seite 1 von 1

Verzeichnisstruktur über GUI kopieren

Verfasst: Mittwoch 22. September 2010, 15:04
von Arno
Guten Tag miteinander.
Ich bin ganz neu in diesem Forum und bin mir nicht sicher wo ich mein Problem schildern muss. Desshalb schreibe ich mal in die Algemeine Fragen.
Also zum Anfang: Ich bin ein Anfänger was die Python programmiereung anbelangt. Ich habe mir ein Dickes Buch (Das Python Praxis Buch) gekauft und auf diversen Internetseitenseiten Beispiele gefunden aber ich komme nicht weiter.
zu meinem Problem: Ich muss geschäftlich ein Python Skript erstellen dass in einem ersten Schritt eine Verzeichnisstruktur (Bsp: C:\Temp\A\B\C) in eine andere Verzeichnisstruktur (Bsb: C:\Temp\X) kopiert. Dies hab ich soweit hingekriegt. Das ganze soll jetzt aber über ein GUI gelöst werden. Im GUI soll in einem Textfeld der Quellpfad angegeben werden können und mit einem StartButton das kopieren ausgelöst werden. Übrigens ich benutze Python 2.7 und wxGlade vo.6.3. Nach einwenig rumspielen mit wxGlade hab ich dann auch einen kleinen GUI hingekriegt.Bis jetz funktioniert es soweit wenn ich Start drücke wird eine Quellpfad in ein Zielpfad kopiert den ich fix im Handler Start eingetragen habe. Jetzt kommt mein Problem. Wie krieg ich das hin dass mein Quellpfad im Handler Start dem Pfad entspricht welcher ich in dem Textfeld eingegeben habe? Ich hab auch rausgefunden dass ich mit der Funktion wx.DirDialog ein Fenster in Explorer Ansicht öffnen kann und so den gewünschten Pfad auswählen kann. aber wieder hab ich das Problem dass ich diesen Pfad dann nicht in mein Handler Start bringe.

Ich hoffe ihr versteht mein wahrscheinlich für euch kleines Problem. Kann mir da jemand weiter helfen?
Besten Dank im voraus. Gruss Arno
Hier noch mein Code:

Code: Alles auswählen

#!/usr/bin/env python
# 
# generated by wxGlade 0.6.3 on Wed Sep 22 09:16:22 2010

import wx
import shutil

# begin wxGlade: extracode
# end wxGlade



class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.themainpanel = wx.Panel(self, -1)
        self.Text_Quelle = wx.StaticText(self.themainpanel, -1, "Quelle:")
        self.Eingabe_Quelle = wx.TextCtrl(self.themainpanel, -1, "")
        self.button_cancel = wx.Button(self.themainpanel, -1, "Cancel")
        self.button_start = wx.Button(self.themainpanel, -1, "Start")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_TEXT_ENTER, self.Verzeichnis_angabe, self.Eingabe_Quelle)
        self.Bind(wx.EVT_BUTTON, self.Exit, self.button_cancel)
        self.Bind(wx.EVT_BUTTON, self.Start, self.button_start)
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("Script_H")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.HORIZONTAL)
        grid_sizer_1 = wx.GridSizer(3, 2, 2, 3)
        grid_sizer_1.Add(self.Text_Quelle, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.Eingabe_Quelle, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.button_cancel, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.button_start, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
        self.themainpanel.SetSizer(grid_sizer_1)
        sizer_1.Add(self.themainpanel, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        # end wxGlade
        
#Bei Start wird das kopieren des Trees von Quelle nach Ziel gehandhabt
    def Start(self, event): # wxGlade: MyFrame.<event_handler>
        shutil.copytree(r"C:\Temp\Laesser\Entwicklung\Beta\B10134",
                        r"C:\Temp\Laesser\Release\R10134\Software",
                        symlinks = False)
        event.Skip()
        
#Bei Exit wird das Fenster geschlossen wenn der Button Cancel gedrueckt wird
    def Exit(self, event): # wxGlade: MyFrame.<event_handler>
        self.Close()
        event.Skip()

    def Verzeichnis_angabe(self, event): # wxGlade: MyFrame.<event_handler>
        
        event.Skip()

# end of class MyFrame






if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, -1, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()

Re: Verzeichnisstruktur über GUI kopieren

Verfasst: Mittwoch 22. September 2010, 15:51
von BlackJack
@Arno: Du musst halt in der `Start()`-Methode den Wert von dem Textfeld auslesen. Wo ist das Problem? Wenn Du nicht weisst wie das geht, ist GUI-Programmierung wohl noch nicht das richtige, denn das ist eine sehr grundlegende Frage der Objektorientierung die Du da stellst.

Re: Verzeichnisstruktur über GUI kopieren

Verfasst: Mittwoch 22. September 2010, 16:56
von Arno
Hallo BlackJack
Besten Dank für deine Antwort. Ich weiss leider nicht gerade wie ich den Wert des Textfeldes auslese. Leider kann ich mir auch nicht aussuchen ob ich GUI programmieren möchte oder ob ich schon so weit bin..Ich muss es einfach machen desshalb habe ich mich auch an dieses Forum gewendet.
Vielleicht kannst du mir ein kleines Beispiel geben wie ich den Wert auslese.
Besten Dank

Re: Verzeichnisstruktur über GUI kopieren

Verfasst: Mittwoch 22. September 2010, 17:16
von BlackJack
@Arno: Na Du musst halt auf das Textfeldobjekt zugreifen und darauf die entsprechende Methode aufrufen um den Inhalt zu bekommen. Du weisst doch wie das Attribut heisst und von welchem Typ das ist. In der `wxPython`-Dokumentation kannst Du dann nachsehen welche Methoden Objekte von dem Typ haben und Dir die Passende raussuchen.

Re: Verzeichnisstruktur über GUI kopieren

Verfasst: Donnerstag 23. September 2010, 12:52
von Arno
@BlackJack
Besten Dank für deine Hilfe. Ich denke das krieg ich hin.:-)