Hallo zusammen,
ich beginne gerade mit Python und bekomme leider beim import von tkinter eine Problemmeldung: unresolved import 'Tkinter. Auch zu allen Funktionen aus tkinter bekomme ich eine Problemmeldung wie "Undefinied variable: 'Frame' " zum Beispiel. Das Programm läuft jedoch ganz normal durch und das Fenster wird angezeigt. Auch bekomme ich keine automatischen Vorschläge zum ausfüllen angezeigt.
Hoffe mir kann jemand helfen.
Vielen Dank und viele Grüße
Mirzer
Ich benutze Windows 7, Python 3.8 und Visual Studio Code 1.43.2
Hier der code:
from tkinter import * # * = import everything
window = Tk()
fTop =Frame(window) # Frame on Top
fTop.pack()
fBot=Frame(window) # Frame on Buttom
fBot.pack(side=BOTTOM)
lbl1 = Label(fTop, text="Hello")
lbl2 = Label(fBot, text="Hello 2")
lbl3 = Label(fBot, text = "Bottom")
lbl1.pack()
lbl2.pack(side=LEFT)
lbl3.pack(side=RIGHT)
window.mainloop()
unresolved import tkinter
- __blackjack__
- User
- Beiträge: 14087
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Mirzer: Du importierst `tkinter` und bekommst eine Meldung zu `Tkinter`? Weiss Dein Editor für welches Python Du das schreibst, also dass das für Python 3 ist?
Anmerkungen zum Code: Sternchen-Importe sind Böse™. Damit holt man sich bei `tkinter` fast 200 Namen ins Modul. Davon sind nicht einmal alle in dem Modul selbst definiert, sondern es sind auch welche dabei die `tkinter` seinerseits von woanders importiert.
Auf Modulebene gehört nur Code der Konstante, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Namen sollten auch weder kryptische Abkürzungen enthalten noch durchnummeriert sein. Wenn man `frame` meint, sollte man nicht `f` schreiben, und nicht `lbl` wenn man `label` meint. Von den durchnummerierten Namen wird letztendlich hier keiner wirklich benötigt.
Die Kommentare sind allesamt überflüssig. Was das Sternchen bedeutet weiss ein Python-Programmierer oder kann es in der Dokumentation nachlesen. Und die anderen beiden Kommentare sind nur nötig weil die Frames so schlecht benannt sind. Wenn die `top_frame` und `bottom_frame` hiessen, erübrigten sich die Kommentare.
Bei `pack()` sollte man innerhalb eines Container-Widgets immer die gleiche Seite für das `side`-Argument verwenden. Sonst kann es zu nicht wirklich vorhersehbaren Layouts kommen.
Zwischenstand:
Mit GUIs anzufangen ist mutig weil man dafür die Sprache eigentlich schon komplett können muss, zumindest bis einschliesslich objektorientierter Programmierung (OOP). Denn die braucht man für jede nicht-triviale GUI.
Anmerkungen zum Code: Sternchen-Importe sind Böse™. Damit holt man sich bei `tkinter` fast 200 Namen ins Modul. Davon sind nicht einmal alle in dem Modul selbst definiert, sondern es sind auch welche dabei die `tkinter` seinerseits von woanders importiert.
Auf Modulebene gehört nur Code der Konstante, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase).
Namen sollten auch weder kryptische Abkürzungen enthalten noch durchnummeriert sein. Wenn man `frame` meint, sollte man nicht `f` schreiben, und nicht `lbl` wenn man `label` meint. Von den durchnummerierten Namen wird letztendlich hier keiner wirklich benötigt.
Die Kommentare sind allesamt überflüssig. Was das Sternchen bedeutet weiss ein Python-Programmierer oder kann es in der Dokumentation nachlesen. Und die anderen beiden Kommentare sind nur nötig weil die Frames so schlecht benannt sind. Wenn die `top_frame` und `bottom_frame` hiessen, erübrigten sich die Kommentare.
Bei `pack()` sollte man innerhalb eines Container-Widgets immer die gleiche Seite für das `side`-Argument verwenden. Sonst kann es zu nicht wirklich vorhersehbaren Layouts kommen.
Zwischenstand:
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter as tk
def main():
window = tk.Tk()
top_frame = tk.Frame(window)
top_frame.pack()
tk.Label(top_frame, text="Hello").pack()
bottom_frame = tk.Frame(window)
bottom_frame.pack()
tk.Label(bottom_frame, text="Hello 2").pack(side=tk.LEFT)
tk.Label(bottom_frame, text="Bottom").pack(side=tk.LEFT)
window.mainloop()
if __name__ == "__main__":
main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari