Der import von tkinter geht nicht ?!

Fragen zu Tkinter.
Antworten
Jonas.wklm
User
Beiträge: 6
Registriert: Freitag 18. Dezember 2020, 21:53

Hey,

bin noch sehr am Anfang meiner Python Karriere und habe schon einiges in mein Kopf bekommen.
Nun wollte ich mit tkinter ein GUI erstellen um später dann mal einen ganz einfachen Taschenrechner erstellen kann, soweit das den mit tkinter meinen Vorstellungen entspricht.

Doch irgendwie wird tkinter glaube ich zumindest, nicht importiert und daher werden folgende befehle auch nicht gehighlighted.

Bräuchte Hilfe damit das klappt. :D

Bild
Jonas.wklm
User
Beiträge: 6
Registriert: Freitag 18. Dezember 2020, 21:53

Bild Link vom Code:

https://ibb.co/pyhhPB9
Sirius3
User
Beiträge: 18289
Registriert: Sonntag 21. Oktober 2012, 17:20

Bitte Code als Text in Codetags (</> im vollständigen Editor) hier posten und nicht als Bild.
Benutze keine *-Importe.
Was ist denn die Fehlermeldung, die Du beim Ausführen bekommst?
Benutzeravatar
__blackjack__
User
Beiträge: 14085
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Jonas.wklm: Ist das Problem das Du `tkinter` nicht importieren kannst, oder das es `Label` & Co nicht gibt? Falls letzteres: Wie hast Du denn *Dein* Modul genannt? Nicht zufällig `tkinter`‽ 😉
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Jonas.wklm
User
Beiträge: 6
Registriert: Freitag 18. Dezember 2020, 21:53

Also wenn ich es ausführe kommt zwar das Hello World Fenster aber Tk und Label sind halt undefiniert aber in den Tutorial Videos mit demselben Code sind die beiden erkannt und gehighlighted das verwirrt mich.
Benutzeravatar
__blackjack__
User
Beiträge: 14085
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Jonas.wklm: Ich bin verwirrt von Deiner Beschreibung. Entweder `Tk` und `Label` sind undefiniert, dann kommt da aber kein Fenster, oder Du bekommst ein Fenster, dann sind sie aber definiert. Du sagst der Import von `tkinter` geht nicht, aber bekommst ein Fenster und zeigst hier keine Fehlermeldung samt Traceback.

Und was hat das Syntaxhighlighting in Deinem Editor oder Deiner IDE damit zu tun? Oder reden wir hier gar nicht von einem Problem mit Python oder Deinem Code sondern eigentlich von Deiner IDE?
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Jonas.wklm
User
Beiträge: 6
Registriert: Freitag 18. Dezember 2020, 21:53

Ich bitte wirklich um Vergebung.
Ich stecke mitten in den Startlöchern was das alles angeht und womöglich weiß ich einfach nicht was ich von mir gebe.
Ich dachte einfach es hat was mit dem Import zutun.
Jetzt bekomme ich auf einmal ein ganz anderes Problem.
Das mein Code:

Code: Alles auswählen

from tkinter import *


root = Tk()
myLabel = Label(root, text='Hello World!')

myLabel.pack()

root.mainloop()
Nun wird mir auf einmal angezeigt das alles definiert ist und das Fenster taucht auf, aber mir werden 100 unused import Probleme angezeigt.
Wie geht das bitte weg ?
Benutzeravatar
Dennis89
User
Beiträge: 1576
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

In deiner ersten Zeile gibst du folgenden Befehl: Importiere von tkinter alle (!) Funktionen. Das bedeutet der Stern. Und dadurch hast du natürlich alles von tkinter importiert und nutzt eigentlich nur 'Tk' und 'Label'. Ein weiteres Problem mit dem *-Import ist, dass du alle Namen die im tkinter-Modul definiert sind, in deinem Code hast. Wenn du zufällig für deinen Code einen Namen nutzt der auch im tkinter-Modul vorkommt (du schaust sicherlich nicht immer das ganze Modul durch, um zu sehen ob der Name noch frei sit), dann kommt es zu Fehlermeldungen und zur nervigen Fehlersuche.

Wie verhält sich denn dein Code mit

Code: Alles auswählen

from tkinter import Tk, Label
?

Du kannst auch nur das Modul 'tkinter' importieren, dann musst du deinen Code aber abändern:

Code: Alles auswählen

import tkinter


root = tkinter.Tk()
myLabel = tkinter.Label(root, text='Hello World!')

myLabel.pack()

root.mainloop()
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Jonas.wklm
User
Beiträge: 6
Registriert: Freitag 18. Dezember 2020, 21:53

Wenn ich es mit deinen beiden Möglichkeiten mache ist alles bestens und es kommen keine Probleme auf.
Doch jetzt habe ich eine Frage.
Wenn ich 'tkinter' ohne * importiere kann ich dann trotzdem alle Module benutzen ?
Benutzeravatar
Dennis89
User
Beiträge: 1576
Registriert: Freitag 11. Dezember 2020, 15:13

Ja, bei der ersten Methode musst du jede Funktion die du nutzen willst angeben.

Bei der zweiten Methode musst du den Namen des importierten Moduls vor die Funktion voranstellen, wie ich es in dem Code gemacht habe.
Anstatt

Code: Alles auswählen

root = Tk()
musst du dann

Code: Alles auswählen

root = tkinter.Tk()
schreiben.

Da das etwas mehr Schreibarbeit bedeutet, kannst du beim Importieren das Modul auch umbenennen. Häufig sieht man für 'tkinter' die Abkürtzung 'tk'. Das geht so:

Code: Alles auswählen

import tkinter as tk
Dann ändert sich dein Code zu:

Code: Alles auswählen

root = tk.Tk()
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Jonas.wklm
User
Beiträge: 6
Registriert: Freitag 18. Dezember 2020, 21:53

Ich danke dir klappt jetzt alles wie gewollt :)

Lg
Antworten