Frage zu wx.EVT_*

Plattformunabhängige GUIs mit wxWidgets.
Antworten
BaseBallBatBoy
User
Beiträge: 15
Registriert: Mittwoch 18. April 2007, 13:21

Freitag 27. April 2007, 13:06

hi!

ich möchte ein textfeld auf einem grid erstellen, wo man was eingibt und danach per enter den string übergibt. nur, wie sieht der wx.EVT_* dazu aus? hier mal mein code

Code: Alles auswählen

self.txt = wx.TextCtrl(panel, 1, '',  style=wx.TE_LEFT)
        grid.Add(self.txt, pos=(0,0), flag=wx.EXPAND)

.........

self.txt.Bind(wx.EVT_???????????, self.OnAddTxt, id=1)
also bei mir wird das textfeld angezeigt und auch onaddtxt macht was es soll. es ist einfach noch die frage, wie der EVT_* aussehen muss...
kann mir da jemand helfen?
ps: wenn ihr ne page kennt, wo alle EVT_* aufgelistet sind, wäre ich euch dankbar, denn bei mir im eclipse geht die autocompletion für wx. leider nicht (ctrl + space).
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Freitag 27. April 2007, 15:02

BaseBallBatBoy hat geschrieben:per enter den string übergibt.
Hi BBBB!

Mir ist evt. nicht ganz klar was du machen möchtest. Ist es so etwas?

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import wx

wx.SetDefaultPyEncoding("iso-8859-15")


class MyFrame(wx.Frame):
    
    def __init__(
        self, parent = None, id = -1, title = "Example", size = wx.Size(550, 420)
    ):
        
        wx.Frame.__init__(self, parent, id, title, size = size)
        
        panel = wx.Panel(self)
        self.panel = panel
        
        vbox_main = wx.BoxSizer(wx.VERTICAL)
        panel.SetSizer(vbox_main)
        
        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox_main.Add(vbox, 1, wx.EXPAND | wx.ALL, 5)
        
        # Label1
        self.my_label1 = wx.StaticText(panel)
        self.my_label1.SetBackgroundColour("yellow")
        vbox.Add(self.my_label1, 1, wx.EXPAND | wx.ALL, 5)
        
        # Label2
        message = (
            u"Geben Sie etwas in das Textfeld ein und drücken Sie ENTER "
            u"um den Text in das gelbe Label1 zu übernehmen."
        )
        my_label2 = wx.StaticText(panel, label = message)
        my_label2.Wrap(300)
        vbox.Add(my_label2, 0, wx.EXPAND | wx.ALL, 5)
        
        # Textctrl
        self.txtctrl = wx.TextCtrl(panel, style = wx.TE_PROCESS_ENTER)
        vbox.Add(self.txtctrl, 0, wx.EXPAND | wx.ALL, 5)
        self.txtctrl.Bind(wx.EVT_TEXT_ENTER, self.update_labeltext)
        
        # Layout
        panel.Fit()
        self.Fit()
        self.SetSizeHintsSz(self.GetSize())
    
    
    def update_labeltext(self, event = None):
        self.my_label1.SetLabel(self.txtctrl.GetValue())
        self.panel.Layout()
        event.Skip()


def main():
    """Testing"""
    
    app = wx.PySimpleApp()
    f = MyFrame()
    f.Center()
    f.Show()
    app.MainLoop()


if __name__ == "__main__":
    main()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BaseBallBatBoy
User
Beiträge: 15
Registriert: Mittwoch 18. April 2007, 13:21

Montag 30. April 2007, 07:54

genau! wx.EVT_TEXT_ENTER und wx.TE_PROCESS_ENTER, das ist es!
danke!
nur: gibts irgendwo ne liste wo all die EVT und TE aufgelistet sind, dass man da auch schneller das passende findet (ich will ja nicht jedes mal einen thread schreiben müssen...)?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 30. April 2007, 08:13

BaseBallBatBoy hat geschrieben:gibts irgendwo ne liste wo all die EVT und TE aufgelistet sind
Hi BBBB!

- http://wxwidgets.org/manuals/stable/wx_wxtextctrl.html
- http://wxwidgets.org/manuals/stable/wx_classref.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten