Привет, мне было интересно, в чем разница между первым блоком кода (который работает) и вторым (который не работает).
Block1:
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()
Block2:
from tkinter import *
class Temp:
def __init__(self, master):
self.master = master
def userEntryFunc(self):
return Entry(self.master)
def getValue(self):
self.var = self.userEntryFunc()
self.var.pack()
def getval(x,y):
cn1 = x.var.get()
cn2 = y.var.get()
print(cn1 + " and " + cn2)
root = Tk()
root.geometry("500x500")
Name = Temp(root).getValue()
Name2 = Temp(root).getValue()
b = Button(root, text="pree", command=lambda: getval(Name, Name2))
b.pack()
root.mainloop()
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, которые имеют различные определения виджетов tkinter в классе Variable, и используйте их значение в качестве переменной для будущего кода.Моя проблема в том, что я не хочу, чтобы в моей функции init было 5 разных условий для этого для разных типов переменных (ввод пользователя, кнопки, просмотр каталога).Например:
if varName=="userEntry":
self.var = self.userEntryFunc()
self.var.pack()
elif varName=="radioButton":
self.var = self.radioButtonFunction()
...