WxPython Draw problem

poruka: 4
|
čitano: 1.706
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
WxPython Draw problem

Pozdrav svima!

Za svoj zavrsni rad moram napraviti neku aplikaciju u Pythonu koja se ukratko sastoji od područja za prikaz slike i toolbara. Obavezno moram koristiti wx za izradu GUI-a. E sad, za prikaz slike koristim DrawDC. Obzirom da moram jos neke stvari po tome crtati, zoomirati i sl. mislio sam da mi nije bas prakticno koristiti Static Bitmap na panelu. Problem je u tome sto kad se slika ucita i prikaze, sve je super dok se prozor ne makne do ispod taskbara, tada dio slike koji je bio ispod taskbara jednostavno nestane. To se ne dogodi kada preko tog prozora predem sa nekim drugim. Kako da to pobogu ispravim???

 

Ovo je dio koji postavi sliku na panel:

    def InitialDraw (self):
       while True:
            try:
                self.image; #provjeri da li je slika uopce otvorena
                sizer = wx.BoxSizer()
                sizer.Add(self.panel,0,wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL,0)
                self.Center()
                self.SetSizer(sizer)
                dc = wx.ClientDC(self.panel)
                dc.Clear()
                dc.DrawBitmap(wx.BitmapFromImage(self.image),0,0)
                break
            except AttributeError :
                self.Center()
                pass

 

Ovo je dio koji se koristi za refreshanje:

Dio u __init___:

        wx.EVT_PAINT(self.panel, self.onPaintX())

 

def onPaintX (self):           
        if self.Open == True: #da li je slika otvorena
            print 'Panel: ',self.panel.GetSize()
            dc = wx.PaintDC(self.panel)
            dc.Clear()
            dc.DrawBitmap(wx.BitmapFromImage(self.image),0,0)
        else:
            pass

 

Te su se stvari desavale i sa resizanjem prozora. Sto radim krivo? Prilozio sam i screenshotove.

Hvala na odgovorima

 

Let's just say that if complete and utter chaos was lightning, he'd be the sort to stand on a hilltop in a thunderstorm wearing wet copper armour and shouting 'All gods are bastards'.
 
0 0 hvala 0
17 godina
neaktivan
offline
WxPython Draw problem
 
0 0 hvala 0
17 godina
moderator
online
RE: WxPython Draw problem
Avdija kaže...

Ovo je dio koji postavi sliku na panel:

    def InitialDraw (self):
       while True:
            try:
                self.image; #provjeri da li je slika uopce otvorena
                sizer = wx.BoxSizer()
                sizer.Add(self.panel,0,wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL,0)
                self.Center()
                self.SetSizer(sizer)
                dc = wx.ClientDC(self.panel)
                dc.Clear()
                dc.DrawBitmap(wx.BitmapFromImage(self.image),0,0)
                break
            except AttributeError :
                self.Center()
                pass

 

Ovo je dio koji se koristi za refreshanje:

Dio u __init___:

        wx.EVT_PAINT(self.panel, self.onPaintX())

 

def onPaintX (self):           
        if self.Open == True: #da li je slika otvorena
            print 'Panel: ',self.panel.GetSize()
            dc = wx.PaintDC(self.panel)
            dc.Clear()
            dc.DrawBitmap(wx.BitmapFromImage(self.image),0,0)
        else:
            pass

 

Te su se stvari desavale i sa resizanjem prozora. Sto radim krivo? Prilozio sam i screenshotove.

Hvala na odgovorima

Na jednoj stranici sam procitao da UVIJEK u onPaint-u moras uzeti dc od PaintDC! Ti to nisi napravio, mozda je u tome caka - znaci kod bi trebao ici:

def onPaintX (self):

        dc = wx.PaintDC(self.panel)
        if self.Open == True: #da li je slika otvorena
            print 'Panel: ',self.panel.GetSize()           
            dc.Clear()
            dc.DrawBitmap(wx.BitmapFromImage(self.image),0,0)
        else:
            pass

 

Usput receno, imas jednu logicku gresku. Zasto na dva mjesta crtas istu stvar? Crtaj samo u onPaintX-u. Ne razumijem inace tu funkciju InitialDraw - kad ti se to poziva? Sto znaci self.image; #provjeri da li je slika uopce otvorena? Identifikator "image" je varijabla ili neka funkcija? U njoj postavljas varijablu Open koju provjeravas u onPaintX?

 

 

BTW screenshotove nisi prilozio (kad odaberes sliku, trebas kliknuti na gumb Prebaci). Ali znamo o cemu se radi.

16 godina
neaktivan
offline
WxPython Draw problem

Hvala na odgovorima, ali odustao sam od Draw-anja za prikaz slike. Aplikacija bi trebala biti napravljena u pythonu uz pomoc wx-a i opencv-a. OpenCV ima puno bolje stvari za prikaz i obradu slika. Tada su mi ujedno i svi problemi nestali :D. Svejedno, puno vam hvala na trudu.

Let's just say that if complete and utter chaos was lightning, he'd be the sort to stand on a hilltop in a thunderstorm wearing wet copper armour and shouting 'All gods are bastards'.
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice