Python tkinter - pack append vs pack separate from root
Python tkinter - pack append vs pack separate from root
我是 python 和 tkinter 的新手。尝试编写一个简单的 python 代码来获取用户名并打印它
所以,我尝试了以下
root = Tk() # line 1
e = Entry(root, width = 50).pack() # line 2 option 1 - results in below error as shown below
e = Entry(root, width = 50) # line 2 option 2 - works fine
e.pack() # line 3 option 2 - works fine
def clicking():
word = "Hello " + e.get()
myLabel = Label(root,text=word).pack()
myButton = Button(root, text = "Generate", command = clicking).pack()
当我点击 Generate
按钮时,我希望看到类似“Hello John”的输出
但是当我按照上面第 2 行选项 1 所示编写第 2 行时出现以下错误
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\test\Anaconda3\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\test~1\AppData\Local\Temp/ipykernel_8876/988003047.py", line 4, in clicking
word = "Hello " + e.get()
AttributeError: 'NoneType' object has no attribute 'get'
但是,当我将第 2 行写成两行时,如第 2 行选项 2 和第 3 行选项 2 所示,它工作正常,我得到以下输出。
能帮我理解为什么会这样吗?用root打包和不打包有什么区别?
当你使用
variable = Widget().pack()
然后你将 None
分配给 variable
因为 pack()
, grid()
, place()
return None
.
你应该分两行
variable = Widget()
variable.pack()
第一行将小部件分配给 variable
。
在第二行中,您使用 variable
访问此小部件。
我是 python 和 tkinter 的新手。尝试编写一个简单的 python 代码来获取用户名并打印它
所以,我尝试了以下
root = Tk() # line 1
e = Entry(root, width = 50).pack() # line 2 option 1 - results in below error as shown below
e = Entry(root, width = 50) # line 2 option 2 - works fine
e.pack() # line 3 option 2 - works fine
def clicking():
word = "Hello " + e.get()
myLabel = Label(root,text=word).pack()
myButton = Button(root, text = "Generate", command = clicking).pack()
当我点击 Generate
按钮时,我希望看到类似“Hello John”的输出
但是当我按照上面第 2 行选项 1 所示编写第 2 行时出现以下错误
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\test\Anaconda3\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\test~1\AppData\Local\Temp/ipykernel_8876/988003047.py", line 4, in clicking
word = "Hello " + e.get()
AttributeError: 'NoneType' object has no attribute 'get'
但是,当我将第 2 行写成两行时,如第 2 行选项 2 和第 3 行选项 2 所示,它工作正常,我得到以下输出。
能帮我理解为什么会这样吗?用root打包和不打包有什么区别?
当你使用
variable = Widget().pack()
然后你将 None
分配给 variable
因为 pack()
, grid()
, place()
return None
.
你应该分两行
variable = Widget()
variable.pack()
第一行将小部件分配给 variable
。
在第二行中,您使用 variable
访问此小部件。