Seite 1 von 1

Frage allgemein zu Tkinter

Verfasst: Montag 27. Januar 2020, 20:49
von Dietervomdach
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

Re: Frage allgemein zu Tkinter

Verfasst: Montag 27. Januar 2020, 21:08
von sparrow
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.

Re: Frage allgemein zu Tkinter

Verfasst: Montag 27. Januar 2020, 21:32
von Dietervomdach
vielen Dank für die so schnelle Antwort.
Mal gespannt wie oft ich noch fragen muß bis das erste Fenster funktioniert

Re: Frage allgemein zu Tkinter

Verfasst: Samstag 1. Februar 2020, 21:11
von Dietervomdach
Hab das mit "Import tkinter as tk " ausprobiert, funktioniert nicht, gibt eine Fehlermeldung aus, "tk nicht bekannt"

Re: Frage allgemein zu Tkinter

Verfasst: Samstag 1. Februar 2020, 21:16
von Sirius3
Wie sieht der Code aus und die komplette Fehlermeldung?

Re: Frage allgemein zu Tkinter

Verfasst: Samstag 1. Februar 2020, 21:29
von Dietervomdach
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()

Re: Frage allgemein zu Tkinter

Verfasst: Samstag 1. Februar 2020, 21:36
von __deets__
Der code muss in code-Tags. Dazu im vollstaendigen Editor den </>-Knopf druecken.

Und die Fehlermeldung fehlt auch noch.

Re: Frage allgemein zu Tkinter

Verfasst: Samstag 1. Februar 2020, 22:18
von Sirius3
Der Code kommt nichtmal am Compiler vorbei, denn »main destroy« ist ein SyntaxError.

Re: Frage allgemein zu Tkinter

Verfasst: Sonntag 2. Februar 2020, 00:06
von __blackjack__
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.