kodujwpythonie / koduj-w-pythonie

GNU General Public License v3.0
3 stars 24 forks source link

Uruchamianie poza edytorem Mu #2

Closed Marcinosoft closed 3 years ago

Marcinosoft commented 3 years ago

Nie wiem jak w Visual Studio Code, ale w PyCharm, czy Wing sposób podany w https://github.com/kodujwpythonie/koduj-w-pythonie/blob/master/program_idle_pycharmvscode.py generuje błąd.

PyCharm nie widzi (Unresolved reference) klas i obiektów: Actor, music, screen, animate, sounds, keyboard, clock

Aby umożliwić uruchamianie przykładów poza Mu należy dopisać przed kodem:

import pgzrun
import sys
from pgzero.builtins import *
mod = sys.modules['__main__']

Następnie wszystkie wystąpienia screen, należy prefixować przy pomocy mod., czyli: mod.screen

I w takim wydaniu nie ma błędów w IDE i wszystko działa poprawnie. Przykład poprawionego program_02.py:

import pgzrun
import sys
from pgzero.builtins import *
mod = sys.modules['__main__']

WIDTH = 1280
HEIGHT = 640

background_active = "corridor-01.jpg"
background_position = (0, 0)

def update():
    mod.screen.blit( background_active, background_position )

# uruchamiamy bibliotekę PygameZero
pgzrun.go()

Sprawdzone na PyCharm Community oraz Wing 101.

No i oczywiście należy zainstalować PyGame Zero: pip install pgzero

abixadamj commented 3 years ago

O, dzięki. Bazowałem na dokumentacji: https://pygame-zero.readthedocs.io/en/stable/ide-mode.html - jak widać nie można do końca niczemu dowierzać.

abixadamj commented 3 years ago

Ale właśnie na Atom sprawdzam: Zrzut ekranu z 2020-12-11 23-19-40

abixadamj commented 3 years ago

I w IDLE: Zrzut ekranu z 2020-12-11 23-21-09

Marcinosoft commented 3 years ago

To jest tak, że to się owszem uruchamia, nawet w PyCharm, ale PyCharm krzyczy, że nie wie co to np. screen.

obraz

Narzekają na to w internecie, ale raczej nie będzie ruszone patrząc na to zgłoszenie: https://youtrack.jetbrains.com/issue/PY-41151

Więc dzielę się obejściem dla lubiących PyCharma, bo w takiej wersji działa również na innych IDE.

abixadamj commented 3 years ago

Ale widzę, że nie robi problemów przy uruchamianiu, tylko wewnętrznie nie potrafi wczytać docstringów. Ale to nie jest w sumie wielki/żaden błąd. Wystarczy użyć innego edytora ;-) Albo przymknąć oczy ;-)

Marcinosoft commented 3 years ago

W zasadzie problemem jest tylko obiekt screen. Inne da się zaimportować z pgzero.builtins (poprawiłem w treści zgłoszenia). Owszem na screen można przymknąć oko, lub po prostu zaznaczyć, aby PyCharm ignorował ten błąd, ale import pgzero.builtins warto dodać, dzięki temu PyCharm widzi referencje wszystkich obiektów/klas, działa asysta kodu (podpowiadanie właściwości/metod), poza obiektem screen.