Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyStok #42 - wystąpią Łukasz Langa i Dominik Kozaczko
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Problem z metodą .pack() w tkinter  (Przeczytany 63 razy)
« : 17:06 13/07/19 »
Adrianno Offline
Hello World!

Zobacz profil
*

Reputacja: 0
Wiadomości: 1


Witam wszystkich

Kiedy w programie:
Kod
from tkinter import *
main = Tk()
def showHej():
    pole1.insert(0, "Hej")
pole1 = Entry()
pole1.pack()
przycisk = Button(text="Przycisk", command=showHej).pack()
main.mainloop()

zamienię wiersze:
Kod
pole1 = Entry()
pole1.pack()
na wiersz:
Kod
pole1 = Entry().pack()
to po kliknięciu przycisku pojawia się komunikat błędu:
Verdana]AttributeError: 'NoneType' object has no attribute 'insert'

Dlaczego użycie .pack() w jednym wierszu powoduje błąd, a zapis w oddzielnym wierszu działa poprawnie?

Zapisane
« Odpowiedz #1 : 02:11 14/07/19 »
Guaz Online
Expert Python User

Zobacz profil
****

Reputacja: 72
Płeć: Mężczyzna
Wiadomości: 542


Tak, dlatego że tworzysz obiekt Entry i wywołujesz jego metodę pack, która zwraca None, ale modyfikuje ten obiekt, przykład z kategorii przetestuj to sam:

Kod
class A:
def __init__(self):
self.pole = 4
 
def metoda(self):
               self.pole = 3
return None #~ Lub po prostu pass, jak nie ma returna to zwraca none
 
a = A()
print(a)
print(a.pole)
print(a.metoda())
print(a.pole)
 
print(A())
print(A().pole)
print(A().metoda())
print(A().pole)
 

Ogólnie, metoda pack nie zwraca obiektu tylko go modyfikuje. Więc przypisując wartość którą zwraca pack, przypisujesz None. Ogólnie, w tkinterze tak się nie robi, z tego właśnie powodu Uśmiech
Zapisane

Python 3.5+ / Mint

Daje wędkę zamiast ryby. Chyba że ktoś się chce czegoś nauczyć, wtedy chętnie pomogę każdemu.
Za rybę niestety trzeba zapłacić Z politowaniem.
Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2019 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot