нужна идея для моей проблемы с кнопкой pyqt5 [дублировать]

Попробуйте использовать целочисленное деление вместо float-деления.

>>> 15511210043330985984000000 / (479001600 * 6227020800)
5200299.999999999
>>> 15511210043330985984000000 // (479001600 * 6227020800)
5200300
2
задан R4PH43L 29 November 2015 в 15:44
поделиться

1 ответ

Пожалуйста, прочитайте о минимальных примерах . Не читая ваш код, я считаю, что вы столкнулись с хорошо известной проблемой, рассмотренной в предыдущих вопросах и ответах, для которых требуется две строки. Имена в телах функций оцениваются при выполнении функции.

funcs = [lambda: i for i in range(3)]
for f in funcs: print(f())

печатает «2» 3 раза, потому что 3 функции идентичны, а «i» в каждом не оценивается до вызова, когда i == 2. Однако

funcs = [lambda i=i:i for i in range(3)]
for f in funcs: print(f())

создает три разные функции, каждая из которых имеет другое фиксированное значение, поэтому печатаются 0, 1 и 2. В вашем заявлении

__cMenu.add_command(label="{}".format(option),
    command=lambda: self.filter_records(column, option))

добавьте option=option до :, чтобы записать различные значения option. Вы можете переписать в качестве

lambda opt=option: self.filter_records(column, opt)

, чтобы дифференцировать переменную цикла из параметра функции. Если column изменился в цикле, ему понадобится такая же обработка.

5
ответ дан Terry Jan Reedy 15 August 2018 в 19:53
поделиться
Другие вопросы по тегам:

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