[gelöst] Event-Problem
Verfasst: Montag 12. Januar 2009, 13:52
Hallo Miteinander,
ich habe ein kleines Problem mit events, im u.g. Programm (bereits auf das Wesentliche gekürzt) wird über
(falls die Erklärung zu spartanisch ist, bitte melden, dann erläutere ich das etwas genauer)
ich habe ein kleines Problem mit events, im u.g. Programm (bereits auf das Wesentliche gekürzt) wird über
eine Holzsorte ausgewählt, dabei wird inself.comboboxSorte
die Liste der verfügbaren Holzklassen geändert. Wenn ich dann inself.choice_klasse
eine Auswahl treffe, wird durch diesen Event auch die Wahl davor geändert (was aber nicht sein soll..) ich habe versucht mit verschiedenen event-Namen (event1 usw) das Problem zu lösen, geht aber nicht. Leider stehe ich gehörig auf dem Schlauch und brauche Eure Hilfe:self.comboboxKLED
(falls die Erklärung zu spartanisch ist, bitte melden, dann erläutere ich das etwas genauer)
Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
from __future__ import division
import wx
wx.SetDefaultPyEncoding("iso-8859-15")
class LeftPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent,style=wx.TAB_TRAVERSAL | wx.BORDER_RAISED)
self.SetBackgroundColour(wx.Colour(240,240,240))
"""Es wird der Gridbagsizer erzeugt, in den die Entrys platziert werden"""
box=wx.BoxSizer()
gbs = self.gbs = wx.GridBagSizer(1, 10)
box.Add(gbs, 0, wx.ALL, 10)
self.SetSizerAndFit(box)
"""Es werden die Entrys erzeugt, sowie deren Bezeichnungen"""
self.cbSorte=('Nadelholz NH', 'Laubholz LH', 'Brettschichtholz BSH')
gbs.Add(wx.StaticText(self, -1, 'Holzsorte'),(0,0), (1,3), wx.ALIGN_LEFT | wx.ALL, 5)
gbs.Add(wx.StaticText(self, -1, 'Sorte:'),(1,0),(1,1),wx.ALIGN_RIGHT | wx.ALL, 5)
# This ComboBox is created with a preset list of values.
self.comboboxSorte = wx.ComboBox(self, 500, 'Nadelholz NH', wx.DefaultPosition,
(150, -1), self.cbSorte,
wx.CB_DROPDOWN)
gbs.Add(self.comboboxSorte, (1,1),(1,2) )
self.Festigkeitsklasse=['C14','C16','C18','C20','C22','C24','C27','C30','C35','C40','C45','C50']
self.text10=wx.StaticText(self, -1, 'Festigkeitsklasse')
gbs.Add(self.text10,(0,3), (1,3), wx.ALIGN_LEFT | wx.ALL, 5)
self.text11=wx.StaticText(self, -1, 'Klasse:')
gbs.Add(self.text11,(1,3),(1,1),wx.ALIGN_RIGHT | wx.ALL, 5)
# This Choice is created with a preset list of values. #self.reihengroesse[0]
self.choice_klasse = wx.Choice(self, -1,(80, -1), choices =self.Festigkeitsklasse)
gbs.Add(self.choice_klasse, (1,4),(1,2) )
cbKLED=('ständig (länger als 10 Jahre)', 'lang (6 Monate bis 10 Jahre)', 'mittel (1 Woche bis 6 Monate)','kurz. (kürzer als eine Woche)','sehr kurz (kürzer als eine Minute)')
gbs.Add(wx.StaticText(self, -1, 'Klassen der Lasteinwirkungsdauer (KLED):'),(8,0), (1,3), wx.ALIGN_LEFT | wx.ALL, 5)
gbs.Add(wx.StaticText(self, -1, 'KLED:'),(9,0),(1,1),wx.ALIGN_RIGHT | wx.ALL, 5)
# This ComboBox is created with a preset list of values.
self.comboboxKLED = wx.ComboBox(self, 500, 'mittel (1 Woche bis 6 Monate)', wx.DefaultPosition,
(260, -1), cbKLED,
wx.CB_DROPDOWN)
gbs.Add(self.comboboxKLED, (9,1),(1,6) )
self.calcbtn = wx.Button(self, -1, u'Berechnung',size=(200,35) )
gbs.Add(self.calcbtn, (11,0),(1,6) )
ID_TC = wx.NewId()
class holz(wx.Frame):
def __init__(self, parent = None,id=-1, title = "Materialkennwerte für Holz", size = wx.Size(900, 700)):
wx.Frame.__init__(self, parent,id, title, size = size)
#MainPanel
main_panel = wx.Panel(self,-1)
vbox = wx.BoxSizer(wx.VERTICAL)
main_panel.SetSizer(vbox)
box2=wx.BoxSizer(wx.HORIZONTAL)
# EingabePanel
self.left_panel=LeftPanel(main_panel)
box2.Add(self.left_panel, 2, wx.EXPAND)
self.left_panel.Bind(wx.EVT_COMBOBOX, self.EvtComboBoxSorte, self.left_panel.comboboxSorte)
self.left_panel.Bind(wx.EVT_CHOICE, self.EvtChoiceKlasse,self.left_panel.choice_klasse)
self.left_panel.Bind(wx.EVT_COMBOBOX, self.EvtComboBoxKLED, self.left_panel.comboboxKLED)
self.left_panel.Bind(wx.EVT_BUTTON,self.onCalc, self.left_panel.calcbtn)
self.comboboxSorte_select=0
self.comboboxKLED_select=2
vbox.Add(box2,1,wx.EXPAND)
self.Show()
def EvtComboBoxSorte(self, event1):
self.comboboxSorte_select=event1.GetSelection()
# Fensteraufbau sperren
self.Freeze()
FkNH=['C14','C16','C18','C20','C22','C24','C27','C30','C35','C40','C45','C50']
FkLH=['D30','D35','D40','D50','D60','D70']
FkBSH=['GL24h','GL24c','GL28h','GL28c','GL32h','GL32c','GL36h','GL36c']
if self.comboboxSorte_select==0:
self.left_panel.Festigkeitsklasse=FkNH
elif self.comboboxSorte_select==1:
self.left_panel.Festigkeitsklasse=FkLH
else:
self.left_panel.Festigkeitsklasse=FkBSH
self.left_panel.choice_klasse.Clear()#self.left_panel.reihengroesse)
self.left_panel.choice_klasse.AppendItems(self.left_panel.Festigkeitsklasse)
# Fensteraufbau entsperren
self.Thaw()
self.left_panel.gbs.Layout()
#event1.Skip()
def EvtChoiceKlasse(self, event1):
self.choice_selected_klasse=event1.GetString()
print self.choice_selected_klasse
event1.Skip()
def EvtComboBoxKLED(self, event2):
self.comboboxKLED_select=event2.GetSelection()
print self.comboboxKLED_select
event2.Skip()
def onCalc(self,event):
Sorte = self.left_panel.cbSorte[self.comboboxSorte_select]
Fk=self.choice_selected_klasse
i = self.left_panel.Festigkeitsklasse.index(self.choice_selected_klasse)
self.holz=Sorte+' '+Fk
print self.holz
def main():
"""Main"""
app = wx.App()
f = holz()
f.Center()
f.Show()
app.MainLoop()
if __name__ == "__main__":
main()