Seite 1 von 1

pythonbacktrace

Verfasst: Montag 7. Februar 2022, 20:48
von mistermert44
ich habe ein problem ich versteh nicht was ist falsch gemacht habe könnt ihr mir bitte helfen

Code: Alles auswählen

import pyautogui as p

class Find:
    def __init__(self , image , speed):
        self.image = image
        self.speed = speed
        p.FAILSAFE = True

    def autoaccept (self):
     while True:
            position = p.locateOnScreen(self.image,confidence=.7)
            p.moveTo(position(0)+100,position(1)+25)
            p.singleClick()
            return 1

if __name__ == "__main__":

  find = Find(r'C:\Users\egeme\minecraft_move\leagueautoaccept.png' , speed=.001)
  while True:
        if find.autoaccept() == 1:
           break
Das ist der code und es kommt das als backtrace
Traceback (most recent call last):
File "C:\Users\egeme\minecraft_move\move.py", line 20, in <module>
if find.autoaccept() == 1:
File "C:\Users\egeme\minecraft_move\move.py", line 11, in autoaccept
position = p.locateOnScreen(self.image,confidence=.7)
File "C:\Users\egeme\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pyautogui\__init__.py", line 175, in wrapper
return wrappedFunction(*args, **kwargs)
File "C:\Users\egeme\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pyautogui\__init__.py", line 213, in locateOnScreen
return pyscreeze.locateOnScreen(*args, **kwargs)
File "C:\Users\egeme\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pyscreeze\__init__.py", line 372, in locateOnScreen
screenshotIm = screenshot(region=None) # the locateAll() function must handle cropping to return accurate coordinates, so don't pass a region here.
File "C:\Users\egeme\AppData\Local\Programs\Python\Python310-32\lib\site-packages\pyscreeze\__init__.py", line 144, in wrapper
raise PyScreezeException('The Pillow package is required to use this function.')
pyscreeze.PyScreezeException: The Pillow package is required to use this function.
[Finished in 2.678s]
ich weiß nicht was falsch ist.

Re: pythonbacktrace

Verfasst: Montag 7. Februar 2022, 21:40
von __deets__
Steht doch da. Das Paket Pillow muss vorhanden sein. Musst du also installieren.

Re: pythonbacktrace

Verfasst: Montag 7. Februar 2022, 22:08
von __blackjack__
@mistermert44: An dem Code ist auch einiges merkwürdig. Die Klasse macht keinen Sinn, das ist doch einfach nur eine Funktion die übermässig kompliziert geschrieben ist. Der Name der Klasse deutet schon darauf hin, das etwas nicht ganz stimmt, denn `Find` beschreibt ja kein ”Ding” im weitesten Sinne sondern eine Tägigkeit, also ein Name der eher für eine Funktion oder Methode gedacht ist.

`speed` wird nirgends verwendet.

ZwischenWorteninNamensolltemaneinenUnterstrichsetzenweilsichdassonstschwererliest.

Eine ``while`` Schleife die grundsätzlich genau *einmal* läuft, weil sie am Ende des Schleifenkörpers mit einem ``return`` beendet wird, ist keine Schleife.

Eine Funktion die grundsätzlich den Wert 1 als Rückgabewert hat, hat eigentlich keinen Rückgabewert, denn das macht keinen Sinn. Auch das prüfen ob es eine 1 war, wenn es immer nur eine 1 sein kann, ist sinnfrei.

Und an der Stelle wo die Prüfung stattfindet die *immer* Wahr ist, haben wir dann noch mal eine Schleife die gar keine ist. Was soll das?

Eingerückt wird vier Leerzeichen pro Ebene.

Womit von dem Code das hier übrig bleibt:

Code: Alles auswählen

#!/usr/bin/env python3
import pyautogui as p


def auto_accept(image):
    position = p.locateOnScreen(image, confidence=0.7)
    p.moveTo(position(0) + 100, position(1) + 25)
    p.singleClick()


if __name__ == "__main__":
    p.FAILSAFE = True
    auto_accept(R"C:\Users\egeme\minecraft_move\leagueautoaccept.png")

Re: pythonbacktrace

Verfasst: Montag 7. Februar 2022, 22:40
von mistermert44
kurze frage wie hast du geschaut also wie hast du die fehler gefunden erfahrung oder gehst du eine reiehenfolge beim fehlerfinden weil das ist mein erstes programm und is auto_accept notwendig?

Re: pythonbacktrace

Verfasst: Montag 7. Februar 2022, 22:43
von mistermert44
und noch was auto_accept tut es dann solange wiederholen bis die aufgabe erfüllt wurde oder lauft sie permanent @__blackjack__

Re: pythonbacktrace

Verfasst: Montag 7. Februar 2022, 23:13
von __deets__
Das auto_accept macht das nur einmal. Das ist in deinem Code aber genauso.

Re: pythonbacktrace

Verfasst: Montag 7. Februar 2022, 23:13
von __blackjack__
@mistermert44: Warum hast Du eine Klasse geschrieben wenn Du offenbar gar nicht weisst was das alles bedeutet? Oder die ``while``-Schleifen die keinen Sinn machen, warum hast Du die geschrieben?

Ob `auto_accept()` nötig ist, musst Du doch wissen, ob die Funktionalität die da drin steht gebraucht wird. Also als eigene Funktion braucht man das in diesem kleinen Programm nicht zwingend. Wird ja nur an einer Stelle aufgerufen und alles ist recht kurz, man könnte den Code der Funktion also auch einfach an die Stelle des Aufrufs schreiben.

Ohne Schleife wird da nichts wiederholt. Eine Frage wäre sicher was `p.locateOnScreen()` liefert wenn das Bild gar nicht auf dem Bildschirm zu finden ist. Und das `position` *aufegerufen* wird, sieht auch komisch aus. Da muss man in der Dokumentation nachlesen wie die Funktionsweise ist und was die Funktion zurück gibt.