Введите или вставьте в tk.Entry только число с плавающей точкой, за исключением пустого поля, а затем инициируйте действие, которое передает обновленное значение. Это должно быть обобщаемым.
import tkinter as tk
def float_validation(inStr,acttyp): #check for float
if acttyp == '1':
try:
float(inStr)
return True
except ValueError:
return False
#Do NOT evaluate actype == '0' (delete action)
#Using acttype == '0', try:float("") returns False
return True
def update_from_entry(entry): #address empty string after float validation
if not entry.get() == "":
vals[strs.index(entry)].set(float(entry.get()))
else:
vals[strs.index(entry)].set(0)
def calculate(entry): #do something after entry update
update_from_entry(entry)
calculated_value.set(entry1_val.get()+entry2_val.get())
root = tk.Tk()
strs = [] #create lists of objects to index against each other
vals = []
entry1_str = tk.StringVar(value='0.123')
strs.append(entry1_str)
entry1_str.trace_add('write',lambda a,b,c, entry=entry1_str: calculate(entry))
entry1_input = tk.Entry(root, textvariable=entry1_str, validate='all')
entry1_input.grid(row=0,sticky='ew')
entry1_input['validatecommand'] = entry1_input.register(float_validation),'%P','%d'
entry1_val = tk.DoubleVar(value = float(entry1_str.get()))
vals.append(entry1_val)
entry2_str = tk.StringVar(value='0.456')
strs.append(entry2_str)
entry2_str.trace_add('write',lambda a,b,c,entry=entry2_str:calculate(entry))
entry2_input = tk.Entry(root, textvariable=entry2_str, validate='all')
entry2_input.grid(row=1,sticky='ew')
entry2_input['validatecommand'] = entry1_input.register(float_validation),'%P','%d'
entry2_val = tk.DoubleVar(value = float(entry2_str.get()))
vals.append(entry2_val)
calculated_value = tk.DoubleVar(value=entry1_val.get()+entry2_val.get())
output = tk.Label(root, textvariable=calculated_value).grid(row=2,sticky='ew')
root.mainloop()
Код работает, но не слишком ли он надуман? Разумный ли это способ ограничить tk.Entry числом с плавающей запятой, введя дополнительные шаги для адресации пустой проверки tk.Entry False из float("") , при запуске обновлений? Я неправильно понял, как разрешить пустые (и/или вставки) объекты tk.Entry?
Введите или вставьте в tk.Entry только число с плавающей точкой, за исключением пустого поля, а затем инициируйте действие, которое передает обновленное значение. Это должно быть обобщаемым. [code]import tkinter as tk
root.mainloop() [/code] Код работает, но не слишком ли он надуман? Разумный ли это способ ограничить tk.Entry числом с плавающей запятой, введя дополнительные шаги для адресации пустой проверки tk.Entry False из float("") , при запуске обновлений? Я неправильно понял, как разрешить пустые (и/или вставки) объекты tk.Entry?
Введите или вставьте в tk.Entry только число с плавающей точкой, за исключением пустого поля, а затем инициируйте действие, которое передает обновленное значение. Это должно быть обобщаемым.
import tkinter as tk
У меня есть система, которая в основном отслеживает финансы. В этом приложении есть поле «стоимость» (которое, к сожалению, является полем VARCHAR). В это поле вводятся различные значения, например:
£90
£210 per day
£50 per logo
Design - £180
£36...
У меня есть строковое число с 6 цифрами после запятой:
2.024163
Когда я преобразую это число в число с плавающей запятой, оно возвращает число с плавающей запятой. с двумя десятичными знаками:
2.02
Я хочу вернуть число в том виде, в котором оно...
Как указать, что функция может принимать список чисел, которые могут быть целыми или плавающими?
Я попробовал создать новый тип, используя Union, вот так:
num = Union
Я изучаю методы передачи файлов и их влияние на производительность для различных размеров файлов. Идеально, поскольку они избегают ненужных копий данных и улучшают производительность, устраняя передачи памяти пользовательского пространства. Они...