Как сказал @Nullman, когда вы выполняете оператор a = float(nEntry.get())
, nEntry.get()
возвращает пустую строку.
Предложите использовать DoubleVar()
:
for i in range(1, k*2+1):
var = DoubleVar()
globals()['b%s' % i] = var
Entry(textvariable=var).pack()
Затем получите результатиспользуя DoubleVar.get()
:
print(b1.get())
Если вы хотите использовать b1
(b2
, ...) в качестве простого числа с плавающей точкой, попробуйте следующее предложение:
def var_trace(name, *args):
i, var = vars[name]
try:
value = var.get()
except:
value = 0.0
globals()['b%s' % i] = value
vars = {}
for i in range(1, k*2+1):
var = DoubleVar()
name = '%s' % var # get the internal name of DoubleVar
vars[name] = (i, var)
var.trace('w', var_trace) # var_trace will be executed whenever the variable is changed
var.set(0.0)
Entry(textvariable=var).pack()
Затем вы можете получить значение b1
(b2
, ...) напрямую:
print(b1)