Форум сайта python.su
Добрый день
PyQt5, Питон 3.4.
Создаю сцену в новом окне, рисую линии и пишу тексты. При повторном входе сохраняется старые рисунки.
Понимаю, что в ините надо бы сцену почистить или создавать заново, но не получается этого сделать. Первая программа и в основном компилируется из примеров методом тыка.
Создаю так
self.widget = GraphWidget()
self.widget.setGeometry(100, 100, 600, 600)
self.widget.show()
…………
class GraphWidget(QGraphicsView):
def __init__(self):
super(GraphWidget, self).__init__()
self.timerId = 0
scene = QGraphicsScene(self)
scene.setItemIndexMethod(QGraphicsScene.NoIndex)
Офлайн
QList<QGraphicsItem *> QGraphicsScene::items () const
Возвращает список элементов на сцене в произвольном порядке.
Смотрите также addItem() и removeItem()
void QGraphicsScene::clear()
Removes and deletes all items from the scene, but otherwise leaves the state of the scene unchanged.
Отредактировано vic57 (Май 18, 2018 19:04:02)
Офлайн
vic57У меня в питоне с voidом напряженка.
void QGraphicsScene::clear()
Офлайн
RTFM
>>> from PyQt5 import Qt >>> help(Qt.QGraphicsScene.clear) Help on built-in function clear: clear(...) clear(self) >>>
Офлайн
После добавления
from PyQt5 import Qt
выдает
File “C:\Program Files\Wing IDE 101 5.0\src\debug\tserver\_sandbox.py”, line 220, in __init__
builtins.AttributeError: ‘module’ object has no attribute ‘AlignLeading’
220 self.label.setAlignment(Qt.AlignLeading|Qt.AlignRight|Qt.AlignTop)
PS. Ошибки синтаксиса в конце концов удалось победить хоть и не так как в хелпе. Но толку ноль. Непонятно вообще куда очистку сцены вставлять. Наверно надо как-то эту сцену закрывать и открывать новую. Но как? В общем как-то даже странно.
Отредактировано GS (Май 19, 2018 22:12:04)
Офлайн
Какая глупая ошибка. Понятно почему не чистилась сцена. Только когда сделал пример, где сцена чистилась, а потом стал закрашивать всю сцену, но изображений все равно было два, до меня дошло: Я передавал координаты через глобальный список, но на новой картинке список не обнулял и она добавлялась после старой. Жертва appenda.
Кстати сцена чистится командой:
self.scene = QGraphicsScene()
…………………………………………..
self.scene.clear()
Офлайн