Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-05-01 00:22:36

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Python - 'miłe' złego początki

Może tu się znajdzie ktoś kto mnie oświeci.
Mam sobie prosty programik z wykorzystaniem wxPython, problem w tym że przycisk "close" znajdujący sie na pierwszej zakładce po naciśnięciu wywala taki sobie błąd:
AttributeError: 'Program' object has no attribute 'Close'
Składniowo wszystko gra bo jak wstawiłam tam MessageBox to po naciśnięciu na button wyskakuje.

Nie trybię, o co mu chodzi z tym Close? Ryję przykłady w sieci, wszędzie jest I-DEN-TY-CZNIE.

kod:

Kod:

import wx
 
class Program(wx.App):
    def OnInit(self):
        Ramka = wx.Frame(None, -1, "Eld000pa",size=(300,200))
        zak = wx.Notebook(Ramka, -1, style=wx.NB_TOP, pos=(10,20), size=(350,250))
        Pan1 = wx.Panel(zak, -1)
        Pan2 = wx.Panel(zak, -1)
        Pan2.SetBackgroundColour('Blue') #dziala :)
        zak.AddPage(Pan1, "Prostokat")
        zak.AddPage(Pan2, "Trojkat")
        Tekst1 = wx.StaticText(Pan1, -1, "wx ssie", pos=(20,20))
        Tekst2 = wx.StaticText(Pan2, -1, "Jakis tekst", pos=(50, 50))
        button = wx.Button(Pan1, -1, 'close', pos=(70, 70), size=(50,50))
        self.Bind(wx.EVT_BUTTON, self.OnClose)
        Ramka.Show()
        return -1


    def OnClose(self, event):
        #self.Close() 
        wx.MessageBox(u"Wciśnięto przycisk") #to smiga, a self.Close() nie :-(

if __name__=='__main__':
    #app=wx.PySimpleApp()
    app=Program()
    app.MainLoop()

dopiero się tego uczę, nie mogę powiedzieć żeby to było aż tak bardzo intuicyjne i jasne więc jeśli znajdzie się tu ktoś kto będzie umiał pomóc/zaczarować tak żeby 'close' zamykało okienko to proszę o wyrozumiałość. Generalnie w wx są jakieś śmieszne zależności między tym wszystkim i trochę nie ogarniam co z czym i dlaczego.
Pozdrawiam.

///edit:

Oo, trzeba było się zdrzemnąć. Działa. Tylko zmieniłam z wx.App na wx.Frame i wprowadziłam kilka malutkich poprawek (tu słówko wyciąć, tam wkleić), jakby ktoś był ciekaw to poniżej jest kod do wglądu. Ogólnie nadal nie ogarniam, ale przynajmniej wiem ze trzeba się trzymać wx.Frame.

Kod:

import wx
 
class Program(wx.Frame):
    def __init__(self,parent,id):
        
        wx.Frame.__init__(self, parent,id, 'Eld000pa',size=(300,200))
        self.panel=wx.Panel(self)
        zak = wx.Notebook(self.panel, -1, style=wx.NB_TOP, pos=(10,20), size=(350,250))
        #zakladki
        Pan1 = wx.Panel(zak, -1)
        Pan2 = wx.Panel(zak, -1)
        Pan2.SetBackgroundColour('Blue') #dziala :)
        zak.AddPage(Pan1, "Prostokat")
        zak.AddPage(Pan2, "Trojkat")
        #zak.AddPage(Pan1, "Koleczko")
        #napisy
        Tekst1 = wx.StaticText(Pan1, -1, "wx ssie", pos=(20,20))
        Tekst2 = wx.StaticText(Pan2, -1, "Jakis tekst", pos=(50, 50))
        button = wx.Button(Pan1, -1, 'close', pos=(70, 70), size=(50,50))
        self.Bind(wx.EVT_BUTTON, self.OnClose)


    def OnClose(self, event):
        self.Close()
        #wx.MessageBox(u"Wciśnięto przycisk")

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame = Program(parent=None, id=-1)
    frame.Show()
    app.MainLoop()

Ostatnio edytowany przez Trin (2012-05-01 09:03:59)

Offline

 

#2  2012-05-01 10:38:46

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Python - 'miłe' złego początki

Imho komunikat jest jasny. 'Program' object has no attribute 'Close' - klasa program nie ma atrybutu/metody Close. No i faktycznie nie ma, więc wywołanie czegoś czego nie ma to powoduje. Możesz zaglądać do dokumentacji wx by poznać atrybuty i metody klas. Część jest dziedziczona, więc trzeba patrzeć z tego co widzę też po rodzicach. Ale może lepiej byłoby użyć jakiegoś IDE dla Pythona, które taki błąd wychwyci.

Offline

 

#3  2012-05-01 11:30:57

  TheAnt - Użytkownik

TheAnt
Użytkownik
Skąd: Silesia Moloch
Zarejestrowany: 2012-01-24
Serwis

Re: Python - 'miłe' złego początki

Moźe w tym miejscu nie self.close ma być a COŚINNEGO.close ?
Nie bylo w Pythonie czegoś takiego jak .__doc__ ?

Ostatnio edytowany przez TheAnt (2012-05-01 11:41:21)


If I go insane please don't put your wires in my brain...

Offline

 

#4  2012-05-01 15:29:10

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Re: Python - 'miłe' złego początki

Ant - nie kombinuj :D
kamikaze - ano rację Ci muszę przyznać, miałam trochę dość czytania dokumentacji i chciałam "sama". Thx.

..wx jest  dość dziwne.

Offline

 

#5  2012-05-01 19:04:26

  TheAnt - Użytkownik

TheAnt
Użytkownik
Skąd: Silesia Moloch
Zarejestrowany: 2012-01-24
Serwis

Re: Python - 'miłe' złego początki

Tak jest!
Przestać kombinować...


If I go insane please don't put your wires in my brain...

Offline

 

#6  2012-05-01 23:08:55

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Re: Python - 'miłe' złego początki

jak na ironię, jak przestałam kombinować jak przysłowiowy koń pod górę to zaczęło iść. Ant, polecam wx :D

Offline

 

#7  2012-05-08 22:44:31

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Re: Python - 'miłe' złego początki

pomógłby mi ktoś ogarnąć, co jest grane że nie wpisuje do pliku tekstowego tego co zaznaczy użytkownik tylko jeden wariant odpowiedzi na który się uparł (inną niż zaznaczona?)

tu kod, bo długawy.
a ja już ślepnę i nie widzę.
W klasie pierwszego okna np. nie wpisuje wieku, a także prawidłowej płci.

http://wklej.dug.net.pl/4159

Ostatnio edytowany przez Trin (2012-05-08 23:00:54)

Offline

 

#8  2012-05-08 23:58:44

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: Python - 'miłe' złego początki

No bo: if (self.cb1.GetValue()=='True') co to jest? GetValue() zwraca bool nie string. Powinno być if (self.cb1.GetValue()==True), wtedy działa.

Offline

 

#9  2012-05-09 17:19:39

  Trin - Wredotka

Trin
Wredotka
Zarejestrowany: 2008-05-16

Re: Python - 'miłe' złego początki

Oo kamikaze - wiedziałam że nikt mi nie odpowie tak jak Ty:)
dzięki, poplątałam się w tych widżetach przez moment stad błedy za które mi dosłownie wstyd :<

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)