def last_visible_row(self): geom = self.viewport().geometry() for y in xrange(geom.bottom(), geom.bottom() - 2 * self.spacing(), -5): for x in xrange(geom.left(), (self.spacing() * 2) + geom.left(), 5): ans = self.indexAt(QPoint(x, y)).row() if ans > -1: item_width = self.delegate.item_size.width( ) + 2 * self.spacing() return ans + (geom.width() // item_width)
def __add_node(self, node): widget = NodeWidget(node, parent=self) # Set initial position centered to given point widget.move(QPoint(node.x - widget.width() / 2, node.y - widget.height() / 2)) widget.observe(self.__on_node_click) self.__model_widget_map[node] = widget self.__widget_model_map[widget] = node widget.show() self.__initalize_label(node)
def __InitData(self): self.__size = QSize(900, 700) # 新建QPixmap作为画板,尺寸为__size self.__board = QPixmap(self.__size) self.__board.fill(Qt.white) # 用白色填充画板 self.__IsEmpty = True # 默认为空画板 self.EraserMode = False # 默认为禁用橡皮擦模式 self.__lastPos = QPoint(0, 0) # 上一次鼠标位置 self.__currentPos = QPoint(0, 0) # 当前的鼠标位置 self.__painter = QPainter() # 新建绘图工具 self.__thickness = 10 # 默认画笔粗细为10px self.__penColor = QColor("black") # 设置默认画笔颜色为黑色 self.__colorList = QColor.colorNames() # 获取颜色列表
def __init__(self): super(ImageBox, self).__init__() self.img = None self.scaled_img = None self.point = QPoint(0, 0) self.start_pos = None self.end_pos = None self.left_click = False self.scale = 1 self.SR_flag = False
def click_cancel(widget): test = QTestHelper() test.sleep() btn = [ b for b in widget.buttons() if "Cancel" in b.text() or "Отмена" in # i18n b.text().replace("&", "") ][0] test.mouse_click(btn, QPoint(1, 1)) self.assertEqual(widget.text(), "CORRECT")
def mouse_move_event_move(self, mouse_event): position = QPoint(mouse_event.x(), mouse_event.y()) position = self.mapToGlobal(position) position = self.ui.patternFrame.mapFromGlobal(position) if not self.move_mouse.is_started(): self.move_mouse.start_drag(position) else: self.move_mouse.move_drag(position) if self.pattern is not None: self.pattern.move_selected_starfishes(self.move_mouse.delta())
def test_insert_image(self): diff(self.text.toHtml()) self.test.wrd_click(self.text, "!!!") image = self.editor.view.toolbar.controls["image"] with patch.object(QFileDialog, "exec_", returning_value=True): self.test.mouse_click(image, QPoint(1, 1)) changed = diff(self.text.toHtml()) self.assertTrue('image' in changed["add"]) self.test.sleep()
def mouse_dbl_click(self, widget: QWidget, pos: QPoint = QPoint(0, 0), btn: int = Qt.LeftButton, delay: float = 0) -> None: """Send mouse double click to widget""" widget.setFocus() mouse_dbl = self._mouse_event(QEvent.MouseButtonDblClick, pos, btn) QCoreApplication.postEvent(widget, mouse_dbl) self.sleep(delay)
def __init__(self, parent=None): super().__init__(parent) self._enabled = False self._timeout = 0 self._notifType = 0 # Type self._position = QPoint() self._desktopNotif = None # QPointer<DesktopNotification> self._uint = 0 # quint32 self.loadSettings()
def test_clear_format(self): clear = self.text.toHtml() self.test.wrd_d_click(self.text, "WdItOr") bold = self.editor.view.toolbar.controls["bold"] self.test.mouse_click(bold, QPoint(1, 1)) self.test.wrd_d_click(self.text, "") self.assertNotEqual(clear, self.text.toHtml()) eraser = self.editor.view.toolbar.controls["eraser"] with patch.object(QMessageBox, 'question', return_value=QMessageBox.No): self.test.mouse_click(eraser, QPoint(1, 1)) self.assertNotEqual(clear, self.text.toHtml()) with patch.object(QMessageBox, 'question', return_value=QMessageBox.Yes): self.test.mouse_click(eraser, QPoint(1, 1)) self.assertEqual(clear, self.text.toHtml()) self.test.sleep()
def __reposition(self): """ Reposition on parent widget based on own size and owner position. """ center = self.__owner_widget.get_center() p = QPoint(center.x() + self.__owner.label_dx - self.width() / 2, center.y() + self.__owner.label_dy - self.height() / 2) self.move(p)
def branch_transformed_event(self, event: CurvedBranchTransformedEvent): """ Triggered after branch has been transformed. Makes sure the spline positions is udpated accordingly. """ if self.get_branch() is event.branch: new_spline2 = QPoint(event.branch.spline2_x, event.branch.spline2_y) if not self._spline_abs == new_spline2: self._spline_abs = new_spline2 self.updateGeometry()
def imagen(self, nombre): self.imag = nombre self.edicion.hide() self.edicion.origin = QPoint() self.edicion.ruber = QRubberBand(QRubberBand.Rectangle, self.edicion) self.pixmap4 = QPixmap(nombre).scaled(781, 621) self.pixmap = self.pixmap4.toImage() self.edicion.setPixmap(self.pixmap4) self.edicion.setAlignment(Qt.AlignCenter) self.edicion.show() self.show()
def updateGeometry(self): # Get absolute position of handle by spline __handle_pos_abs = rotate_point( self._origin_abs, self._spline_abs, math.radians(180)) # Calculate bounding rect including circle and line rect = QRect(self._origin_abs, __handle_pos_abs).normalized() # Line circle_offset = QPoint(self.__circle_width + self.__radius, self.__circle_width + self.__radius) circle_rect = QRect(__handle_pos_abs - circle_offset, # Circle __handle_pos_abs + circle_offset).normalized() self.setGeometry(rect.united(circle_rect)) self.__handle_pos = self.mapFromParent(__handle_pos_abs) self._origin = self.mapFromParent(self._origin_abs) self._spline = self.mapFromParent(self._spline_abs) # Create line self.line_path = QPainterPath() self.line_path.moveTo(self.__handle_pos) self.line_path.lineTo(self._origin) # Create and set mask circle_mask_rect = QRect(__handle_pos_abs - circle_offset, # Circle __handle_pos_abs + circle_offset).normalized() circle_region = QRegion(circle_mask_rect, QRegion.Ellipse) offset = self.mapFromParent(QPoint()) circle_region.translate(offset) # Create stroke to give space for anti aliasing pixels of line stroker = QPainterPathStroker() stroker.setWidth(4) line_stroke = stroker.createStroke(self.line_path) mask = circle_region.united( QRegion(line_stroke.toFillPolygon().toPolygon())) self.setMask(mask) super().updateGeometry()
def test_hidden_char(self): self.test.wrd_d_click(self.text, "Hello") fn = self.editor.view.toolbar.controls["font-size"] self.test.key_click(fn, Qt.Key_A, "", Qt.ControlModifier) self.test.key_clicks(fn, "5", delay=1) y = self.test.get_xy_for_word(self.text, "YOU").y() self.test.wrd_d_click(self.text, "WdItOr") invis_sym = self.editor.view.toolbar.controls["invisible-symbol"] self.test.mouse_click(invis_sym, QPoint(1, 1)) # reduced the size of the 1st line (with word "Hello") y1 = self.test.get_xy_for_word(self.text, "YOU").y() self.test.wrd_d_click(self.text, "") self.assertNotEqual(y, y1) self.test.sleep() # switch off (for next tests) self.test.mouse_click(invis_sym, QPoint(1, 1))
def mousePressEvent(self, event): index = self.indexAt(QPoint(event.pos().x(), event.pos().y())) row, _ = index.row(), index.column() if row < 0: return self.setCurrentIndex(index) if event.buttons() == Qt.RightButton: rmenu = QMenu() rmenu.setAttribute(Qt.WA_DeleteOnClose) delete_action = rmenu.addAction("删除") delete_action.triggered.connect(self.delete_row_record) rmenu.exec_(QCursor.pos())
def __InitData(self): # self.__size = QSize(480,460) # self.__size = QSize(280, 280) # self.__size = QSize(600, 600) self.__size = QSize(280, 280) self.__board = QPixmap(self.__size) #新建QPixmap作为画板,宽350px,高250px self.__board.fill(Qt.black) #用白色填充画板 self.__IsEmpty = True #默认为空画板 self.EraserMode = False #默认为禁用橡皮擦模式 self.__lastPos = QPoint(0, 0) self.__currentPos = QPoint(0, 0) self.__painter = QPainter() self.__painter.setRenderHints(QPainter.Antialiasing, True) self.__thickness = 60 #默认画笔粗细为20px self.__penColor = QColor("white") #设置默认画笔颜色为黑色 self.__colorList = QColor.colorNames() #获取颜色列表
def paintEvent(self, event: QPaintEvent): # Init painter pen = QPen() pen.setWidth(self.__pen_width) pen.setColor(self.__line_color) painter = QPainter() painter.begin(self) painter.setPen(pen) # Horizontal lines start_h = QPoint(0, self.__offset.y()) end_h = QPoint(self.width(), self.__offset.y()) distance_h = QPoint(0, self.__grid_size) # Vertical lines start_v = QPoint(self.__offset.x(), 0) end_v = QPoint(self.__offset.x(), self.height()) distance_v = QPoint(self.__grid_size, 0) while start_h.y() < self.height(): painter.drawLine(start_h, end_h) start_h += distance_h end_h += distance_h while start_v.x() < self.width(): painter.drawLine(start_v, end_v) start_v += distance_v end_v += distance_v painter.end()
def test_all(self): self.lbl.setText("CURRENT TEST: test_all") # no select color self.test.mouse_click(self.cp, QPoint(1, 1)) self.test.sleep() self.test.mouse_click(self.cw, QPoint(-1, 1)) self.test.sleep() self.assertEqual(self.selected_colors, []) # select first button in colors grid self.test.mouse_click(self.cp, QPoint(1, 1)) self.test.sleep() self.test.mouse_click(self.cw.clrbtn[0], QPoint(1, 1)) self.test.sleep() self.assertEqual(self.selected_colors[-1], self.cp._colors[0]) # select other color with patch.object(self.cp, '_get_color', return_value=QColor("blue")): self.test.mouse_click(self.cp, QPoint(1, 1)) self.test.sleep() self.test.mouse_click(self.cw.clrbtn[-1], QPoint(3, 3)) self.test.sleep() self.assertEqual(self.selected_colors[-1], QColor("blue").name()) self.test.sleep()
def __init__(self, bookmark, parent=None): super().__init__(parent) self._bookmark = bookmark # BookmarkItem self._window = None # BrowserWindow self._showOnlyIcon = False self._showOnlyText = True self._dragStartPosition = QPoint() self._init() if self._bookmark.isFolder(): self.acceptDrops(True)
def mouse_move_event_select(self, mouse_event): position = QPoint(mouse_event.x(), mouse_event.y()) position = self.mapToGlobal(position) position = self.ui.patternFrame.mapFromGlobal(position) position = self._transformations.point_from_screen(position) if not self.select_mouse.is_started(): self.select_mouse.start_drag(position) else: self.select_mouse.move_drag(position) if self.pattern is not None: selection_rect = QRectF(self.select_mouse.start_position(), self.select_mouse.end_position()) self.pattern.select_in_rect(selection_rect)
def __init__(self): super(ImageBox, self).__init__() self.img = None self.img_array = None self.img_array_HLS = None self.width = None self.height = None self.scaled_img = None self.point = QPoint(0, 0) self.start_pos = None self.end_pos = None self.left_click = False self.scale = 1
def open_modal(self): if self.sort_mode or self.filter_mode: pos = self.mapToGlobal(QPoint(0, self.height())) if self.filter_modal is None: self.filter_modal = FilterModal(parent=self, title=self.title, name_filter=self.name_filter, pos=pos, sort_mode=self.sort_mode, filter_mode=self.filter_mode, width=self.width()) self.filter_modal.WANT_TO_CLOSE_SIGNAL.connect( self.close_modal)
def paintEvent(self, ev): offset = QPoint(0, 0) p = QPainter(self) p.setClipRect(ev.rect()) bottom = self.rect().bottom() if self.results: for i, (prefix, full, text) in enumerate(self.results): size = prefix.size() if offset.y() + size.height() > bottom: break self.max_result = i offset.setX(0) if i in (self.current_result, self.mouse_hover_result): p.save() if i != self.current_result: p.setPen(Qt.PenStyle.DotLine) p.drawLine(offset, QPoint(self.width(), offset.y())) p.restore() offset.setY(offset.y() + self.MARGIN // 2) p.drawStaticText(offset, prefix) offset.setX(self.maxwidth + 5) p.drawStaticText(offset, self.divider) offset.setX(offset.x() + self.divider.size().width()) p.drawStaticText(offset, full) offset.setY(offset.y() + size.height() + self.MARGIN // 2) if i in (self.current_result, self.mouse_hover_result): offset.setX(0) p.save() if i != self.current_result: p.setPen(Qt.PenStyle.DotLine) p.drawLine(offset, QPoint(self.width(), offset.y())) p.restore() else: p.drawText(self.rect(), Qt.AlignmentFlag.AlignCenter, _('No results found')) p.end()
def popup(self, select_first=True): if self.disable_popup: return p = self m = p.model() widget = self.completer_widget() if widget is None: return screen = QApplication.desktop().availableGeometry(widget) h = (p.sizeHintForRow(0) * min(self.max_visible_items, m.rowCount()) + 3) + 3 hsb = p.horizontalScrollBar() if hsb and hsb.isVisible(): h += hsb.sizeHint().height() rh = widget.height() pos = widget.mapToGlobal(QPoint(0, widget.height() - 2)) w = min(widget.width(), screen.width()) if (pos.x() + w) > (screen.x() + screen.width()): pos.setX(screen.x() + screen.width() - w) if pos.x() < screen.x(): pos.setX(screen.x()) top = pos.y() - rh - screen.top() + 2 bottom = screen.bottom() - pos.y() h = max(h, p.minimumHeight()) if h > bottom: h = min(max(top, bottom), h) if top > bottom: pos.setY(pos.y() - h - rh + 2) p.setGeometry(pos.x(), pos.y(), w, h) if (tweaks['preselect_first_completion'] and select_first and not self.currentIndex().isValid() and self.model().rowCount() > 0): self.setCurrentIndex(self.model().index(0)) if not p.isVisible(): if isosx and get_osx_version() >= (10, 9, 0): # On mavericks the popup menu seems to use a font smaller than # the widgets font, see for example: # https://bugs.launchpad.net/bugs/1243761 fp = QFontInfo(widget.font()) f = QFont() f.setPixelSize(fp.pixelSize()) self.setFont(f) p.show()
def loadSettings(self): settings = Settings() settings.beginGroup('Notifications') self._enabled = settings.value('Enabled', True) self._timeout = settings.value('Timeout', 6000) if const.OS_UNIX: # && !defined(DISABLE_DBUS) if settings.value('UseNativeDesktop', True): self._notifType = self.DesktopNative else: self._notifType = self.PopupWidget else: self._notifType = self.PopupWidget self._position = settings.value('Position', QPoint(10, 10), type=QPoint) settings.endGroup()
def __init__(self, csvfile): super(RtReadDataBase, self).__init__(csvfile) for name in self.db.keys(): self.db[name]['max'] = float(self.db[name]['max']) self.db[name]['min'] = float(self.db[name]['min']) self.db[name]['wr'] = True if (self.db[name]['wr'] == 'TRUE') else False self.db[name]['value'] = None self.db[name]['step'] = float(self.db[name]['step']) args = self.db[name]['valid'].split('~') x = float(args[0]) y = float(args[1]) self.db[name]['valid'] = QPoint(x, y)
def draw_circle(self, qp): if self.do_paint: qp.setBrush(QColor(255, 255, 0)) qp.setPen(PyQt5.QtCore.Qt.NoPen) radius = random.randint(10, 100) self.circles.append([ QPoint(random.randint(radius, self.width() - radius), random.randint(radius, self.height() - radius)), radius, radius ]) for i in self.circles: qp.drawEllipse(*i) self.do_paint = False
def drag_data(self): m = self.model() rows = self.selectionModel().selectedRows() paths = [force_unicode(p, enc=filesystem_encoding) for p in m.paths(rows) if p] md = QMimeData() md.setData('application/calibre+from_device', 'dummy') md.setUrls([QUrl.fromLocalFile(p) for p in paths]) drag = QDrag(self) drag.setMimeData(md) cover = self.drag_icon(m.cover(self.currentIndex().row()), len(paths) > 1) drag.setHotSpot(QPoint(-15, -15)) drag.setPixmap(cover) return drag
def mousePressEvent(self, event): ''' @param: event QMouseEvent ''' super().mousePressEvent(event) if gVar.app.plugins().processMousePress(const.ON_TabBar, self, event): return if event.buttons() == Qt.LeftButton and not self.emptyArea( event.pos()): self._dragStartPosition = event.pos() else: self._dragStartPosition = QPoint()