wx.PopupControl

Plattformunabhängige GUIs mit wxWidgets.
Antworten
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

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)
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

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 :)
Antworten