def mousePressEvent(self, event: QMouseEvent): state = self._get_state_cb() for node_id, node in state.items(): if intersect_node(node, event.pos()): self._clicked_node_id = node_id self._last_click_pos = event.pos()
def _set_cursor_for_position(self, event: QMouseEvent): level_object = self.object_at(*event.pos().toTuple()) if level_object is not None: is_resizable = not level_object.is_single_block edges = self._cursor_on_edge_of_object(level_object, event.pos()) if is_resizable and edges: if edges == Qt.RightEdge and level_object.expands( ) & EXPANDS_HORIZ: cursor = Qt.SizeHorCursor elif edges == Qt.BottomEdge and level_object.expands( ) & EXPANDS_VERT: cursor = Qt.SizeVerCursor elif (level_object.expands() & EXPANDS_BOTH) == EXPANDS_BOTH: cursor = Qt.SizeFDiagCursor else: return if self.mouse_mode not in RESIZE_MODES: self.setCursor(cursor) return if self.mouse_mode not in RESIZE_MODES: self.setCursor(Qt.ArrowCursor)
def mouseMoveEvent(self, event: QMouseEvent): if self.mouse_mode == MODE_DRAG: self.setCursor(Qt.ClosedHandCursor) self._dragging(event) elif self.mouse_mode in RESIZE_MODES: previously_selected_objects = self.level_ref.selected_objects self._resizing(event) self.level_ref.selected_objects = previously_selected_objects elif self.selection_square.active: self._set_selection_end(event.pos()) elif SETTINGS["resize_mode"] == RESIZE_LEFT_CLICK: self._set_cursor_for_position(event) x, y = event.pos().toTuple() object_under_cursor = self.object_at(x, y) if SETTINGS[ "object_tooltip_enabled"] and object_under_cursor is not None: self.setToolTip(str(object_under_cursor)) else: self.setToolTip("") QToolTip.hideText() return super(LevelView, self).mouseMoveEvent(event)
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: if self._pressed: option = QtWidgets.QStyleOptionSlider() self.initStyleOption(option) groove = self.style().subControlRect( QtWidgets.QStyle.CC_Slider, option, QtWidgets.QStyle.SC_SliderGroove, self, ) handle = self.style().subControlRect( QtWidgets.QStyle.CC_Slider, option, QtWidgets.QStyle.SC_SliderHandle, self, ) value = self.style().sliderValueFromPosition( self.minimum(), self.maximum(), event.pos().x(), groove.width() ) handle.moveCenter(event.pos()) handle = handle.marginsAdded( QtCore.QMargins( handle.width(), handle.width(), handle.width(), handle.width() ) ) if self.hasTracking(): self.setValue2(value) self.repaint(handle) else: super().mouseMoveEvent(event)
def mouseReleaseEvent(self, event: QtGui.QMouseEvent) -> None: if self._pressed: self._pressed = False option = QtWidgets.QStyleOptionSlider() self.initStyleOption(option) groove = self.style().subControlRect( QtWidgets.QStyle.CC_Slider, option, QtWidgets.QStyle.SC_SliderGroove, self, ) handle = self.style().subControlRect( QtWidgets.QStyle.CC_Slider, option, QtWidgets.QStyle.SC_SliderHandle, self, ) value = self.style().sliderValueFromPosition( self.minimum(), self.maximum(), event.pos().x(), groove.width() ) handle.moveCenter(event.pos()) handle = handle.marginsAdded( QtCore.QMargins( handle.width(), handle.width(), handle.width(), handle.width() ) ) value = self.style().sliderValueFromPosition( self.minimum(), self.maximum(), event.pos().x(), groove.width() ) self.setSliderDown(False) self.setValue2(value) self.update() super().mouseReleaseEvent(event)
def mouseReleaseEvent(self, event: QMouseEvent): self.logger.debug(event.pos()) self.bottomright = (event.pos().x(), event.pos().y()) self.isDragging = False if not self.validClipRect(self.topleft, self.bottomright): msg = f"不正な選択範囲:選択範囲は左上から右下へ選択してください" self.logger.warning(msg) self.parent_window.wakeup(msg, "") self.hide() return cropped = self.img.crop((self.topleft[0], self.topleft[1], self.bottomright[0], self.bottomright[1])) try: ocr = OCRfromPILImage(cropped) except Exception as ex: import traceback traceback.print_exc() ocr = "OCR ERROR!!" #設定で有効であればクリップボードコピー if Config.config["copy_to_clipboard"] is True: pyperclip.copy(ocr) try: ja = Translate(ocr) except Exception as ex: ja = "TRANSLATE ERROR!!" self.parent_window.wakeup(ocr, ja) self.hide()
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: # pragma: no cover if (not event.buttons() & QtCore.Qt.LeftButton or (event.pos() - self.drag_start_pos).manhattanLength() < QtWidgets.QApplication.startDragDistance()): return super().mouseMoveEvent(event) index = self.tabAt(event.pos()) if index == -1: return super().mouseMoveEvent(event) rect = self.tabRect(index) pixmap = QtGui.QPixmap(rect.size()) self.render(pixmap, QtCore.QPoint(), QtGui.QRegion(rect)) mime_data = QtCore.QMimeData() mime_data.setData("application/x-pew2tabbar", QtCore.QByteArray().number(index)) drag = QtGui.QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(pixmap) drag.setDragCursor( QtGui.QCursor(QtCore.Qt.DragMoveCursor).pixmap(), QtCore.Qt.MoveAction) drag.exec_(QtCore.Qt.MoveAction)
def mouseMoveEvent(self, event: QMouseEvent) -> None: count: int = self.__listValue.__len__() if count <= 1: return pos: int = event.pos().x() if self.__horizontal else event.pos().y() target: int = self.width() if self.__horizontal else self.height() index: int = self.__listValue.index(self.__currentValue) if self.__pressed: # 数值到边界时,阻止继续往对应方向移动 if index is 0 and pos >= self.__pressedPos or index is count - 1 and pos <= self.__pressedPos: return self.__offset = pos - self.__pressedPos # 若移动速度过快时进行限制 if self.__offset > target // self.__percent: self.__offset = target // self.__percent elif self.__offset < -target // self.__percent: self.__offset = -target // self.__percent if self.__oldIndex != index: self.currentIndexChanged.emit(index) self.currentValueChanged.emit(self.__listValue[index]) self.__oldIndex = index self.update()
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: if self.nav_pos is not None and self.allow_navigation: pos = event.pos() offset = self.nav_pos - pos self.chart().scroll(offset.x(), -offset.y()) self.nav_pos = event.pos() else: super().mouseMoveEvent(event)
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: if self.last_pos is not None: pos = event.pos() offset = self.last_pos - pos self.chart().scroll(offset.x(), 0) self.last_pos = event.pos() else: super().mouseMoveEvent(event)
def mousePressEvent(self, event: QMouseEvent): if event.button() == Qt.LeftButton: self.logger.debug(self.topleft) self.topleft = (event.pos().x(), event.pos().y()) self.isDragging = True elif event.button() == Qt.RightButton: self.parent_window.wakeup("", "") self.hide()
def mousePressEvent(self, event: QtGui.QMouseEvent): self.opt.sliderPosition = self.first_position self._first_sc = self.style().hitTestComplexControl( QtWidgets.QStyle.CC_Slider, self.opt, event.pos(), self) self.opt.sliderPosition = self.second_position self._second_sc = self.style().hitTestComplexControl( QtWidgets.QStyle.CC_Slider, self.opt, event.pos(), self)
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: if "drag" in self.interaction_flags: dx = self._last_pos.x() - event.pos().x() dy = self._last_pos.y() - event.pos().y() self.horizontalScrollBar().setValue( self.horizontalScrollBar().value() + dx) self.verticalScrollBar().setValue( self.verticalScrollBar().value() + dy) self._last_pos = event.pos() return super().mouseMoveEvent(event)
def mousePressEvent(self, event: QtGui.QMouseEvent): if "zoom" in self.interaction_flags and event.button( ) == QtCore.Qt.LeftButton: self._last_pos = event.pos() self.setDragMode(QtWidgets.QGraphicsView.RubberBandDrag) super().mousePressEvent(event) elif (len(self.interaction_flags) == 0 and event.button() == QtCore.Qt.LeftButton ) or event.button() == QtCore.Qt.MiddleButton: self.setInteractionFlag("drag") self._last_pos = event.pos() else: super().mousePressEvent(event)
def mousePressEvent(self, e: QtGui.QMouseEvent): self.position = QPoint(e.globalX() - self.geometry().x(), e.globalY() - self.geometry().y()) if not self.m_isEditing: return if not self.m_infocus: return if not e.buttons() and QtCore.Qt.LeftButton: self.setCursorShape(e.pos()) return if e.button() == QtCore.Qt.RightButton: self.popupShow(e.pos()) e.accept()
def mouseMoveEvent(self, event: QtGui.QMouseEvent): """Implementation. Handles panning the editor view. """ if event.buttons() & Qt.MiddleButton: delta = self._lastMousePos - event.pos() hBar = self.horizontalScrollBar() vBar = self.verticalScrollBar() hBar.setValue(hBar.value() + delta.x()) vBar.setValue(vBar.value() + delta.y()) self._lastMousePos = event.pos() super().mouseMoveEvent(event)
def _resizing(self, event: QMouseEvent): self.resizing_happened = True if isinstance(self.level_ref.level, WorldMap): return x, y = event.pos().toTuple() level_x, level_y = self._to_level_point(x, y) dx = dy = 0 if self.mouse_mode & MODE_RESIZE_HORIZ: dx = level_x - self.resize_obj_start_point[0] if self.mouse_mode & MODE_RESIZE_VERT: dy = level_y - self.resize_obj_start_point[1] self.last_mouse_position = level_x, level_y selected_objects = self.get_selected_objects() for obj in selected_objects: obj.resize_by(dx, dy) self.level_ref.changed = True self.update()
def mousePressEvent(self, event: QMouseEvent) -> None: if self._chartIsSet and self._panEnabled and event.button( ) == Qt.MiddleButton: self._mousePressEventPos = event.pos() self._panOn = True QApplication.setOverrideCursor(QCursor(Qt.ClosedHandCursor)) super().mousePressEvent(event)
def mouseMoveEvent(self, event: QMouseEvent) -> None: y: int = event.pos().y() # Y轴必须是在高度范围内 topY: int = (y - self.__percentHeight // 2) if 0 <= topY <= self.__rightHeight and y < self.height(): # 自动计算纵坐标,转换成当前百分比 self.__percent = (1 - ( (y - self.__percentHeight / 2) / self.__rightHeight)) * 100 # 计算当前百分比对应的当前值 self.__value = self.__percent / 100 * (self.__maxValue - self.__minValue) # 计算当前背景图片对应百分比处中心点像素 self.initColor() elif topY <= 0: self.__value = self.__maxValue self.__percent = 100.0 self.__color = self.__topColor elif topY >= self.__rightHeight: self.__value = self.__minValue self.__percent = 0.0 self.__color = self.__bottomColor self.update() self.colorChanged.emit(self.__color, self.__value, self.__percent)
def mouseReleaseEvent(self, event: QtGui.QMouseEvent) -> None: if event.button() == QtCore.Qt.MouseButton.LeftButton: newReplaceable = self._calcReplaceable(event.pos()) if self._replaceable is None or self._replaceable != newReplaceable: self._setReplaceable(newReplaceable) else: self._setReplaceable(None)
def mousePressEvent(self, event: QtGui.QMouseEvent): """Overrides inherited mousePressEvent to emit appropriate filepath signals based on which columns were clicked, and to allow user to clear any selections by clicking off the displayed tree. Args: event (QtGui.QMouseEvent): QMouseEvent triggered by user """ index = self.indexAt(event.pos()) if index.row() == -1: self.clearSelection() self.setCurrentIndex(QModelIndex()) return super().mousePressEvent(event) model = self.model() source_model = self.model().sourceModel() full_path = source_model.filePath(model.mapToSource(index)) if index.column() == source_model.FILENAME: if not source_model.isDir(model.mapToSource(index)): qis_abs_path = full_path[full_path. index(__name__.split('.')[0]):] self.qlibrary_filepath_signal.emit(qis_abs_path) return super().mousePressEvent(event)
def mouseMoveEvent(self, event: QMouseEvent): x, y = self.world_view.mapFromParent(event.pos()).toTuple() x //= Block.WIDTH * 2 y //= Block.HEIGHT * 2 try: level_info = self.world.level_at_position(x, y) if level_info is None: self.setCursor(Qt.ArrowCursor) self.setToolTip("") QToolTip.hideText() else: self.setCursor(Qt.PointingHandCursor) level_name = self.world.level_name_at_position(x, y) object_set = level_info[0] object_set_name = OBJECT_SET_ITEMS[object_set].split(" ", 1)[1] layout_address, enemy_address = map(hex, level_info[1:]) self.setToolTip(f"<b>{level_name}</b><br/>" f"<u>Type:</u> {object_set_name}<br/>" f"<u>Objects:</u> {layout_address}<br/>" f"<u>Enemies:</u> {enemy_address}") except ValueError: pass return super(WorldMapLevelSelect, self).mouseMoveEvent(event)
def mousePressEvent(self, event: QtGui.QMouseEvent): if event.button() == QtCore.Qt.RightButton: entry = self.actionAt(event.pos()) if entry is not None: plugin_name = entry.text() options = [] escape = False new_screen = self.pyUbiForge.right_click_plugins.get_screen_options( plugin_name, options) while new_screen is not None and not escape: # show screen screen = PluginOptionsScreen(self.pyUbiForge, plugin_name, new_screen) escape = screen.escape if not escape: # pull options from screen options.append(screen.options) new_screen = self.pyUbiForge.right_click_plugins.get_screen_options( plugin_name, options) if not escape: entry.trigger() else: QtWidgets.QMenu.mousePressEvent(self, event) elif event.button() == QtCore.Qt.LeftButton: QtWidgets.QMenu.mousePressEvent(self, event)
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None: """ 重载mousePressEvent函数 :param a0: 事件 :return:None """ self.on_move_to_position(a0.pos())
def mouseMoveEvent(self, event: QMouseEvent = None) -> None: x: int = event.pos().x() y: int = event.pos().y() # 矫正X轴的偏差 if x <= self.__borderWidth: x = self.__borderWidth elif x >= self.width() - self.__borderWidth: x = self.width() - self.__borderWidth # 矫正Y轴的偏差 if y <= self.__borderWidth: y = self.__borderWidth elif y >= self.height() - self.__borderWidth: y = self.height() - self.__borderWidth # 指针必须在范围内 self.__lastPos = QPoint(x, y) # 获取当前坐标处的颜色值 self.__color = QColor(self.__bgPix.toImage().pixel(self.__lastPos)) # X坐标所在360分比为hue值 self.__hue = ((x - self.__borderWidth) / (self.width() - self.__borderWidth * 2)) * 360 # Y坐标所在高度的100分比sat值 self.__sat = 100 - ((y - self.__borderWidth) / (self.height() - self.__borderWidth * 2) * 100) self.update() self.colorChanged.emit(self.__color, self.__hue, self.__sat)
def mousePressEvent(self, event: QtGui.QMouseEvent): pos_x = event.pos().x() pos_y = event.pos().y() min_x, min_y, width, height = self.get_overlay_pos() self.pointed.emit(float(pos_x-min_x)/width, float(pos_y-min_y)/height, [pos_x, pos_y, min_x, min_y, width, height]) self.draw_crossline(pos_x, pos_y) super(SliceViewer, self).mousePressEvent(event)
def mouseMoveEvent(self, event: QMouseEvent): """ Handle mouse move, moving the target view port to cursor position in target scene when mouse is pressed. """ if self._is_mouse_pressed: self._target_view.centerOn( self.map_event_pos_to_target_scene_pos(event.pos())) event.accept()
def mousePressEvent(self, event: QtGui.QMouseEvent): """ Overrides inherited mousePressEvent to allow user to clear any selections by clicking off the displayed tree. Then calls the inherited mousePressEvent""" myindex = self.indexAt(event.pos()) if myindex.row() == -1: self.clearSelection() self.setCurrentIndex(QModelIndex()) super().mousePressEvent(event)
def _on_left_mouse_button_down(self, event: QMouseEvent): if self._select_objects_on_click(event): x, y = event.pos().toTuple() obj = self.object_at(x, y) if obj is not None: edge = self._cursor_on_edge_of_object(obj, event.pos()) if SETTINGS["resize_mode"] == RESIZE_LEFT_CLICK and edge: self._try_start_resize(self._resize_mode_from_edge(edge), event) else: self.drag_start_point = obj.x_position, obj.y_position else: self._start_selection_square(event.pos())
def mousePressEvent(self, event: QtGui.QMouseEvent): entry: TreeViewEntry = self.itemAt(event.pos()) if entry is not None and entry.depth == 3 and entry.childCount() == 0: forge_file_name, datafile_id = entry.forge_file_name, entry.datafile_id self.pyUbiForge.forge_files[forge_file_name].decompress_datafile( datafile_id) self.populate_tree() QtWidgets.QTreeWidget.mousePressEvent(self, event)
def mousePressEvent(self, mouseEvent: QMouseEvent): closestNode = self.playerNode.closest(mouseEvent.pos() - self.paintOffset) direction = closestNode.row - self.playerNode.row, closestNode.column - self.playerNode.column crawlNode = self.playerNode.crawl(direction) self.animation = QPropertyAnimation(self, b"player", self) if len(crawlNode.links) > 2: self.animation.setEasingCurve(QEasingCurve.OutBack); else: self.animation.setEasingCurve(QEasingCurve.OutBounce); self.animation.setStartValue(self.player) self.animation.setEndValue(crawlNode.point) self.animation.setDuration(400) self.animation.start() self.playerNode = crawlNode if self.playerNode == self.finishNode: QMessageBox.information(self, self.tr("Victory!"), self.tr("You won :)"), QMessageBox.Ok) self.initMaze()