Концепция аналогична удалению элементов из списка: если вы используете увеличивающиеся индексы и удаляете элементы одновременно, будет удалена только половина элементов.
Если вы начинаете с 0 и удалите строку 0, тогда второй элемент станет первым. Поскольку в следующем цикле вы попытаетесь удалить строку 1, в результате вы удалите то, что раньше было третьей строкой.
Итак, вы всегда можете удалить элемент в строке 0:
def onRemoveItems(self):
for i in range(self.myListWidget2.count()):
itemI = self.myListWidget2.<b>item(0)</b>
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))
Или используйте обратный диапазон:
def onRemoveItems(self): # button click event
for i in range<b>(self.myListWidget2.count() - 1, -1, -1)</b>:
itemI = self.myListWidget2.item(i)
self.myListWidget2.takeItem(self.myListWidget2.row(itemI))