servuzmaxguat

Tkinter unter MacOS X und Arabisch (Teil II)

In Apple, OS X, python on Februar 9, 2008 at 12:11

Ich präzisiere mal meine Anfrage mit einer kleinen Fehlersuche. Das Ergebnis vorweg: Tkinter (hää, welche überhaupt?) unter MacOS X (10.5) funktioniert wohl nicht richtig:

1. Schritt – Das simpelste aller Tkinter-Skripte:


#!/usr/bin/pythonw
# -*- coding: utf-8 -*-
from Tkinter import *
root = Tk()
root.tk.call(’encoding’, ’system’, ‘utf-8′)
#1. Zeile
l_arabi = Label(root, text=”That’s not arabic!”)
l_arabi.grid(row=0, columnspan=2, sticky=W)
#2. Zeile
e_arabi = Entry(root, width=15)
e_arabi.grid(row=1, column=0, sticky=W)
root.mainloop()

Wrong arabic letters in Tkinter
Obenstehender Code erzeugt ein einfaches Fenster mit einem Label und einem Entry-Widget. Stellt man die Tastaturbelegung vom Mac auf Arabisch und tippt in das Entry-Field kommen wieder falsche Zeichen.

2. Vergleich: Texteingabe in IDLE und Textedit

Da IDLE – die Python eigene IDE – selbst in Tkinter geschrieben ist, lohnt sich ein Blick auf deren Verhalten. Tatsächlich zeigt es den gleichen Fehler:

Wrong arabic letters in Tkinter/IDLE

Hingegen zeigt Textedit, die Buchstaben korrekt an:

Korrekte Darstellung des SourceCodes in TextEdit

Zusätzlich kann man zur Verwendung von IDLE noch festellen:

  • Copy & Paste in andere Applikationen funktioniert nicht, zumindest mit den Tasten.
  • F5 zum Auslösen des Skripts funktioniert nicht, da mit Ton-Lauter-Stellen belegt.

Schlussfolgerung:

  • Plattformübergreifende Entwicklung ist mit Tkinter in diesem Fall nicht möglich, da man einem unbedarften Benutzer nicht zumuten kann, wegen dieses einen Skriptes die tk-Bibliotheken upzudaten.
  • Also für jede Plattform eigene GUI erstellen: Die System-integrierte GUI fürn Mac gibt’s mit den Developer Tools.
  1. [...] python ·Getaggt Leopard, Mac OS X, python, Tkinter Ja, leider hat auf meine Fragen (I, II) in den entsprechenden Python-Mailingslists niemand geantwortet. Naja, … Per Suchmaschine [...]

All comments are screened for appropriateness. Commenting is a privilege, not a right. Good comments will be cherished, bad comments will be deleted.