tkinter sticky=N+W Error: global name 'N' is not defined
tkinter sticky=N+W Error: global name 'N' is not defined
我正在制作一个 tkinter GUI,但我不明白为什么会显示此错误。另外,我在理解初始化框架时遇到了麻烦。这可能与错误有关吗?我对 Python 还是个新手,需要进一步了解它的工作原理。对不起,如果错误是基本的,我心里很不安。您的帮助将不胜感激。这是代码:
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()
这是回溯:
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
如错误所述,问题是您正在引用未定义的变量 N(以及 W)。
这些是在 Tkinter 中定义的变量,因此您可以执行 tk.N 和 tk.W,或者只使用这些变量定义的字符串,例如:
self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, pady = 10, sticky = 'nw')
还有一些其他问题阻碍了代码 运行。您在已经从 Frame 继承的 QueryInterface 中创建了一个单独的成员 Frame,并将其打包。
此代码运行。
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()
我正在制作一个 tkinter GUI,但我不明白为什么会显示此错误。另外,我在理解初始化框架时遇到了麻烦。这可能与错误有关吗?我对 Python 还是个新手,需要进一步了解它的工作原理。对不起,如果错误是基本的,我心里很不安。您的帮助将不胜感激。这是代码:
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()
这是回溯:
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
如错误所述,问题是您正在引用未定义的变量 N(以及 W)。
这些是在 Tkinter 中定义的变量,因此您可以执行 tk.N 和 tk.W,或者只使用这些变量定义的字符串,例如:
self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, pady = 10, sticky = 'nw')
还有一些其他问题阻碍了代码 运行。您在已经从 Frame 继承的 QueryInterface 中创建了一个单独的成员 Frame,并将其打包。
此代码运行。
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()