Я получаю ValueError: не удалось преобразовать строку в число с плавающей точкой.Кто-нибудь может отредактировать это? - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь это, но у меня постоянная ошибка Ошибка: не удалось преобразовать строку в число с плавающей точкой.Я искал и не мог найти решение для этого.Я не знаю, где я ошибся.Значение от пользователя, которого мы пытаемся получить, всегда является проблемой.Кто-нибудь, пожалуйста, помогите?

nn1 = 0
nn2 = 0
n = 0 

from tkinter import *
root = Tk()
root.title("Rectangles")

def get_ab(event):

    global nn1
    global nn2
    global n


    nn1 = float(nn1Entry.get())
    nn2 = float(nn2Entry.get())
    n = int(n3Entry.get())


button1 = Button(text="Submit")
button1.grid(column=1,row=3)
button1.bind("<Button-1>", get_ab)

label_1 = Label(root, text="Size Of Sheet")
nn1Entry = Entry(root)
nn2Entry = Entry(root)

label_1.grid(row=0, sticky=E)
nn1Entry.grid(row=0, column=1)
nn2Entry.grid(row=1, column=1)

label_2 = Label(root, text="Number of rectangles")
label_2.grid(row=2)
n3Entry = Entry(root)
n3Entry.grid(row=2,column=1)

root.mainloop()

k = n

for i in range(1,k*2+1):
     globals()['b%s' % i]=0

window = Tk()
window.title("Sizes of rectangles")

for i in range(1, k*2+1):
    nEntry = Entry(window)
    nEntry.grid(row=1, column=1)
    a = float(nEntry.get()) #Errorline is this one
    globals()['b%s' % i] = a

window.mainloop()

print(b1)

Обозначается строка ошибки

1 Ответ

0 голосов
/ 11 февраля 2019

Как сказал @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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...