class Example(QWidget): def __init__(self): super().__init__() self.__parameter = 10 self.travel_screen = TravelScreen() self.phi = 0 self.step = 0.5 self.timer = QTimer() self.timer.timeout.connect(self.route) self.timer.start(1) self.turn = Turn() self.scale = 1 self.initUI() def initUI(self): self.setGeometry(300, 300, 280, 270) self.setWindowTitle('Lab 1') self.label_a = QLabel(self) self.label_a.setText('a') self.label_a.move(90, 5) self.label_step = QLabel(self) self.label_step.setText('step') self.label_step.move(90, 30) input_a = QLineEdit(self) input_a.setMaximumWidth(80) input_step = QLineEdit(self) input_step.move(5, 30) input_step.setMaximumWidth(80) input_a.move(5, 5) input_a.textChanged[str].connect(self.onChanged) input_step.textChanged[str].connect(self.onChangedStep) btn1 = QPushButton('+', self) btn2 = QPushButton('-', self) btn1.move(200, 5) btn2.move(200, 30) btn1.clicked.connect(self.onScalePlus) btn2.clicked.connect(self.onScaleMinus) self.show() def onScalePlus(self): self.scale += 1 self.update() def onScaleMinus(self): self.scale -= 1 if self.scale < 1: self.scale = 1 self.update() def onChangedStep(self, text): try: self.step = float(text) / 10 except Exception as e: print('lol') self.step = 0.5 if self.step <= 0: self.step = 0.5 print(self.step) self.update() def mouseMoveEvent(self, e): if e.buttons() == Qt.LeftButton: end = Point(e.pos().x(), e.pos().y()) self.travel_screen.point_start = self.travel_screen.point_end self.travel_screen.point_end = end self.travel_screen.update_travel() self.update() if e.buttons() == Qt.RightButton: end = e.pos().y() self.turn.end = end self.turn.update_turn() self.update() def mousePressEvent(self, e): if e.buttons() == Qt.LeftButton: start = Point(e.pos().x(), e.pos().y()) self.travel_screen.point_start = start self.travel_screen.point_end = start if e.buttons() == Qt.RightButton: start = e.pos().y() self.turn.start = start def onChanged(self, text): self.__takeParameter(text) self.update() def paintEvent(self, e): qp = QPainter() qp.begin(self) self.drawFigure(qp) qp.end() def drawFigure(self, qp): size = self.size() pen = QPen(Qt.white, 1, Qt.SolidLine) qp.setPen(pen) cordinate_axes = CordinateAxes( size.width(), size.height(), self.travel_screen, self.scale * 10) cordinate_axes.draw(qp) pen = QPen(Qt.red, 2, Qt.SolidLine) qp.setPen(pen) curve = Curve(qp, size.width(), size.height(), self.__parameter, self.step, self.travel_screen, self.phi, self.scale) curve.draw() def route(self): try: self.phi = (self.phi + 0.1) except Exception as e: self.phi = 0 self.update() def __takeParameter(self, text): try: self.__parameter = float(text) except Exception as e: self.__parameter = 10 if self.__parameter <= 0: self.__parameter = 10
class Example(QWidget): def __init__(self): super().__init__() self.a = 100 self.b = 50 self.c = 70 self.h = 70 self.travel_screen = TravelScreen() self.vector_see = Vector(0, 0, -1) self.turn = Turn() # self.Action() self.initUI() def initUI(self): self.setGeometry(300, 300, 280, 270) self.setWindowTitle('Lab 2') orthographic_projection = QCheckBox('Ортографическая проекция') orthographic_projection.move(5, 5) orthographic_projection.toggle() self.show() def mouseMoveEvent(self, e): if e.buttons() == Qt.LeftButton: end = Point(e.pos().x(), e.pos().y()) self.travel_screen.point_end = end self.travel_screen.update_travel() self.update() self.travel_screen.point_start = end if e.buttons() == Qt.RightButton: end = e.pos().y() self.turn.end = end self.turn.update_turn() self.update() self.turn.start = end def mousePressEvent(self, e): if e.buttons() == Qt.LeftButton: start = Point(e.pos().x(), e.pos().y()) self.travel_screen.point_start = start if e.buttons() == Qt.RightButton: start = e.pos().y() self.turn.start = start def on_changed_a(self, text): self.a = self.__takeParameter(text) self.update() def paintEvent(self, e): qp = QPainter() qp.begin(self) self.drawFigure(qp) qp.end() def drawFigure(self, qp): size = self.size() width = size.width() height = size.height() # pen = QPen(Qt.white, 1, Qt.SolidLine) # qp.setPen(pen) # # cordinate_axes = CordinateAxes( # size.width(), size.height(), self.travel_screen) # cordinate_axes.draw(qp) pen = QPen(Qt.red, 2, Qt.SolidLine) qp.setPen(pen) wedge = Wedge(self.a, self.b, self.c, self.h) wedge.to_scale(k_x=width / 270, k_y=width / 280, k_z=1) # wedge.to_turn_oz(phi=self.turn.phi) wedge.to_turn_ox(phi=self.turn.phi) # wedge.to_turn_oy(phi=self.turn.phi) wedge.move(d_x=width / 4 - self.travel_screen.travel_x, d_y=height / 4 - self.travel_screen.travel_y, d_z=1) wedge.clear(self.vector_see) wedge.to_isometric_transform(phi=math.pi / 5, tetta=math.pi / 5) # wedge.to_orthographic_projection_z() wedge.draw(qp) def __takeParameter(self, text): try: res = float(text) except Exception as e: res = 10 if res <= 0: res = 10 return res