Python 3 und Tix

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
baracuda
User
Beiträge: 21
Registriert: Mittwoch 5. November 2008, 13:08

Hi!

Mal eine relativ unkomplizierte Frage... ich werde aus der Tix-Dokumentation einfach nicht schlau!
Ich wollte mir die erweiterten Tkinter Widgets mal ansehen, und einen einfachen Fortschrittsbalken programmieren (wenn man von "programmieren" überhaupt reden darf):

Code: Alles auswählen

from tkinter import tix
root = tix.Tk()
bar = tix.Meter(root, value=0.0)
Damit hörts dann schon auf. Ich konnte zum Beispiel aus der Doku auch keine Liste der benötigten Parameter ausmachen.
Folgender Error-Code:

Code: Alles auswählen

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    bar = tix.Meter(root)
  File "C:\Python30\lib\tkinter\tix.py", line 1130, in __init__
    ['options'], cnf, kw)
  File "C:\Python30\lib\tkinter\tix.py", line 296, in __init__
    for k,v in cnf.items()[:]:
TypeError: 'dict_items' object is unsubscriptable
Danke im Voraus
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Da hast du einen Bug in tix aufgespürt:
In Python 2.x hat dict.items() eine Liste zurückgeliefert, in Python 3.0 ist es aber eine "view" und da lässt sich die "slice-notation" nicht anwenden.

Also: Entweder Python 2.x verwenden oder den Fortschrittsbalken selbst implementieren (ist soooo schwierig auch nicht) oder tix an der Stelle reparieren ...
baracuda
User
Beiträge: 21
Registriert: Mittwoch 5. November 2008, 13:08

Danke...

hoffentlich wirds bald gefixt.
Ich habe sowieso das Gefühl, dass Python 3 noch nicht bei allen so angekommen ist. Ich habe mir überlegt, auch mal PyGTK zu verwenden.
Aber das funktioniert bis jetzt auch nur mit 2.x .

lg
BlackJack

Das Gefühl dürfte begründet sein. Ich bin immer noch bei Python 2.5 und das wird sich so schnell auch nicht ändern. Bis zum Jahresende vielleicht 2.6 -- mal sehen.
Antworten