Seite 1 von 1

Events, die nicht funktionieren

Verfasst: Samstag 19. September 2009, 10:46
von Dav1d
Ich komme bei events nicht weiter, ich habe einen Dialog erzeugt:

Zum Aufrufen:

Code: Alles auswählen

#!/usr/bin/python

from wx import App
from startdialog import Startdialog

app = App(redirect=False)
dial = Startdialog(None, -1, 'test')
dial.ShowModal()
dial.Destroy()
app.MainLoop()

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import wx
import imag
from voktrainer import listctrl

class Startdialog(wx.Dialog):
      def __init__ (self, parent, id, title):
          wx.Dialog.__init__(self, parent, id, title, size=(580, 350))

            
          vonnach = ['Deutsch->Englisch', 'Englisch->Deutsch']
          anzahlvok = ['10', '20', '30', '50', '100', '150', '200', '500', 'Alle']         

          panel = wx.Panel(self, -1)

          vbox = wx.BoxSizer(wx.VERTICAL)
          hbox1 = wx.BoxSizer(wx.HORIZONTAL)
          hbox2 = wx.BoxSizer(wx.HORIZONTAL)
          hbox3 = wx.BoxSizer(wx.HORIZONTAL)
                   
          # StaticBox
          box = wx.StaticBox(self, -1, 'Einstellungen')
          bsizer = wx.StaticBoxSizer(box, wx.VERTICAL)
          fgs = wx.FlexGridSizer(2, 3, 20, 80)
          fgs.Add(wx.StaticText(self, -1, 'Übersetzten von:'), 1)
          fgs.Add(wx.StaticText(self, -1, 'Wie viele Vokabeln?'), 1)
          fgs.Add(wx.StaticText(self, -1, 'Durcheinander Abfragen?'), 1)
          fgs.Add(wx.ComboBox(self, 11, 'Deutsch->Englisch', choices=vonnach, style=wx.CB_READONLY), 1)
          fgs.Add(wx.ComboBox(self, 12, 'Alle', choices=anzahlvok, style=wx.CB_DROPDOWN), 1)
          fgs.Add(wx.CheckBox(self, 13, 'Ja?', style=wx.ALIGN_RIGHT), 1)
          bsizer.Add(fgs, 1)
          # hbox1
          hbox1.Add(bsizer, 1)
          vbox.Add(hbox1, 1, wx.ALIGN_CENTER | wx.ALL, 10)
          
          # fgs2
          fgs2 = wx.FlexGridSizer(2, 3, 5, 5)
          bmp = imag.deutschland.GetBitmap()
          fgs2.Add(wx.StaticBitmap(self, -1, bmp, (80, 50), (bmp.GetWidth(), bmp.GetHeight())), 0, wx.LEFT | wx.RIGHT, 10)
          self.textctrl2 = wx.TextCtrl(self, -1, size=(359, -1))
          fgs2.Add(self.textctrl2, 1, wx.ALL, 5)
          fgs2.Add(wx.Button(self, 21, 'Schließen'), 1, wx.ALL, 4)
          bmp = imag.england.GetBitmap()
          fgs2.Add(wx.StaticBitmap(self, -1, bmp, (80, 50), (bmp.GetWidth(), bmp.GetHeight())), 0, wx.LEFT | wx.RIGHT, 10)
          self.textctrl3 = wx.TextCtrl(self, -1, size=(359, -1))
          fgs2.Add(self.textctrl3, 1, wx.ALL, 5)
          fgs2.Add(wx.Button(self, 22, 'Weiter'), 1, wx.ALL, 4)
          vbox.Add(fgs2, 1)
          
          # hbox2
          self.listctrl2 = listctrl(self, -1, style=wx.LC_REPORT | wx.LC_SORT_ASCENDING | wx.LC_SINGLE_SEL | wx.LC_NO_HEADER, cols=[('', 10), ('', 100), ('', 100)])           
          hbox2.Add(self.listctrl2, 24)
          # StaticBox 2
          box2 = wx.StaticBox(self, -1, 'Info')
          bsizer2 = wx.StaticBoxSizer(box2, wx.VERTICAL)
          fgs2 = wx.FlexGridSizer(4, 2, 2, 12)
          fgs2.Add(wx.StaticText(self, -1, 'Minuten:'), 1)
          self.time = wx.StaticText(self, -1, '0.00')
          fgs2.Add(self.time, 1)
          fgs2.Add(wx.StaticText(self, -1, 'Richtig:'), 1)
          self.richtig = wx.StaticText(self, -1, '0')
          fgs2.Add(self.richtig, 1)
          fgs2.Add(wx.StaticText(self, -1, 'Falsch:'), 1)
          self.falsch = wx.StaticText(self, -1, '0')
          fgs2.Add(self.falsch, 1)
          fgs2.Add(wx.StaticText(self, -1, 'Verbleibend:'))
          self.verbleibend = wx.StaticText(self, -1, 'Alle')
          fgs2.Add(self.verbleibend, 1)
          bsizer2.Add(fgs2, 1)
          hbox2.Add(bsizer2, 7, wx.LEFT, 10)
          vbox.Add(hbox2, 1, wx.EXPAND | wx.LEFT | wx.RIGHT, 10)
          
          self.SetSizer(vbox)         
          
          self.Bind(wx.EVT_TEXT, self.on_select_abfrage, id=11)
          self.Bind(wx.EVT_TEXT, self.on_select_anzahl, id=12)
          self.Bind(wx.EVT_CHECKBOX, self.on_durcheinander, id=13)
          
          self.Bind(wx.EVT_BUTTON, self.on_schliesen, id=21)
          self.Bind(wx.EVT_BUTTON, self.on_weiter, id=22)
          
          self.Bind(wx.EVT_CLOSE, self.on_quit)
          
          self.Centre()
          #self.ShowModal()

          def on_select_abfrage(self, event):
              pass
          def on_select_anzahl(self, event):
              pass
          def on_durcheinander(self, event):
              pass
          def on_weiter(self, event):
              pass
          def on_schliesen(self, event):
              pass
          def on_quit(self):
              print 'wtf'
              self.Close()
die Listctrl für den Import:

Code: Alles auswählen

class listctrl(wx.ListCtrl, wx.lib.mixins.listctrl.ListCtrlAutoWidthMixin, wx.lib.mixins.listctrl.TextEditMixin):
    def __init__(self, parent, ID, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, editable=False, cols=[('Vokabel-', 200), ('liste', 160), ('laden', wx.LIST_AUTOSIZE)]):
        wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
        
        wx.lib.mixins.listctrl.ListCtrlAutoWidthMixin.__init__(self)
        self.cols = cols
        self.Columns()
        if editable:
            wx.lib.mixins.listctrl.TextEditMixin.__init__(self)

    def Columns(self):
        c = 0
        for col, size in self.cols:
            self.InsertColumn(c, col)   
            self.SetColumnWidth(c, size)
            c += 1

        #self.currentItem = 0
und die import imag:

Code: Alles auswählen

from wx.lib.embeddedimage import PyEmbeddedImage

# ***************** Catalog starts here *******************

catalog = {}
index = []

#----------------------------------------------------------------------
england = PyEmbeddedImage(
    "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")
index.append('england')
catalog['england'] = england
getenglandData = england.GetData
getenglandImage = england.GetImage
getenglandBitmap = england.GetBitmap

#----------------------------------------------------------------------
deutschland = PyEmbeddedImage(
    "iVBORw0KGgoAAAANSUhEUgAAADIAAAAhCAMAAACsowi2AAAAAXNSR0IArs4c6QAAAARnQU1B"
    "AACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAA"
    "AwBQTFRF/70Y/wAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
    "AAAAAAAAAAAAAAAAAAAAAAAAgFaMTgAAAC5JREFUOE/t0KEBAAAMgzC6/4/eDbiK4jHhdOjj"
    "tlizXrHo0Ee2WLNeMdYEhMADopwGcyT5Fm8AAAAASUVORK5CYII=")
index.append('deutschland')
catalog['deutschland'] = deutschland
getdeutschlandData = deutschland.GetData
getdeutschlandImage = deutschland.GetImage
getdeutschlandBitmap = deutschland.GetBitmap

Jetzt der Fehler:

Code: Alles auswählen

C:\Python26\code\projekte\Vokabeltrainer>startdialogtest.py
Traceback (most recent call last):
  File "C:\Python26\code\projekte\Vokabeltrainer\startdialogtest.py", line 9, in
 <module>
    dial = Startdialog(None, -1, 'test')
  File "C:\Python26\code\projekte\Vokabeltrainer\startdialog.py", line 77, in __
init__
    self.Bind(wx.EVT_TEXT, self.on_select_abfrage, id=11)
AttributeError: 'Startdialog' object has no attribute 'on_select_abfrage'
ich weis echt nicht an was es liegen könnte

Verfasst: Samstag 19. September 2009, 11:52
von BlackJack
@Dav1d: Die Fehlermeldung verrät doch woran es liegt: Du hast in der Klasse keine `on_select_abfrage()` definiert. Schau mal *genau* hin *wo* Du die definiert hast.

Verfasst: Samstag 19. September 2009, 12:04
von Dav1d
oh mann wie ich mich schäme

danke, manchmal sieht man den wald vor lauter Bäumen nicht (jetzt versteh ich die Wendung auch)