... начиная с Java SE 8, локальный класс может обращаться к локальным переменным и параметрам закрывающего блока, которые являются окончательными или фактически окончательными. Параметр или параметр, значение которого никогда не изменяется после его инициализации, фактически является окончательным.
blockquote>Например, предположим, что переменная
numberLength
не объявлена окончательной, и вы добавляете отмеченную инструкцию присваивания в конструктореPhoneNumber
:public class OutterClass { int numberLength; // <== not *final* class PhoneNumber { PhoneNumber(String phoneNumber) { numberLength = 7; // <== assignment to numberLength String currentNumber = phoneNumber.replaceAll( regularExpression, ""); if (currentNumber.length() == numberLength) formattedPhoneNumber = currentNumber; else formattedPhoneNumber = null; } ... } ... }
Из-за этого оператора присваивания переменная numberLength не является окончательной окончательной. В результате компилятор Java генерирует сообщение об ошибке, аналогичное «локальные переменные, на которые ссылается внутренний класс, должен быть окончательным или фактически окончательным», где внутренний класс PhoneNumber пытается получить доступ к переменной numberLength:
http://codeinventions.blogspot.in/2014/07/difference-between-final-and.html
http://docs.oracle.com/javase/tutorial /java/javaOO/localclasses.html
Формат строки Python на самом деле имеет эту встроенную функцию:
'${:,d}'.format(1000)
дает '$1,000'
Так что вы можете попробовать
t.set_text('${:,d}'.format(int(t.get_text())))