Hallo!
Mit "klappt alles" meinst du wahrscheinlich, dass die Ergebnisse auf der Konsole ausgegeben werden, aber kein Fenster zu sehen ist. Das liegt daran, dass die Befehle nach einander abgearbeitet werden. Erst wenn Zeile 30 fertig ist wird also Zeile 31 ausgeführt. Mit Threads und der "after"-Methode von Tkinter-Objekten kannst du das lösen. Ich habe aber vorher noch ein paar Tipps welche du beachten solltest, bevor du das Problem weiter angehst:
- Wenn du Pfade angibst, dann benutze raw-Strings. In deinem Fall (Zeile 1) hast du Glück, dass es funktioniert, da weder "\S" noch "\W" eine besondere Sequen (Escape-Sequenz) im String darstellen. Also besser:
WARCRAFT_INSTALLPATH = r"D:\Spiele\WarCraft III"
- Mache keine *-Importe. Auch wenn es in vielen Beispielen so gezeigt wird. Lieber ein "import Tkinter as tk" und den Modulinhalt dann qualifiziert über "tk.Label" ansprechen. Ein *-Import ist vielleicht auf den ersten Blick einfacher, bringt aber Unübersichtlichkeit und Namenskollisionen mit sich.
- Schreibe keinen Programmcode auf Modulebene. Das Programm solltest du in eine main-Funktion packen, damit du dein Modul später importieren kannst. Die Main Funktion solltest du am Ende der Datei so aufrufen:
- Wirf mal einen Blick in PEP 8 bezüglich der Namen. Auch solltest du vernünftige Namen vergeben: "text" sagt genau nichts über den Inhalt des Text aus. Der Name sollte eine Aussage darüber machen, was und mit welchem Zweck das entsprechende Objekt dort zu suchen hat. Auch gehören keine Leerzeichen an das linke und das rechte Ende von Funktionsaufrufen. Statt
sollte es heißen
Das gilt auch bei Definitionen.
Auch sollten die Leerzeichen um die Gleichheitszeichen bei Zuweisungen an die Paramter entfallen:
Bei normalen Zuweisungen bleiben sie aber erhalten!
Die Importe gehören ganz nach oben ans Modul, alles andere kommt danach.
- Benutze mehr Konstanten.
- Geöffnete Verbindungen, wie in Zeile 5, müssen auch wieder geschlossen werden.
- "os.chdir" zu benutzen ist eine schlechte Idee, da du damit globale Variablen veränderst und unter Umständen sehr unübersichtliche Strukturen verwendest. Setze Pfade besser mit "os.path.join" zusammen.
- Deine Suche nach dem Link im Inhalt sollte man noch besser gestalten. Z.B. mit einem der vielen in Python verfügbaren HTML-Parser.
- Ganz wichtig: Benutze keine globalen Variablen. Streiche das Statement "global" aus deinem Python Wortschatz. Die richtigen Lösungen sind Parameter, Rückgabewerte und, wenn das Beides nicht hilft, Klassen.
- Das ersetzen der Leerzeichen in Strings geht viel besser und allgemeiner mit "urllib.quote".
- Es fehlt noch Fehlerbehandlung in deinem Code.
- "print" ist auch eine tolle Erfindung
Das ist alles, was ich so auf die schnelle gesehen habe.
Sebastian
Das Leben ist wie ein Tennisball.