spa*_*hts 3 python global tkinter python-2.7
我正在制作一个tkinter GUI,但我不知道这个错误显示的原因.另外,我在理解初始化Frame时遇到了麻烦.这可能与错误有关吗?我还是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()
Run Code Online (Sandbox Code Playgroud)
这是追溯:
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
Run Code Online (Sandbox Code Playgroud)
正如错误所提到的,问题是您正在引用未定义的变量N(以及W).
这些是在Tkinter中定义的变量,因此您可以执行tk.N和tk.W,或者只使用这些变量定义的字符串,例如:
self.inputLabel.grid(row = 1, column = 0, columnspan = 2, padx = 5, pady = 10, sticky = 'nw')
Run Code Online (Sandbox Code Playgroud)
还有一些其他问题导致代码无法运行.您在QueryInterface中创建了一个单独的成员Frame,它已经从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()
Run Code Online (Sandbox Code Playgroud)