2013-04-10 21 views
5

Jestem nowy w Pythonie i natknąłem się na problem, w którym metody w klasie Gui są zawsze wykonywane dwukrotnie.Metody klasy Python zawsze są wykonywane dwukrotnie.

Oto klasa gui która dziedziczy z Tkinter:

from Tkinter import * 

class Gui (Tk): 
    def createKdWindow(self): 
     print("createKdWindow has been triggered") 

    def activate(self): 
     print ("activate has been triggered") 
     self.tk.mainloop() 

i tutaj właśnie metody sprawdzony od (init, .py):

from pm_test.gui import Gui 

datgui = Gui() 
datgui.createKdWindow() 
datgui.activate() 

Kiedy uruchomić mój program , Otrzymuję następujące wyjście konsoli:

createKdWindow has been triggered 
activate has been triggered 
createKdWindow has been triggered 
activate has been triggered 

Moje metody zostały wykonane dwa razy. Nie wiem, skąd to pochodzi. Czy ktoś wie, jak rozwiązać ten problem?

Poprawiono: Umieszczenie kodu z init, .py do nowego modułu stałej ten problem!

+0

Miałem raz dziwaczny incydent, ale w zupełnie niepowiązanych bibliotekach. http://stackoverflow.com/questions/10898218/why-does-django-call-init-twice-for-form-fields - ten kod został przepisany (lub przynajmniej mocno refaktoryzowany), ale nigdy nie dowiedziałem się, co tak naprawdę było problem. I _think_ Uruchomiłem Python 2.6.6 - czy tak też jest w przypadku Ciebie? – Kimvais

+2

Próbowałem uruchomić ten kod dosłownie w Pythonie 2.7.3 i nie mogę odtworzyć problemu. Jakiej wersji Pythona używasz? – Aya

+0

Testowałem to za pomocą Python3.2.3. Nie ma takiego problemu. – Sheng

Odpowiedz

0

Naprawiono: Umieszczenie kodu z init.py w nowym module rozwiązało ten problem!

Powiązane problemy