Frage allgemein zu Tkinter

Fragen zu Tkinter.
Antworten
Dietervomdach
User
Beiträge: 4
Registriert: Montag 27. Januar 2020, 20:37

Hallo zusammen,
ich bin ein absuluter Anfänger und habe eine Frage zum Importieren von tkinter.
Bis jetzt habe ich zwei Möglichkeiten kennen gelernt.
1. Import tkinter
2. From tkinter import*

Was macht hier genau den Unterschied ?
Zum Andern habe ich gelesen, daß man die 2. Art des Importierens auf keinen Fall verwenden soll.
Warum ?

Würde mich über eine Antwort freuen, die auch ich als Anfänger verstehen kann

vielen Dank im Voraus
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Du kannst beim Importieren bestimmen wie die Namensräume aufgeteilt werden. Üblich ist

Code: Alles auswählen

import tkinter as tk
.

Der Unterschied ist einfach:

import tkinter -> Du importiest das tkinter-Modul unter seinem Namen. Du sprichst die darin enthaltenen Funktionen/Klassen mit tkinter.name an. (Beispiel: tkinter.Frame)

from tkinter import * -> Du holst die unglaublich viele Namen in deinen Namensraum. Sie sind nicht mehr in dem Modul tkinter isoliert. Bei tkinter sind das über hundert. Überschreibst du versehentlich einen Namen, kann das seltsame Auswirkungen haben, die schwer zu debuggen sind. (Beispiel: Frame; Wo kommt das Frame her? Und wenn du eine eigene Klasse Frame in dem Namensraum anlegst, wird es... schwierig)

import tkinter as tk -> Du importierst tkinter als "tk" und kannst mit tk.name auf dessen Funktionen und Klassen zugreifen. (Beispiel: tk.Frame)


Glaub mir, du möchtest das erste oder das letzte.
Dietervomdach
User
Beiträge: 4
Registriert: Montag 27. Januar 2020, 20:37

vielen Dank für die so schnelle Antwort.
Mal gespannt wie oft ich noch fragen muß bis das erste Fenster funktioniert
Dietervomdach
User
Beiträge: 4
Registriert: Montag 27. Januar 2020, 20:37

Hab das mit "Import tkinter as tk " ausprobiert, funktioniert nicht, gibt eine Fehlermeldung aus, "tk nicht bekannt"
Sirius3
User
Beiträge: 18289
Registriert: Sonntag 21. Oktober 2012, 17:20

Wie sieht der Code aus und die komplette Fehlermeldung?
Dietervomdach
User
Beiträge: 4
Registriert: Montag 27. Januar 2020, 20:37

import tkinter as tk

def fenster() :
global neu
neu = tk.Toplevel(main)
tk.Button(neu , text = " Ende Neu " , command = endeneu) . pack()

def endeneu() :
neu.destroy

def ende() :
main destroy

main.tk
tk.Button(main , text = "Neu , command = fenster). pack()
tk.Button(main , text = "Neu , command = fenster). pack()

main.mainloop()
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Der code muss in code-Tags. Dazu im vollstaendigen Editor den </>-Knopf druecken.

Und die Fehlermeldung fehlt auch noch.
Sirius3
User
Beiträge: 18289
Registriert: Sonntag 21. Oktober 2012, 17:20

Der Code kommt nichtmal am Compiler vorbei, denn »main destroy« ist ein SyntaxError.
Benutzeravatar
__blackjack__
User
Beiträge: 14087
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und ``global`` bitte sofort wieder vergessen. Methoden und Funktionen bekommen alles was sie ausser Konstanten brauchen als Argument(e) übergeben und Ergebnisse werden an den Aufrufer zurückgegeben oder in einem Objekt als Attribut gespeichert. Bei GUI-Programmierung kommt man nicht um objektorientierte Programmierung herum. Und die sollte man IMHO können bevor man mit GUIs und der damit einhergehenden ereignisbasierten Programmabläufe gleich zwei Themenfelder aufmacht.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten