[Python-de] Problem mit Checkbutton in der Objektorientierung

Martin Grabbel mgrabbel at web.de
Thu May 15 16:30:51 EDT 2003


Hi Liste!

Ich habe mir ein Klasse geschrieben, in der mir eine Methode
wahlweise Radiobuttons oder Checkbuttons, auch in Kombination,
erzeugen soll. Mit den Radiobuttons ist dieses auch kein Problem.
Da ich möchte, daß man beliebige Checkbuttons anklicken kann, müssen
diesen jeweils eigene Variablen zugewiesen werden, wo ich leider
nicht rauskriege, wie ich das am besten lösen kann. Vielleicht kann
mir hier ja jemand helfen.
Hier einmal meine Klasse und wie ich sie aufrufe:

### Class Auswahl: Enthält Methoden für TKinter
class auswahl:
  def radiocheck (self,label,allObjects):
    # Frame für Objekte erzeugen
    personalFrame = Frame (mainwindow)
    personalFrame.pack (side=LEFT, fill=X, expand=1)
    # Label erzeugen
    personalLabel = Label (personalFrame, text=label)
    personalLabel.pack (side=TOP, anchor=W)
    # alle Radiobuttons einer Variable zuweisen
    self.radioObject = StringVar()
    for i in allObjects:
      # Radiobuttons erzeugen
      if i[1] == "r":
        self.oneObject = Radiobutton (personalFrame, text=i[0],
variable=self.radioObject, value=i[0])
        self.oneObject.pack (side=TOP, anchor=W)
      # Checkbuttons erzeugen
      if i[1] == "c":
        ## Hier ist das Problem: Wenn es so stehen bleibt,
überschreibt er sich immer selbst. Ein Array wäre hier vielleicht
die Lösung, aber wie? 
        self.checkObject = StringVar()
        self.oneObject = Checkbutton (personalFrame, text=i[0],
variable=self.checkObject, onvalue=i[0], offvalue="")
        self.oneObject.pack (side=TOP, anchor=W)
  def pulldown (self,label,allObjects):
    personalMenu = Menu (menubar)
    for i in allObjects:
      if i[0] == "":
        personalMenu.add_separator()
      else:
        personalMenu.add_command(label=i[0], command=eval(i[1]))
    menubar.add_cascade(label=label, menu=personalMenu)

### Checkbuttons für Genre erzeugen
global objectGenreList,genreList
objectGenreList = (('Komödie','c'),('Horror','c'),('Drama','c'))
genreList = auswahl()
genreList.radiocheck('Genre:',objectGenreList)

Gruß,

Martin




More information about the Python-de mailing list