optimale Tkinter imports für Python 2 und 3...

Fragen zu Tkinter.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Meine aktuelle Strategie ist es, imports in Python 2 so hinzubiegen, das der Namensraum wie mit Python 3 aussieht.

Bei TkInter gab es eine Menge Umgestaltungen.
Einen Überblick gibt es u.a. hier: http://docs.pythonsprints.com/python3_p ... ganization

Tk Unterschiede:

Code: Alles auswählen

Python 2	Python 3

Dialog 		tkinter.dialog
FileDialog 	tkinter.FileDialog
ScrolledText 	tkinter.scolledtext
SimpleDialog 	tkinter.simpledialog
Tix 		tkinter.tix
Tkconstants 	tkinter.constants
Tkdnd 		tkinter.dnd
tkColorChooser 	tkinter.colorchooser
tkCommonDialog 	tkinter.commondialog
tkFileDialog 	tkinter.filedialog
tkFont 		tkinter.font
tkMessageBox 	tkinter.messagebox
tkSimpleDialog 	tkinter.simpledialog

Wenn man nicht six nutzt, muß man sich selber darum kümmern. Wobei ich auch, wenn six dabei ist, nicht deren "from six.moves" mache. Irgendwie gefällt mir das nicht so besonders...

Also habe ich nun sowas gemacht:

Code: Alles auswählen

try:
    # Python 3
    import tkinter
except ImportError:
    # Python 2
    import Tkinter as tkinter

    from ScrolledText import ScrolledText as __scrolledtext
    tkinter.scrolledtext = __scrolledtext

    import tkFont as __tkFont
    tkinter.font = __tkFont
Was haltet ihr davon?


Btw. Sollte man nicht eigentlich mal anregen, das bei TkInter Beispielen auf Sternchen-Imports verzichtet wird?!?
Bei https://docs.python.org/3.4/library/tki ... er-modules steht immer noch:
...to use Tkinter all you need is a simple import statement:

import tkinter

Or, more often:

from tkinter import *
Warum dieses zweite Beispiel?

Besprechen könnte man auch das "Hello World" Beispiele von https://docs.python.org/3.4/library/tki ... ld-program welches import tkinter as tk macht, anstatt tkinter immer auszuschreiben.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Was hast Du gegen `six`? Und insbesondere: Warum wenn man `six` verwendet, trotzdem selbst eine alternative zu `six.moves` basteln? Alternativ könntest Du Dir `future` ansehen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich nutzte six schon, allerdings nur in Projekten, aber z.B. nicht bei so kleinen Beispielen.

Wobei ich auch in Projekten, die six beinhalten bisher nicht die six.moves genutzt habe. Vielleicht sollte ich mir das mal angewöhnen ;)

In future gibt es doch keine Import-Anpassungen: https://docs.python.org/2.7/library/__future__.html
Oder meinst du was anderes?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Eine Moeglichkeit:

Code: Alles auswählen

try:
    # Python2
    import Tkinter as tk
    import Tix as tix
    import ttk
    import tkFont as tkf
    import tkColorChooser as tkcc 
    import tkFileDialog as tkfd
    import tkSimpleDialog as tksd
except ImportError:
    # Python3
    import tkinter as tk
    import tkinter.tix as tix
    import tkinter.ttk as ttk
    import tkinter.font as tkf
    import tkinter.colorchooser as tkcc
    import tkinter.filedialog as tkfd
    import tkinter.simpledialog as tksd

Atomkraftwerkaktienbesitzer
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Solche Abkürzungen sind nicht so meins...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Ene Uran
User
Beiträge: 125
Registriert: Sonntag 17. September 2006, 20:14
Wohnort: Hollywood

Schade!
Atomkraftwerkaktienbesitzer
Antworten