Problem nach: import tkinter as tk

Fragen zu Tkinter.
Antworten
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

Hallo Leute,

ich habe ein Problem, das ich mir nicht erklären kann. Seit ich versuche mein Programm von "from tkinter import *" auf "import tkinter as tk" umzustellen, bekomme ich blöde Fehlermeldungen.

Folgendes Skript funktioniert:

Code: Alles auswählen

from tkinter import *
from tkinter import ttk

root = Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

mainFrm = ttk.Frame(root, padding="10")
folderBtn = ttk.Button(mainFrm, text="Open")

mainFrm.grid(column=0, row=0, sticky=(N, S, E, W))
folderBtn.grid(column=2, row=0, sticky=(W), padx=5)

root.title("Open folder")
root.mainloop()
Wenn ich nun aber "import tkinter as tk" verwende:

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

mainFrm = ttk.Frame(root, padding="10")
folderBtn = ttk.Button(mainFrm, text="Open")

mainFrm.grid(column=0, row=0, sticky=(N, S, E, W))
folderBtn.grid(column=2, row=0, sticky=(W), padx=5)

root.title("Open folder")
root.mainloop()
...dann bekomme ich folgende Fehlermeldung:
Traceback (most recent call last):
File "frage.py", line 13, in <module>
mainFrm.grid(column=0, row=0, sticky=(N, S, E, W))
NameError: name 'N' is not defined
Drücken Sie eine beliebige Taste . . .


Frage: Wieso funktioniert nun grid() bzw. sticky nicht mehr? Und wie kann ich das abstellen?

Danke schonmal für Eure Hilfe!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

probiere es mal mit:

Code: Alles auswählen

sticky=(tk.N, tk.S, tk.E, tk.W)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

War ja klar, dass es so ein Fehler war. Einfach überall ein tk. voranstellen....

Danke!
Benutzeravatar
gkuhl
User
Beiträge: 600
Registriert: Dienstag 25. November 2008, 18:03
Wohnort: Hong Kong

Ich finde es mit Zeichenketten schöner:

Code: Alles auswählen

sticky=('N', 'S', 'E', 'W')
Pascal
User
Beiträge: 271
Registriert: Samstag 4. April 2009, 22:18

Wenn du Tkinter importierst, importierst du auch das Modul Tkconstants
Ein Ausschnitt daraus:

Code: Alles auswählen

# -anchor and -sticky
N='n'
S='s'
W='w'
E='e'
NW='nw'
SW='sw'
NE='ne'
SE='se'
NS='ns'
EW='ew'
NSEW='nsew'
CENTER='center'
Bei N, S, W ... handelt es sich um Konstanten!


Auch wenn das Problem schon gelöst ist, wollt ich das noch hinzufügen.
Antworten