def __init__(self): super(Widget, self).__init__() self.timer = Timer() self.start_btn = QtGui.QPushButton("Start/Stop", self) self.agents = [] self.info = InfoWidget.Info(self, 900, 50) self.init()
class Widget (QtGui.QWidget): def __init__(self): super(Widget, self).__init__() self.timer = Timer() self.start_btn = QtGui.QPushButton("Start/Stop", self) self.agents = [] self.info = InfoWidget.Info(self, 900, 50) self.init() def init(self): self.setWindowTitle("Gravity") rect = QtCore.QRect(Globals.objects_data["widget_x"], Globals.objects_data["widget_y"], Globals.objects_data["widget_width"], Globals.objects_data["widget_height"]) self.setGeometry(rect) self.start_btn.resize(100, 20) self.start_btn.move(20, 20) self.start_btn.show() self.start_btn.clicked.connect(self.timer_change_status) self.timer.timeout.connect(self.updateAgents) self.show() def timer_change_status(self): if self.timer.isActive(): self.timer.stop() self.info.setEditActive(True) else: self.info.setEditActive(False) self.timer.start() def setAgents(self, agents): self.agents = agents def updateAgents(self): if self.timer.isActive(): self.agents[0].update(self.agents[1]) self.agents[1].update(self.agents[0]) self.info.formUpdate() self.repaint() def paintEvent(self, e): qp = QtGui.QPainter() qp.begin(self) self.drawCircles(qp) qp.end() def drawCircles(self, qp): brush = QtGui.QBrush(QtCore.Qt.SolidPattern) qp.setBrush(brush) ag1 = self.agents[0] ag2 = self.agents[1] qp.drawEllipse(QtCore.QPoint(ag1.get_x(), ag1.get_y()), ag1.get_mass(), ag1.get_mass()) qp.drawEllipse(QtCore.QPoint(ag2.get_x(), ag2.get_y()), ag2.get_mass(), ag2.get_mass())