Fenster schließt sich andauernd

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
LeagueBotter
User
Beiträge: 1
Registriert: Sonntag 21. April 2019, 12:36

Hey bei mir tritt gerade das Problem auf das ich meine gespeicherte datei nicht ausführen kann.

Im terminal (JetBrains PyCharm) funktioniert das ganze wunderbar aber wenn ich die Datei speicher und diese dann ausführen will öffnet sich nur ganz kurz ein kleines Fenster und schließt sich dann wieder sofort und der Code wurde nicht ausgeführt. Bin ein blutiger Anfänger und nicht wundern: ich habe bei den Befehlen welche Tasten gedrückt werden sollen diese entfernt da es sich dabei um meinen benutzernamen und passwort handelt. Das ganze soll ein auto-login für League of Legends werden. Vielleicht ist das ganze etwas umständlich gemacht.

Freue mich über jede Hilfe :)

Hier der Code:

from PIL import ImageGrab, ImageOps
import pyautogui
import time
import sys
import subprocess

from numpy import *

def passwort():
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('Tab')
time.sleep(0.05)
print('tab')
pyautogui.keyUp('Tab')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('0')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('')
time.sleep(0.05)
print("")
pyautogui.keyUp('')
pyautogui.keyDown('Enter')
time.sleep(0.05)
print("Enter")
pyautogui.keyUp('Enter')

def lolstart():
pyautogui.doubleClick(780,30)
time.sleep(10)

print(sys.executable)
lolstart()
passwort()
Fire Spike
User
Beiträge: 329
Registriert: Montag 13. Mai 2019, 16:05
Wohnort: Erde

Einrückungen fehlen. Die sind das wichtigste im programm!
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@LeagueBotter: Konsolenprogramme startet man in einer Konsole, also erst selber eine Konsole starten und da drin dann das Programm starten. Dann bleibt das Konsolenfenster auch offen wenn das Programm zuende ist. Und falls es Fehler/Ausnahmen gab, hat man auch die Chance die zu lesen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Sonstige Anmerkungen zum Code: Auch unter Windows sollte man die She-Bang-Zeile schreiben, damit falls mehrere Python-Versionen installiert sind, die richtige ausgewählt wird.

Es werden Sachen importiert die nicht verwendet werden. Aus Numpy sogar alles mit Sternchen-Import.

Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.

Funktionen werden üblicherweise nach der Tätigkeit benannt die sie durchführen. `passwort` ist ein guter Name für ein Passwort, aber nicht für eine Funktion die ein Passwort eingibt. Die könnte man `log_in()` nennen. Abkürzungen sollte man vermeiden. Bei `start_league_of_legends()` fragt sich dann kein Leser warum das laute Lachen anfängt.

Die Anmeldefunktion ist nicht das was ein Programmierer machen würde. Man kopiert nicht zig mal die gleiche handvoll Zeilen und ändert da immer nur einen Wert. Das ist dumme stupide sich wiederholende Arbeit für die man einen Computer hat der einem genau so etwas abnimmt. Wenn man wiederholt das gleiche mit unterschiedlichen Werten machen will, dann packt man die Werte in eine Liste und schreibt eine Schleife über diese Werte. Und den Code der etwas mit jedem Wert macht, hat man dann genau *ein* mal im Quelltext stehen.

Ungetestet:

Code: Alles auswählen

#!/usr/bin/env python3
import sys
import time

import pyautogui


def start_league_of_legends():
    pyautogui.doubleClick(780, 30)
    time.sleep(10)


def log_in():
    keys = [
        '', '', '', '', '', '', '', '', '', '', '', '', '', 'Tab',
        '', '', '', '', '', '', '', '', 'Enter',
    ]
    for key in keys:
        pyautogui.keyDown(key)
        time.sleep(0.05)
        print(key)
        pyautogui.keyUp(key)


def main():
    print(sys.executable)
    start_league_of_legends()
    log_in()


if __name__ == '__main__':
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten