Wpis z mikrobloga

Mam dwa pytania do mistrzów Pythona i PyQt.

Bawię się PyQt5 i oglądając tutorial zastanawiam się jak to działa, że tworząc GUI można użyć wielokrotnie tej samej nazwy (dodając przycisk). Na przykład taki kod zadziała bez zarzutu:

btn = QtWidgets.QPushButton("Close", self)
btn.clicked.connect(self.closeapplication)
btn.move(340,120)

self.btn = QtWidgets.QPushButton("Download",self)
self.btn.move(200,120)
self.btn.clicked.connect(self.download
file)

1) Jak to jest, że używamy btn dla obu przycisków i oba działają? :O
2) Czemu za pierwszym przyciskiem nie możemy użyć self (inaczej wyskoczy error), a za drugim już możemy?

Ktoś potrafi wytłumaczyć jaką logiką kieruje się tu program? ( ͡° ʖ̯ ͡°)

#python
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 1
@Mr_NiceGuy 1. To tylko nazwa zmiennej. Nawet jak na napisz, to masz 2 niezależne obiektu. Python sam czyści potem pamięć, więc nie ma tu konsekwencji zgubienia obiektu.
2. Gdzie self?
  • Odpowiedz
@Mr_NiceGuy: podstawy Pythona mistrzu… ;)

btn to lokalny obiekt wewnątrz danej funkcji.
self.btn to atrybut aktualnej klasy o nazwie btn
Utworzyłeś 2 osobne obiekty i nie ma to związku z Qt.

Powyższe to odpowiedź na oba Twoje pytania ;)
  • Odpowiedz
@Razi91: @morsik:
Dzięki za odpowiedź. Nie mówiłem, że nie potrzebuję podstaw :D
Wydaje mi się, że PyQT jest wystarczająco prosty na początek do lepszego zrozumienia budowania obiektów, zależności, dziedziczenia, itd. Ale wiadomo, że uczę się chaotycznie skacząc między tutorialami, książkami i kursami.
  • Odpowiedz
  • 0
@Razi91 meh, podstawy mam, ale w podstawach rzadko tworzysz klasy. Np. W Automate the Boring Stuff (wlasnie skończyłem) tego akurat brakuje.

Jeszcze zależy jak definiujesz podstawy, bo podstawy na początek, a podstawy do pracy dla profesjonalistów to dwa różne światy.
  • Odpowiedz