tKinter Как отключить вход, когда флажок снят, и включить его, пока флажок не установлен

  • float сохраняет значения с плавающей запятой, то есть значения, которые имеют потенциальные десятичные места
  • int, сохраняют только целые значения, т. е. целые числа

Таким образом, хотя оба они имеют ширину в 32 бита, их использование (и представление) совершенно иное. Вы не можете хранить 3.141 в целых числах, но вы можете в float.

Рассеивать их еще немного:

В целые числа все биты используются для хранения значения числа. Это (на Java и многие компьютеры) сделано в так называемом дополнении two . Это в основном означает, что вы можете представлять значения & minus; 231 to 231 & nbsp; & minus; & nbsp; 1.

В поплавке эти 32 бита разделяются между тремя отдельными частями: знаковый бит, показатель экспоненты и мантисса. Они выложены следующим образом:

S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM

Существует один бит, который определяет, является ли число отрицательным или неотрицательным (ноль не является ни положительным, ни отрицательным, но имеет битовый знак, установленный в ноль) , Тогда есть восемь бит экспонента и 23 бит мантиссы. Для получения полезного номера из этого (примерно) выполняется следующий расчет:

M × 2 E

< / blockquote>

(Этого больше, но этого должно хватить для цели этого обсуждения)

Мантисса по существу не намного больше, чем 24-битное целое число. Это умножается на 2 на степень экспоненциальной части, которая, грубо говоря, представляет собой число между & минус 128 и 127.

Поэтому вы можете точно представлять все числа, которые будут вписываться в 24-битное целое число но числовой диапазон также намного больше, поскольку более крупные экспоненты допускают большие значения. Например, максимальное значение для параметра float составляет около 3,4 × 1038, тогда как int допускает только значения до 2,1 × 109.

Но это также означает, поскольку 32 бита имеют только 4,2 × 109 разных состояния (которые все используются для представления значений int могут сохраняться), что на большем конце числового диапазона float номера разнесены на более широкие расстояния (поскольку не может быть более уникальных float чисел, чем есть уникальные номера int). Вы не можете точно представлять некоторые цифры. Например, число 2 × 1012 имеет представление в float из 1 999 999 991 808. Это может быть закрыть до 2 000 000 000 000, но это не точно. Аналогично, добавление 1 к этому числу не меняет его, потому что 1 слишком мал, чтобы изменить разницу в больших масштабах float.

Аналогичным образом вы также можете представлять очень маленькие числа (между 0 и 1) в float, но независимо от того, являются ли цифры очень большими или очень маленькими, float имеет точность приблизительно 6 или 7 десятичных цифр. Если у вас есть большие числа, эти цифры находятся в начале номера (например, 4.51534 × 1035, что составляет не более 451534, после 30 нулей - и float не может ничего сказать о том, действительно ли эти 30 цифр являются нулями или чем-то еще ), для очень малых чисел (например, 3.14159 × 10 и минус 27) они находятся в дальнем конце номера, за пределами начальных цифр 0,0000 ...

-1
задан user1251007 5 March 2019 в 23:14
поделиться

1 ответ

Попробуйте это:

from tkinter import *

def entry():
    ent[i].configure(state = NORMAL)

window=Tk()

nac = {}
ent = {}

for i in range(10):
    de = IntVar()
    nac[i]=IntVar()

na=Checkbutton(window, text='%s' % (i), borderwidth=1,variable = nac[i],
               onvalue = 1, offvalue = 0,command=entry)
na.grid(row=i, column=0)
ent[i]=Entry(window,textvariable=de, state = DISABLED)
ent[i].grid(column=1,row=i,padx=20)
window.mainloop()
0
ответ дан Heyran.rs 5 March 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: