Zwei gleiche Klassen eine geht die andere nicht? [Python]

Funjoy

Erfahrenes Mitglied
Hallo,

Ich bin dabei Python zu lernen habe auch schon einiges erlernt jedoch bin ich jetzt bei der GUI Programmierung mit dem Modul Tkinter angekommen und habe ein kleines Problem.

Mithilfe des Moduls Tkinter und meinen schlauen Buch wollte ich ein Farbmischer der die Farben Rot, Grün und Blau michen kann (mit Checkbuttons), wie im Beispiel vom Buch nach programmieren (also abschreiben ^^).

Auf der CD vom Buch liegt das Beispiel vor, hier der Code:
Python:
#----------------------------------------------------
# Dateiname: farbmischer.pyw
#
# Objektorientierte Programmierung mit Python
# Kap. 15  
# Michael Weigend 8. 10. 03
#----------------------------------------------------
 
from Tkinter import *

class Farbmischer:
  def __init__(self):
    self.fenster = Tk()
    self.rot, self.gruen, self.blau=IntVar(), IntVar(), IntVar() #1
    self.check = []                                  #2
    for (farbe, var) in [('rot',self.rot), 
                         ('gr\xfcn',self.gruen),
                         ('blau',self.blau)]:
        self.check.append(Checkbutton(self.fenster,
                          text=farbe,
                          offvalue=0, onvalue=255,
                          variable=var,
                          command=self.mix))
    self.farbfeld = Label(self.fenster,width=20, height=6)
    self.farbfeld.pack(side=LEFT)                    #3
    for button in self.check:
        button.pack(side=RIGHT)
    self.fenster.mainloop()

  def mix(self):                                     #4
      summe='#'
      for farbe in (self.rot, self.gruen, self.blau):
          summe += str(hex(farbe.get())).lstrip('0x').zfill(2)
      self.farbfeld.config(bg=summe)                 #5

farbmischer = Farbmischer()

Das Script funktioniert einwandfrei.

Mein Script jedoch nicht :confused:

Hier mein Code:
Python:
#farbmischer.pyw
from Tkinter import *

class Farbmischer:
    def __init__(self):
        self.fenster = Tk()
        self.rot, self.gruen, self.blau = IntVar(), IntVar(), IntVar()
        self.check = []
        for (farbe, var) in [('rot', self.rot),
                             ('gr\xfcn', self.gruen),
                             ('blau', self.blau)]:
            self.check.append(Checkbutton(self.fenster,
                                          text=farbe,
                                          offvalue=0, onvalue=255,
                                          variable=var,
                                          command=self.mix))
            self.farbfeld = Label(self.fenster,width=20,height=6)
            self.farbfeld.pack(side=LEFT)
            for button in self.check:
                button.pack(side=RIGHT)
            self.fenster.mainloop()

    def mix(self):
        summe='#'
        for farbe in (self.rot, self.gruen, self.blau):
            summe += str(hex(farbe.get())).lstrip('0x').zfill(2)
        self.farbfeld.config(bg=summe)

farbmischer = Farbmischer()

Ich kann keinen Rechtschreibfehler oder ähnliches erkennen. Auch habe ich keinen Einrückungsfehler gefunden aber das Script gibt nur den Checkbutton Rot aus und nicht die anderen zwei Grün und Blau?

Folgende Fehlermeldung bekomm ich von Interpreter:
Traceback (most recent call last):
File "C:\Python24\pyUEbung\GUI\farbmischer.pyw", line 29, in -toplevel-
farbmischer = Farbmischer()
File "C:\Python24\pyUEbung\GUI\farbmischer.pyw", line 16, in __init__
command=self.mix))
File "C:\Python24\lib\lib-tk\Tkinter.py", line 2267, in __init__
Widget.__init__(self, master, 'checkbutton', cnf, kw)
File "C:\Python24\lib\lib-tk\Tkinter.py", line 1861, in __init__
self.tk.call(
TclError: can't invoke "checkbutton" command: application has been destroyed


Kann jedoch nichts damit Anfangen :(
In den Zeilen 29 und 16 kann ich keinen Fehler finden.

MfG Funjoy
 
Hallo,

Hat sich schon erledigt :D

Es war doch ein Einrückungsfehler. Die pack() Statemants von Label und Checkbutton waren noch mit in der Schleife :rolleyes:

Somit kann ich fortfahren mit mein Buch :)

MfG Funjoy
 

Neue Beiträge

Zurück