Seite 1 von 1

wx.PopupControl

Verfasst: Sonntag 2. Juli 2006, 16:32
von mawe
Hi!

Nach ewig langer Zeit versuche ich wieder mal etwas mit wxPython. Wie ich erkennen musste - ich kenn mich überhaupt nicht aus :) Egal.
Nun wollte ich mal etwas einfaches versuchen ... dann hab ich aber begonnen mit dem PopupControl herumzuspielen :)

Code: Alles auswählen

import  wx
import  wx.lib.popupctl as  pop

class TestPopupControl(pop.PopupControl):
    def __init__(self,*_args,**_kwargs):
        apply(pop.PopupControl.__init__,(self,) + _args,_kwargs)

        self.win = wx.Window(self,-1,pos = (0,0),style = 0)
        self.lala = TestControl(self.win, -1, (0,0))

        bz = self.lala.GetBestSize()
        self.win.SetSize(bz)

        # This method is needed to set the contents that will be displayed
        # in the popup
        self.SetPopupContent(self.win)

class TestControl(wx.Panel):
    def __init__(self, parent, id, pos):
        wx.Panel.__init__(self, parent, id, pos)
        b = wx.Button(self, -1, "hello")

class TestPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, -1)
        date = TestPopupControl(self, -1, pos = (30,30), size = (100,22))


app = wx.PySimpleApp()
f = wx.Frame(None, -1)
t = TestPanel(f)
f.Show()
app.MainLoop()
Na gut. Viel mehr ist noch nicht rausgekommen. Also die Fragen:
1. Warum wird der Button aus dem TestControl nicht angezeigt?
2. Wie mache ich es, dass, wenn ich auf den Button klicke, irgendetwas (vorläufig irgendetwas) in das Feld von dem PopupControl geschrieben wird.

Bin für jeden Hinweis dankbar.

Gruß, mawe

Re: wx.PopupControl

Verfasst: Montag 3. Juli 2006, 09:27
von Francesco
Hallo mawe,

Wenn ich die Init Methode vom TestPopupControl ändere, geht es.
Es scheint so, dass man keine extra wx.Window braucht.

Code: Alles auswählen

class TestPopupControl(pop.PopupControl):
    def __init__(self,*_args,**_kwargs):
        apply(pop.PopupControl.__init__,(self,) + _args,_kwargs)

        #self.win = wx.Window(self,-1,pos = (0,0),style = 0)
        self.win = TestControl(self, -1, (0,0))

        bz = self.win.GetBestSize()
        self.win.SetSize(bz)

        # This method is needed to set the contents that will be displayed
        # in the popup
        self.SetPopupContent(self.win)

Verfasst: Montag 3. Juli 2006, 10:03
von mawe
Hi Francesco,

wunderbar, seltsam, aber es funktioniert :)

Weisst Du vielleicht auch etwas wegen meiner 2. Frage? Muss ich mir da einen eigenen Event generieren, oder geht das auch anders?

Gruß, mawe

Verfasst: Montag 3. Juli 2006, 11:54
von pr0stAta
Hi Mawe,
du kannst über

Code: Alles auswählen

        b = wx.Button(self, -1, "hello")
        self.Bind(wx.EVT_BUTTON, self.ausgabe)
das Event des Buttons abfragen und über

Code: Alles auswählen

       self.SetValue("TEST")
Text einfügen. Durch deine Klassenkonstruktion kriege ich das aber
gerade nicht eingebaut :)