Wpis z mikrobloga

#python #naukaprogramowania

Zaczynam się uczyć GUI w tkinterze. Mam problem ze zrozumieniem dwóch linijek kodu

from tkinter import *

class Aplication(Frame):
def _init(self, master):
super(Aplication, self).
init(master)
self.grid()
self.create
widgets()

dalszy kod bez znaczenia

jest to klasa, która dziedziczy, ale od jakiej klasy? z tkintera?
No i co oznacza w tym przypadku "super"?

Podejrzewam że to po prostu odwołanie się do samego tkintera, ale nie mam pewności. Książka nie mówi mi za wiele, a po szybkim guglowaniu też niewiele jest.
  • 9
@IsambardKingdomBrunel: Skoro nie definiowałeś nigdzie klasy Frame, to Python musi ją skądś wziąć. Obstawiałbym, że z tkintera. Jeśli się czegoś uczysz, to próbuj unikać importu z gwiazdką. Będziesz includował tylko to co musisz i (wg mnie) lepiej zrozumiesz jak to wszystko działa.

Pierwsza lepsza stronka: Tkinter.frame

Co do super, to odwołujesz się do metody _init klasy nadrzędnej. Dziwi mnie trochę składnia wywołania metody init zamiast __init__, ale może to
@IsambardKingdomBrunel: Jeśli zaczynasz, to niepotrzebnie sobie komplikujesz życie. Frame można użyć prościej, jaka książka? Wklejaj kod na pastebina, bo prawdopodobnie obcięło część znaków. To co zastosowałeś, to dziedziczenie z Frame, i wywołanie inita z niego z przekazaniem parametru master.
@bolinoga: Wklepałem "dziedziczenie klas tkinter super" :( #januszguglowania

@piotrb: Ok tylko skąd ten frame? z tkintera? Cisnę z "Python dla każdego- podstawy programowania" Niby pisany pod 2.7 ale wklepuję na 3.4 i działa. Autor podał podstawowy sposób na aktywne ikonki, ale zaleca używania klas. Żaden ze mnie fojer ale w sumie zgadzam się z nim. Mniejszy bałagan odnoszę wrażenie. Napisałem program zliczający kliknięcia, a potem sam go przerobiłem tak aby
@IsambardKingdomBrunel: Frame zaimportowałeś (razem z całą zawartością modułu tkinter) tą linią kodu:

from tkinter import *
Tutaj zgadzam się z @piotrb - to co próbujesz zrobić można wykonać bez opakowywania wszystkiego w klasy. Dla mnie to kwestia wyboru i estetyki. Książki nie znam, więc nie poradzę. Zalecanie używania klas ma sens, o ile rozumiesz klasy i poprawne ich wykorzystanie. Tutaj pytasz o super, więc nie wiem, na ile komfortowo czujesz
@IsambardKingdomBrunel: Nie byłbym taki pewien. Widzisz, że dziedziczysz po klasie Frame (gdziekolwiek by ona nie była zadeklarowana) i masz wątpliwości odnośnie znaczenia słowa kluczowego / metody super. Znajomość tego zagadnienia nie ma nic wspólnego z samym tkinterem, a mimo to dostałeś małego zawrotu głowy ("odwołanie się do samego tkintera" - nie za bardzo...)

W każdym razie zaczynam powoli marudzić ze względu na porę. Powodzenia w potyczkach z Pythonem. Tylko radzę