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.createwidgets()
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.
@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.
@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.
@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ę
@bolinoga: Po prostu zawsze jak wpisywałem klasy i któraś dziedziczyła to z klasy jaką wklepałem. I tak jak na dwa tygodnie nauki całkiem spoko idzie :P
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.createwidgets()
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.
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@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
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 czujeszsuper
. 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ę