Deprecation Warning: an integer is required (got type float)
При разработке программы в python 3 встретилась ошибка:
D:\LicenseChecker\1.6\main.pyw:45: DeprecationWarning: an integer is required (got type float).
Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
self.tableWidget.setGeometry(90 * koefW, 0 * koefH, 831 * koefW, 291 * koefH)
Она связана появляется в python версии 3.8.5. Ниже расскажу как я устранил эту ошибку и приведу строчку кода, которая это вызывала.
class UI(QMainWindow):
def __init__(self):
super(UI, self).__init__()
uic.loadUi("data\\main.ui", self)
self.setupUi(self)
self.w = self.size().width() # "определение ширины"
self.h = self.size().height() # "определение высоты"
def resizeEvent(self, event):
width = self.size().width()
height = self.size().height()
koefW = width / self.w
koefH = height / self.h
self.tableWidget.setGeometry(90 * koefW, 0 * koefH, 831 * koefW, 291 * koefH)
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(921, 336)
self.tableWidget.setGeometry(QRect(90, 0, 831, 291))
self.retranslateUi(Form)
QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QCoreApplication.translate
win = UI()
Иными словами, Python говорит нам:
Предупреждение об устаревании: требуется целое число (получен тип float). Неявное преобразование в целые числа с использованием __int__ устарело и может быть удалено в будущей версии Python.
Прочитав советы на других сайтах, я принялся заменять self.tableWidget.setGeometry(90 * koefW, 0 * koefH, 831 * koefW, 291 * koefH) на self.tableWidget.setGeometry(int(90 * koefW), int(0 * koefH), int(831 * koefW), int(291 * koefH)), однако, в этом случае ломалась функция изменения размера окна. Попытка преобразовать в int в присвоении значений переменных width, height, koefW и koefH также не увенчалась успехом.
Тогда, немного подумав, я решил преобразовать в Integer все значения в отдельных переменных, а в setGeometry уже просто передать эти переменные, и это сработало! Вот код измененной функции:
def resizeEvent(self, event):
width = self.size().width()
height = self.size().height()
koefW = width / self.w
koefH = height / self.h
s1 = int(90 * koefW)
s2 = int(0 * koefH)
s3 = int(831 * koefW)
s4 = int(291 * koefH)
self.tableWidget.setGeometry(s1, s2, s3, s4)