2016-06-05 4 views
1

Ich mache eine tkinter GUI, aber ich verstehe nicht, warum dieser Fehler angezeigt wird. Außerdem habe ich Probleme mit der Initialisierung von Frame. Ist das mit dem Fehler verbunden? Ich bin noch neu in Python und muss mehr darüber verstehen, wie es funktioniert. Tut mir leid, wenn der Fehler grundlegend ist, habe ich eine beunruhigte Meinung. Ihre Hilfe wird geschätzt. Dies ist der Code:tkinter sticky = N + W Fehler: globaler Name 'N' ist nicht definiert

import Tkinter as tk 
import string 

class QueryInterface(tk.Frame): 
    def __init__(self, master): 
    tk.Frame.__init__(self, master) 
    self.frame = tk.Frame(self.master) 
    self.master.geometry("400x300+400+200") 
    self.master.title("Thug Client-Side Honeypot") 
    self.master.resizable(width = False, height = False) 

    self.inputLabel = tk.Label(self, text = "Input arguments and URL:", font = "Calibri 11") 
    self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, packy = 10, sticky = N+W) 

    self.frame.pack() 

def main(): 
    root = tk.Tk() 
    app = QueryInterface(root) 
    app.mainloop() 

if __name__ == '__main__': 
    main() 

Hier wird der Rückverfolgungs ist:

Traceback (most recent call last): 
    File "QueryInterface.py", line 71, in <module> 
    main() 
    File "QueryInterface.py", line 67, in main 
    app = QueryInterface(root) 
    File "QueryInterface.py", line 17, in __init__ 
    self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, packy = 10, sticky = N+W) 
NameError: global name 'N' is not defined 
+0

Sie importieren Tkinter als "tk", also muss alles, was vom Modul exportiert wird, mit 'tk' vorangestellt werden (zB:' tk.N'). Das ist kein Problem, so arbeiten alle Python-Module. –

+0

@BryanOakley danke für den Hinweis – sparklights

Antwort

3

Wie der Fehler erwähnt, das Problem ist, dass Sie eine Variable N referenzieren (sowie W), die nicht definiert sind.

Diese Variablen werden in Tkinter definiert, so könnte man tk.N und tk.W tun, oder alternativ nur die Saiten verwenden, die diese Variablen definieren, zB:

self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, pady = 10, sticky = 'nw') 

Es gibt ein paar andere Fragen Das verhinderte die Ausführung des Codes. Sie haben in Ihrem QueryInterface einen separaten Member-Frame erstellt, der bereits von Frame erbt und diesen packt.

Dieser Code wird ausgeführt.

import Tkinter as tk 

class QueryInterface(tk.Frame): 
    def __init__(self, master): 
    tk.Frame.__init__(self, master) 
    self.master.geometry("400x300+400+200") 
    self.master.title("Thug Client-Side Honeypot") 
    self.master.resizable(width = False, height = False) 
    self.inputLabel = tk.Label(self, text = "Input arguments and URL:", font = "Calibri 11") 
    self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, pady = 10, sticky = 'nw') 
    self.pack() 

def main(): 
    root = tk.Tk() 
    app = QueryInterface(root) 
    app.mainloop() 

if __name__ == '__main__': 
    main() 
+0

immer noch ein Fehler: – sparklights

+0

Datei "QueryInterface.py", Zeile 17, in __init__ self.inputLabel.grid (Zeile = 1, Spalte = 0, Spaltenspanne = 2, Padx = 5, packy = 10, sticky = tk.N) Datei "/usr/lib/python2.7/lib-tk/Tkinter.py", Zeile 1985, in grid_configure + self._options (cnf, kw)) _tkinter. TclError: schlechte Option "-packy": muss -column, -columnspan, -in, -ipadx, -ipady, -padx, -pady, -row, -group oder -sticky sein – sparklights

+0

Ich glaube, dass Kwarg sollte von Paddy (packy ist kein gültiger arg). Ich habe die Antwort aktualisiert. –