嗨,我想知道第一段代码(有效)和第二段代码(无效)之间有什么区别。在
区块1:
from tkinter import *
class Temp:
def __init__(self, master):
self.master = master
self.var = self.userEntryFunc()
self.var.pack()
def userEntryFunc(self):
return Entry(self.master)
def getval(x,y):
cn1 = x.var.get()
cn2 = y.var.get()
print(cn1 + " and " + cn2)
root = Tk()
root.geometry("500x500")
Name = Temp(root)
Name2 = Temp(root)
b = Button(root, text="pree", command=lambda: getval(Name,Name2))
b.pack()
root.mainloop()
区块2:
^{pr2}$block2错误消息:
Exception in Tkinter callback
Traceback (most recent call last):
File "<ipython-input-111-c906f1aea49c>", line 24, in <lambda>
b = Button(root, text="pree", command=lambda: getval(Name, Name2))
File "<ipython-input-111-c906f1aea49c>", line 16, in getval
cn1 = x.var.get()
AttributeError: 'NoneType' object has no attribute 'var'
我的主要目标是让几个Temp类型的对象在Variable类中有不同的tkinter小部件定义,并将它们的值用作将来代码的变量。我的问题是我不想在我的init函数中有5个不同的条件来处理不同的变量类型(用户条目、按钮、目录浏览)。例如:
if varName=="userEntry":
self.var = self.userEntryFunc()
self.var.pack()
elif varName=="radioButton":
self.var = self.radioButtonFunction()
...
在第一个代码示例中,
Entry
小部件是由__init__
函数(在创建实例时)通过userEntryFunc
函数创建的,然后打包。然而,在第二个示例中,Temp
类在创建时不创建任何内容,它的getValue
函数必须在外部调用。在出现您所面临的错误是因为}实例。要解决此问题,需要将实例分配给变量,然后调用
clientName
和clientName2
实际上被分配给getValue
的返回值,而不是{getValue
函数,如下所示:还要注意的是:
^{pr2}$在示例1中,将创建一个错误,请改用:
编辑:以上问题现已修复
相关问题 更多 >
编程相关推荐