示例#1
0
class Winform(QWidget):
	def __init__(self,parent=None):
		super(Winform,self).__init__(parent)
		self.setWindowTitle("不规则窗体的实现例子") 

		self.pix = QBitmap("./images/mask.png")
		self.resize(self.pix.size())
		self.setMask(self.pix)
         
	def paintEvent(self,event):
		painter = QPainter(self)
        #在指定区域直接绘制窗口背景
		painter.drawPixmap(0,0,self.pix.width(),self.pix.height(),QPixmap("./images/screen1.jpg"))
示例#2
0
    def make_cypherseed(self, img, rawnoise, calibration=False, is_seed = True):
        img = img.convertToFormat(QImage.Format_Mono)
        p = QPainter()
        p.begin(img)
        p.setCompositionMode(26) #xor
        p.drawImage(0, 0, rawnoise)
        p.end()
        cypherseed = self.pixelcode_2x2(img)
        cypherseed = QBitmap.fromImage(cypherseed)
        cypherseed = cypherseed.scaled(self.f_size, Qt.KeepAspectRatio)
        cypherseed = self.overlay_marks(cypherseed, True, calibration)

        if not is_seed:
            self.filename_prefix = 'custom_secret_'
            self.was = _('Custom secret')
        else:
            self.filename_prefix = self.wallet_name + '_seed_'
            self.was = self.wallet_name + ' ' + _('seed')
            if self.extension:
                self.ext_warning(self.c_dialog)


        if not calibration:
            self.toPdf(QImage(cypherseed))
            QDesktopServices.openUrl(QUrl.fromLocalFile(self.get_path_to_revealer_file('.pdf')))
            cypherseed.save(self.get_path_to_revealer_file('.png'))
            self.bcrypt(self.c_dialog)
        return cypherseed
示例#3
0
	def __init__(self,parent=None):
		super(Winform,self).__init__(parent)
		self.setWindowTitle("不规则窗体的实现例子") 

		self.pix = QBitmap("./images/mask.png")
		self.resize(self.pix.size())
		self.setMask(self.pix)
示例#4
0
    def seed_img(self, is_seed = True):

        if is_seed:
            try:
                cseed = self.get_seed()
            except UserCancelled:
                return
            except InvalidPassword as e:
                self.d.show_error(str(e))
                return
            if not cseed:
                self.d.show_message(_("This wallet has no seed"))
                return
            txt = cseed.upper()
        else:
            txt = self.txt.upper()

        img = QImage(self.SIZE[0], self.SIZE[1], QImage.Format_Mono)
        bitmap = QBitmap.fromImage(img, Qt.MonoOnly)
        bitmap.fill(Qt.white)
        painter = QPainter()
        painter.begin(bitmap)
        QFontDatabase.addApplicationFont(os.path.join(os.path.dirname(__file__), 'SourceSansPro-Bold.otf') )
        if len(txt) < 102 :
            fontsize = 15
            linespace = 15
            max_letters = 17
            max_lines = 6
            max_words = 3
        else:
            fontsize = 12
            linespace = 10
            max_letters = 21
            max_lines = 9
            max_words = int(max_letters/4)

        font = QFont('Source Sans Pro', fontsize, QFont.Bold)
        font.setLetterSpacing(QFont.PercentageSpacing, 100)
        font.setPixelSize(fontsize)
        painter.setFont(font)
        seed_array = txt.split(' ')

        for n in range(max_lines):
            nwords = max_words
            temp_seed = seed_array[:nwords]
            while len(' '.join(map(str, temp_seed))) > max_letters:
               nwords = nwords - 1
               temp_seed = seed_array[:nwords]
            painter.drawText(QRect(0, linespace*n , self.SIZE[0], self.SIZE[1]), Qt.AlignHCenter, ' '.join(map(str, temp_seed)))
            del seed_array[:nwords]

        painter.end()
        img = bitmap.toImage()
        if (self.rawnoise == False):
            self.make_rawnoise()

        self.make_cypherseed(img, self.rawnoise, False, is_seed)
        return img
示例#5
0
 def calibration(self):
     img = QImage(self.SIZE[0], self.SIZE[1], QImage.Format_Mono)
     bitmap = QBitmap.fromImage(img, Qt.MonoOnly)
     bitmap.fill(Qt.black)
     self.make_calnoise()
     img = self.overlay_marks(self.calnoise.scaledToHeight(self.f_size.height()), False, True)
     self.calibration_pdf(img)
     QDesktopServices.openUrl(QUrl.fromLocalFile(self.get_path_to_calibration_file()))
     return img
示例#6
0
    def make_revealer(self):
        revealer = self.pixelcode_2x2(self.rawnoise)
        revealer.invertPixels()
        revealer = QBitmap.fromImage(revealer)
        revealer = revealer.scaled(self.f_size, Qt.KeepAspectRatio)
        revealer = self.overlay_marks(revealer)

        self.filename_prefix = 'revealer_'
        revealer.save(self.get_path_to_revealer_file('.png'))
        self.toPdf(QImage(revealer))
        QDesktopServices.openUrl(QUrl.fromLocalFile(self.get_path_to_revealer_file('.pdf')))
示例#7
0
 def calibration(self):
     img = QImage(self.SIZE[0], self.SIZE[1], QImage.Format_Mono)
     bitmap = QBitmap.fromImage(img, Qt.MonoOnly)
     bitmap.fill(Qt.black)
     self.make_calnoise()
     img = self.overlay_marks(
         self.calnoise.scaledToHeight(self.f_size.height()), False, True)
     self.calibration_pdf(img)
     QDesktopServices.openUrl(
         QUrl.fromLocalFile(self.get_path_to_calibration_file()))
     return img
示例#8
0
 def setWindowRadius(self, n_px):
     """
     圆边
     :param n_px: 弧度
     :return:
     """
     objBitmap = QBitmap(self.size())
     painter = QPainter(objBitmap)
     painter.setBrush(QColor(0, 0, 0))
     painter.drawRoundedRect(self.rect(), n_px, n_px)
     self.setMask(objBitmap)
示例#9
0
class ShapeWidget(QWidget):
    def __init__(self, parent=None):
        super(ShapeWidget, self).__init__(parent)
        self.setWindowTitle("不规则的,可以拖动的窗体实现例子")
        self.mypix()

# 显示不规则 pic

    def mypix(self):
        self.pix = QBitmap("./images/mask.png")
        self.resize(self.pix.size())
        self.setMask(self.pix)
        print(self.pix.size())
        self.dragPosition = None

    # 重定义鼠标按下响应函数mousePressEvent(QMouseEvent)和鼠标移动响应函数mouseMoveEvent(QMouseEvent),使不规则窗体能响应鼠标事件,随意拖动。
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.m_drag = True
            self.m_DragPosition = event.globalPos() - self.pos()
            event.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))
        if event.button() == Qt.RightButton:
            self.close()

    def mouseMoveEvent(self, QMouseEvent):
        if Qt.LeftButton and self.m_drag:
            # 当左键移动窗体修改偏移值
            self.move(QMouseEvent.globalPos() - self.m_DragPosition)
            QMouseEvent.accept()

    def mouseReleaseEvent(self, QMouseEvent):
        self.m_drag = False
        self.setCursor(QCursor(Qt.ArrowCursor))

#一般 paintEvent 在窗体首次绘制加载, 要重新加载paintEvent 需要重新加载窗口使用 self.update() or  self.repaint()

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(0, 0, self.width(), self.height(),
                           QPixmap("./images/boy.png"))
示例#10
0
    def loadFromImage(self, image, fileName):
        self.mImageSource = fileName
        if (image.isNull()):
            self.mImage = QPixmap()
            return False

        self.mImage = QPixmap.fromImage(image)
        if (self.mTransparentColor.isValid()):
            mask = image.createMaskFromColor(self.mTransparentColor.rgb())
            self.mImage.setMask(QBitmap.fromImage(mask))

        return True
示例#11
0
    def loadFromImage(self, image, fileName):
        self.mImageSource = fileName
        if (image.isNull()):
            self.mImage = QPixmap()
            return False

        self.mImage = QPixmap.fromImage(image)
        if (self.mTransparentColor.isValid()):
            mask = image.createMaskFromColor(self.mTransparentColor.rgb())
            self.mImage.setMask(QBitmap.fromImage(mask))

        return True
示例#12
0
    def make_revealer(self):
        revealer = self.pixelcode_2x2(self.rawnoise)
        revealer.invertPixels()
        revealer = QBitmap.fromImage(revealer)
        revealer = revealer.scaled(self.f_size, Qt.KeepAspectRatio)
        revealer = self.overlay_marks(revealer)

        self.filename_prefix = 'revealer_'
        revealer.save(self.get_path_to_revealer_file('.png'))
        self.toPdf(QImage(revealer))
        QDesktopServices.openUrl(
            QUrl.fromLocalFile(self.get_path_to_revealer_file('.pdf')))
示例#13
0
    def __init__(self, parent):
        super(Ui_ScShot_Logic, self).__init__()
        self.setupUi(self) # 加载设计师画的界面
        self.p = parent

        # 主窗口设置
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)  # 隐藏标题栏
        self.pixPrtSc = QApplication.primaryScreen().grabWindow(QApplication.desktop().winId())  # 截取整个屏幕(QPixmap类型)
        self.resize(self.pixPrtSc.size())  # 设置主窗口大小
        p = QPalette()
        p.setBrush(self.backgroundRole(), QBrush(self.pixPrtSc))
        self.setPalette(p)  # 设置主窗口背景
        self.flagDrawing = False  # 主窗口的鼠标拖动标记,已经为子

        self.wid = QLabel(self)
        self.wid.lower()
        # self.wid.raise_() # 最上层
        self.wid.resize(self.size())
        self.wid.move(0, 0)
        self.wid.setStyleSheet('border:3px solid #00FFFF;')
        # self.wid.hide()


        # 阴影容器设置
        self.wTop.resize(self.size())  # 设置wTop也为屏幕大小
        self.blackMask = QBitmap(self.size())  # 创建位图,全屏大小
        self.blackMask.fill(Qt.black)  # 填充位图为全黑。显示效果为原本wTop的背影,如果全白,相当于把wTop擦掉了。
        self.wTop.setMask(self.blackMask)  # 设置self.wTop的遮罩为self.blackMask
        self.wTop.enterEvent = self.wTop_EnterEvent  # 设置wTop的鼠标进入事件。事件内有详细注释。
        self.flagWTopEnter = False  # wTop的鼠标进入事件的标记

        # 其它需要初始化的
        self.btnOk.clicked.connect(self.slot_ScShot_btns)
        self.btnSaveAs.clicked.connect(self.slot_ScShot_btns)
        self.wFunc.hide()  # 先隐藏功能按钮容器
        self.wInfo.hide() # 本来可以不用隐藏,再让后面显示,但是那样它会闪一下。因为原来的位置是在Qt设计师中乱放的。
        self.strDpi = "0 x 0"
        self.flag = False
示例#14
0
    def get_mask(self):
        # Mask 생성. QBitmap 변환을 위해서 not 연산
        mask = cv.bitwise_not(self._mask)

        # QImage 로 변환하기위해 convert color
        mask = cv.cvtColor(mask, cv.COLOR_BGR2RGB)

        # QImage 생성
        height, width = self._mask.shape[:2]
        mono = QImage(mask, width, height, QImage.Format_RGB888)

        # QBitmap 생성
        bitmap = QBitmap(width, height).fromImage(mono)
        return bitmap
示例#15
0
 def __init__(self,MW,pos,img):
     super().__init__()
     self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
     self.setStyleSheet('''background-color:black; ''')
     self.setWindowOpacity(0.5)  #设置透明度
     self.parent=MW
     # self.pix = QBitmap("Images/mask.png")  # 蒙版
     self.pix =QBitmap("Images/mask.png")  # 蒙版
     self.sw=float(img.width())/self.pix.width()
     self.sh=float(img.height())/self.pix.height()
     print(self.pix.size())
     self.pix=self.pix.transformed(QTransform().scale(self.sw, self.sh))
     self.resize(self.pix.size())  # 设置当前GUI主界面和蒙版图片一致
     print(self.pix.size())
     self.move(pos)
     self.spx=5
     self.spy=5
     self.epx=400
     self.epy=100
     self.startPoint=QPoint(0,0)
     self.endPoint=QPoint(0,0)
     self.m_flag=False
     self.show()
示例#16
0
def autocrop(q_image, q_color):
    """Automatically crop a qt image around the pixels not of a given color.

    Args:
        q_image (QImage):
        q_color (QColor):

    Returns:
        QImage: A newly cropped Qt image. The passed-in image is left
            unmodified.
    """

    mask = q_image.createMaskFromColor(q_color.rgb(), _QT_MASK_IN_COLOR)
    crop_rect = QRegion(QBitmap.fromImage(mask)).boundingRect()
    return q_image.copy(crop_rect)
示例#17
0
    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.endPoint = event.pos()
            self.paintMask()  # 确保mask绘制完整
            self.isDrawing = False

            if self.endPoint.x() - self.startPoint.x() > 10 and self.endPoint.y(
            ) - self.startPoint.y() > 10:  # 框选区域太小或从右至左框选不进行截图
                self.screenshot = self.screenshot_full_screen.copy(
                    QRect(self.startPoint, self.endPoint))  # 截取框选区域
                self.hide()  # 隐藏抓取工具窗口
                self.screenshotWindow.close()  # 关闭全屏截图显示窗口
                self.sigDisplay.emit()  # 触发信号创建新的子窗口来显示截图

            self.setMask(QBitmap((self.blackMask.copy())))  # 框选操作结束, 恢复窗口mask
示例#18
0
def autoCropRect(image):
    """Return a QRect specifying the contents of the QImage.

    Edges of the image are trimmed if they have the same color.

    """
    # pick the color at most of the corners
    colors = collections.defaultdict(int)
    w, h = image.width(), image.height()
    for x, y in (0, 0), (w - 1, 0), (w - 1, h - 1), (0, h - 1):
        colors[image.pixel(x, y)] += 1
    most = max(colors, key=colors.get)
    # let Qt do the masking work
    mask = image.createMaskFromColor(most)
    return QRegion(QBitmap.fromImage(mask)).boundingRect()
示例#19
0
def autoCropRect(image):
    """Returns a QRect specifying the contents of the QImage.

    Edges of the image are trimmed if they have the same color.

    """
    # pick the color at most of the corners
    colors = collections.defaultdict(int)
    w, h = image.width(), image.height()
    for x, y in (0, 0), (w - 1, 0), (w - 1, h - 1), (0, h - 1):
        colors[image.pixel(x, y)] += 1
    most = max(colors, key=colors.get)
    # let Qt do the masking work
    mask = image.createMaskFromColor(most)
    return QRegion(QBitmap.fromImage(mask)).boundingRect()
示例#20
0
    def load_img(self, c):
        global counter
        counter += 1
        imager = Imager(self.state["Title"], self.state["Artist"])
        data = imager.get_data()

        if (c + 1 != counter):
            return

        pixmap = QPixmap()
        pixmap.loadFromData(data)

        map = QBitmap(pixmap.size())
        map.fill(Qt.color0)
        painter = QPainter(map)
        painter.setBrush(Qt.color1)
        painter.drawRoundedRect(0, 0, pixmap.width(), pixmap.height(), 10, 10)
        painter.end()

        self.app.label.setScaledContents(True)
        pixmap.setMask(map)
        self.app.label.setPixmap(
            pixmap.scaled(self.app.label.size(), QtCore.Qt.KeepAspectRatio,
                          QtCore.Qt.SmoothTransformation))
示例#21
0
文件: range.py 项目: topud/Dango-ocr
    def paintEvent(self, event):

        try:
            if self.isDrawing:
                self.mask = self.blackMask.copy()
                pp = QPainter(self.mask)
                pen = QPen()
                pen.setStyle(Qt.NoPen)
                pp.setPen(pen)
                brush = QBrush(Qt.white)
                pp.setBrush(brush)
                pp.drawRect(QRect(self.startPoint, self.endPoint))
                self.setMask(QBitmap(self.mask))
        except Exception:
            write_error(format_exc())
示例#22
0
    def __init__(self):
        super().__init__()
        self.setWindowTitle('窗体')
        print(self.windowTitle())

        self.setGeometry(100, 100, 400, 300)
        print(self.size())
        print(self.pos())
        print(self.geometry())

        # 使用内置光标
        # 使用CursorShape类型
        self.setCursor(Qt.ForbiddenCursor)
        self.setCursor(Qt.CursorShape(Qt.ForbiddenCursor))
        self.setCursor(Qt.CursorShape(14))  # 不能直接使用整数14,必须是CursorShape类型或者QCursor类型
        print(Qt.ForbiddenCursor, type(Qt.ForbiddenCursor))
        print(self.cursor(), type(self.cursor()))

        # 使用QCursor类型
        self.setCursor(QCursor(Qt.ForbiddenCursor))
        # 使用图像光标-Bitmap(不支持透明光标)
        bp = QBitmap('ico.png')
        bp = bp.scaled(30, 30)  # 缩小
        self.setCursor(QCursor(bp))

        # 使用图像光标-Pixmap(支持透明)
        px = QPixmap('ico.png')
        px = px.scaled(30, 30)  # 缩小
        self.setCursor(QCursor(px))

        # 图标与图标文本
        self.setWindowIcon(QIcon('ico.png'))
        self.setWindowIconText('图标文本')

        print(self.windowIcon())
        print(self.windowIconText())
示例#23
0
    def loadFromImage(self, *args):
        l = len(args)
        if l==2:
            image, fileName = args

            tileSize = self.tileSize()
            margin = self.margin()
            spacing = self.tileSpacing()
    
            if (image.isNull()):
                return False
            stopWidth = image.width() - tileSize.width()
            stopHeight = image.height() - tileSize.height()
            oldTilesetSize = self.tileCount()
            tileNum = 0
            for y in range(margin, stopHeight+1, tileSize.height() + spacing):
                for x in range(margin, stopWidth+1, tileSize.width() + spacing):
                    tileImage = image.copy(x, y, tileSize.width(), tileSize.height())
                    tilePixmap = QPixmap.fromImage(tileImage)
                    if (self.mTransparentColor.isValid()):
                        mask = tileImage.createMaskFromColor(self.mTransparentColor.rgb())
                        tilePixmap.setMask(QBitmap.fromImage(mask))

                    if (tileNum < oldTilesetSize):
                        self.mTiles.at(tileNum).setImage(tilePixmap)
                    else:
                        self.mTiles.append(Tile(tilePixmap, tileNum, self))

                    tileNum += 1

            # Blank out any remaining tiles to avoid confusion
            while (tileNum < oldTilesetSize):
                tilePixmap = QPixmap(tileSize)
                tilePixmap.fill()
                self.mTiles.at(tileNum).setImage(tilePixmap)
                tileNum += 1

            self.mImageWidth = image.width()
            self.mImageHeight = image.height()
            self.mColumnCount = self.columnCountForWidth(self.mImageWidth)
            self.mImageSource = fileName
            return True
        elif l==1:
            ##
            # Convenience override that loads the image using the QImage constructor.
            ##
            fileName = args[0]
            return self.loadFromImage(QImage(fileName), fileName)
示例#24
0
    def __updateMask(self):
        opt = QStyleOption()
        opt.initFrom(self)
        rect = opt.rect

        size = rect.size()
        mask = QBitmap(size)

        p = QPainter(mask)
        p.setRenderHint(QPainter.Antialiasing)
        p.setBrush(Qt.black)
        p.setPen(Qt.NoPen)
        p.drawRoundedRect(rect, self.__radius, self.__radius)
        p.end()

        self.setMask(mask)
示例#25
0
    def paintPixmap(self):
        # 重置遮罩图像
        self.pixmap.fill()

        # 创建绘制用的QPainter,笔画粗细为2像素
        # 事先已经在Qt窗体上铺了一个蓝色的背景图片,因此投过遮罩图案看下去标记线条是蓝色的
        p = QPainter(self.pixmap)
        p.setPen(QPen(QBrush(QColor(0, 0, 0)), 2))

        for row in range(self.result.shape[0]):
            for col in range(self.result.shape[1]):
                if self.result[row][col] != 0:
                    # 定一个基点,避免算数太难看
                    base_l_x = self.ANCHOR_LEFT_X + self.CLIP_WIDTH * col
                    base_r_x = self.ANCHOR_RIGHT_X + self.CLIP_WIDTH * col
                    base_y = self.ANCHOR_Y + self.CLIP_HEIGHT * row

                    if row == 0 or self.result[row - 1][col] == 0:
                        # 如果是第一行,或者上面的格子为空,画一条上边
                        p.drawLine(base_l_x, base_y, base_l_x + self.CLIP_WIDTH, base_y)
                        p.drawLine(base_r_x, base_y, base_r_x + self.CLIP_WIDTH, base_y)
                    if row == len(self.result) - 1 or self.result[row + 1][col] == 0:
                        # 如果是最后一行,或者下面的格子为空,画一条下边
                        p.drawLine(base_l_x, base_y + self.CLIP_HEIGHT, base_l_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
                        p.drawLine(base_r_x, base_y + self.CLIP_HEIGHT, base_r_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
                    if col == 0 or self.result[row][col - 1] == 0:
                        # 如果是第一列,或者左边的格子为空,画一条左边
                        p.drawLine(base_l_x, base_y, base_l_x, base_y + self.CLIP_HEIGHT)
                        p.drawLine(base_r_x, base_y, base_r_x, base_y + self.CLIP_HEIGHT)
                    if col == len(self.result[0]) - 1 or self.result[row][col + 1] == 0:
                        # 如果是第一列,或者右边的格子为空,画一条右边
                        p.drawLine(base_l_x + self.CLIP_WIDTH, base_y, base_l_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
                        p.drawLine(base_r_x + self.CLIP_WIDTH, base_y, base_r_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)

        # 在遮罩上绘制按钮区域,避免按钮被遮罩挡住看不见
        p.fillRect(self.btn_compare.geometry(), QBrush(QColor(0, 0, 0)))
        p.fillRect(self.btn_toggle.geometry(), QBrush(QColor(0, 0, 0)))

        # 将遮罩图像作为遮罩
        self.setMask(QBitmap(self.pixmap))
示例#26
0
    def generate_scene(self, m: KLMap) -> None:
        '''Generate a QGraphicScene object from a map and fills up the scene_item_dict'''
        new_scene = QGraphicsScene(0, 0, m.w * TILE_SIZE, m.h * TILE_SIZE)
        self.setScene(new_scene)
        del self.scene_item_dict
        if self.m_scene:
            del self.m_scene
        self.m_scene = new_scene
        self.scene_item_dict = {}

        #  set the background color <=> fill
        self.m_scene.setBackgroundBrush(Qt.black)

        pix = QPixmap(TILE_SIZE, TILE_SIZE)
        mask = QBitmap(TILE_SIZE, TILE_SIZE)

        for x in range(m.w):
            for y in range(m.h):
                pid = m.pid(x, y)
                if pid == Piece.space:
                    continue

                # We pass the pixmap and bitmap object to avoid recreating them
                # on each function call
                self.set_tile_pix(pix, mask, x, y)
                item = QGraphicsPixmapItem(pix)
                item.setX(x * TILE_SIZE)
                item.setY(y * TILE_SIZE)
                self.m_scene.addItem(item)

                # moving tiles are above walls, special walls
                # and goals
                if pid == Piece.goal or pid == Piece.wall or pid == Piece.s_wall:
                    item.setZValue(1)
                else:
                    item.setZValue(10)

                if pid not in self.scene_item_dict:
                    self.scene_item_dict[pid] = []
                self.scene_item_dict[pid].append(item)

                item.show()
示例#27
0
    def paintEvent(self, event):
        if not self.my_visible:
            self.move(-2000, -2000)

        self.pixmap.fill()
        p = QPainter(self.pixmap)
        p.setPen(QPen(QBrush(QColor(0, 0, 0)), 2))

        for row in range(len(self.result)):
            for col in range(len(self.result[0])):
                if self.result[row][col] != 0:
                    # 定一个基点,避免算数太难看
                    base_l_x = self.ANCHOR_LEFT_X + self.CLIP_WIDTH * col
                    base_r_x = self.ANCHOR_RIGHT_X + self.CLIP_WIDTH * col
                    base_y = self.ANCHOR_Y + self.CLIP_HEIGHT * row

                    if row == 0 or self.result[row - 1][col] == 0:
                        # 如果是第一行,或者上面的格子为空,画一条上边
                        p.drawLine(base_l_x, base_y, base_l_x + self.CLIP_WIDTH, base_y)
                        p.drawLine(base_r_x, base_y, base_r_x + self.CLIP_WIDTH, base_y)
                    if row == len(self.result) - 1 or self.result[row + 1][col] == 0:
                        # 如果是最后一行,或者下面的格子为空,画一条下边
                        p.drawLine(base_l_x, base_y + self.CLIP_HEIGHT, base_l_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
                        p.drawLine(base_r_x, base_y + self.CLIP_HEIGHT, base_r_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
                    if col == 0 or self.result[row][col - 1] == 0:
                        # 如果是第一列,或者左边的格子为空,画一条左边
                        p.drawLine(base_l_x, base_y, base_l_x, base_y + self.CLIP_HEIGHT)
                        p.drawLine(base_r_x, base_y, base_r_x, base_y + self.CLIP_HEIGHT)
                    if col == len(self.result[0]) - 1 or self.result[row][col + 1] == 0:
                        # 如果是第一列,或者右边的格子为空,画一条右边
                        p.drawLine(base_l_x + self.CLIP_WIDTH, base_y, base_l_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
                        p.drawLine(base_r_x + self.CLIP_WIDTH, base_y, base_r_x + self.CLIP_WIDTH,
                                   base_y + self.CLIP_HEIGHT)
        p.fillRect(self.btn_compare.geometry(), QBrush(QColor(0, 0, 0)))
        p.fillRect(self.btn_toggle.geometry(), QBrush(QColor(0, 0, 0)))
        self.setMask(QBitmap(self.pixmap))
示例#28
0
class MainWindow(QWidget):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.setWindowTitle("MainWindow")
        self.mypix()

    # 显示不规则 pic
    def mypix(self):
        self.pix = QBitmap("./images/mask.png")
        self.resize(self.pix.size())
        self.setMask(self.pix)
        self.dragPosition = None

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.m_drag = True
            self.m_DragPosition = event.globalPos() - self.pos()
            event.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))
        if event.button() == Qt.RightButton:
            self.close()

    def mouseMoveEvent(self, QMouseEvent):
        if Qt.LeftButton and self.m_drag:
            # 当左键移动窗体修改偏移值
            self.move(QMouseEvent.globalPos() - self.m_DragPosition)
            QMouseEvent.accept()

    def mouseReleaseEvent(self, QMouseEvent):
        self.m_drag = False
        self.setCursor(QCursor(Qt.ArrowCursor))

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(0, 0, self.width(), self.height(),
                           QPixmap("./images/boy.png"))
示例#29
0
                def read_and_convert_using_qt_to_raw_mono(handler, filename, hs_cols, hs_rows, invert=True):
                    img = QImage(filename)
                    if img.isNull():
                        handler.show_error(_('Could not load the image {} -- unknown format or other error').format(os.path.basename(filename)))
                        return
                    if (img.width(), img.height()) != (hs_cols, hs_rows): # do we need to scale it ?
                       img = img.scaled(hs_cols, hs_rows, Qt.IgnoreAspectRatio, Qt.SmoothTransformation)  # force to our dest size. Note that IgnoreAspectRatio guarantess the right size. Ther other modes don't
                       if img.isNull() or (img.width(), img.height()) != (hs_cols, hs_rows):
                           handler.show_error(_("Could not scale image to {} x {} pixels").format(hs_cols, hs_rows))
                           return
                    bm = QBitmap.fromImage(img, Qt.MonoOnly) # ensures 1bpp, dithers any colors
                    if bm.isNull():
                        handler.show_error(_('Could not convert image to monochrome'))
                        return
                    target_fmt = QImage.Format_Mono
                    img = bm.toImage().convertToFormat(target_fmt, Qt.MonoOnly|Qt.ThresholdDither|Qt.AvoidDither) # ensures MSB bytes again (above steps may have twiddled the bytes)
                    lineSzOut = hs_cols // 8  # bits -> num bytes per line
                    bimg = bytearray(hs_rows * lineSzOut)  # 1024 bytes for a 128x64 img
                    bpl = img.bytesPerLine()
                    if bpl < lineSzOut:
                        handler.show_error(_("Internal error converting image"))
                        return
                    # read in 1 scan line at a time since the scan lines may be > our target packed image
                    for row in range(hs_rows):
                        # copy image scanlines 1 line at a time to destination buffer
                        ucharptr = img.constScanLine(row)  # returned type is basically void*
                        ucharptr.setsize(bpl)  # inform python how big this C array is
                        b = bytes(ucharptr)  # aaand.. work with bytes.

                        begin = row * lineSzOut
                        end = begin + lineSzOut
                        bimg[begin:end] = b[0:lineSzOut]
                        if invert:
                            for i in range(begin, end):
                                bimg[i] = ~bimg[i] & 0xff  # invert b/w
                    return bytes(bimg)
示例#30
0
    def __init__(self, widget):
        super(QImageViewer, self).__init__()

        self.mainWindow = utils.get_app()

        # Image is displayed as a QPixmap in a QGraphicsScene attached to this QGraphicsView.
        self.scene = QGraphicsScene()
        self.setScene(self.scene)
        # Store a local handle to the scene's current image pixmap.
        self._pixmapHandle = None

        # Image aspect ratio mode.
        # !!! ONLY applies to full image. Aspect ratio is always ignored when zooming.
        #   Qt.IgnoreAspectRatio: Scale image to fit viewport.
        #   Qt.KeepAspectRatio: Scale image to fit inside viewport, preserving aspect ratio.
        #   Qt.KeepAspectRatioByExpanding: Scale image to fill the viewport, preserving aspect ratio.
        self.aspectRatioMode = Qt.KeepAspectRatioByExpanding

        # Scroll bar behaviour.
        #   Qt.ScrollBarAlwaysOff: Never shows a scroll bar.
        #   Qt.ScrollBarAlwaysOn: Always shows a scroll bar.
        #   Qt.ScrollBarAsNeeded: Shows a scroll bar only when zoomed.
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # Flags for enabling/disabling mouse interaction.
        self.KeyControl = False
        self.isPanning = False

        # Cursor settings
        cursorbit = QBitmap(
            QPixmap(utils.get_path(["iconImages", "CursorBit.png"])))
        cursormask = QBitmap(
            QPixmap(utils.get_path(["iconImages", "CursorMask.png"])))
        self.crossHair = QCursor(cursorbit, cursormask, -1, -1)
        #        self.setCursor(self.crossHair)

        # Mouse coordinate updates
        self.setMouseTracking(True)
        self.digitizerOn = False

        # Ty edit: anchor at mouse position
        self.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)
        #self.setResizeAnchor(QGraphicsView.AnchorViewCenter)
        self.setResizeAnchor(QGraphicsView.AnchorUnderMouse)

        # Ty edit: record the zoom, pan, and others
        self.InitialFrame = True
        self.Zoom_recorder = 0
        GlobalData.currentFrame = 1
        GlobalData.totalFrames = 0

        self.ViewRectX = 0
        self.ViewRectY = 0
        self.ViewRectWidth = 0
        self.ViewRectHeight = 0

        # Ty keypoint drawing initialization
        self.SceneSize = 4.5
        self.ViewSize = self.SceneSize * (4 / 5)**self.Zoom_recorder
        self.BoxDrawer = QPen(Qt.green)
        self.BoxDrawer.setWidth(0.01)
        self.BoxFill = QBrush(Qt.green)
        self.key_points = []

        # Ty draw trail lines initialization
        self.displayLineOn = False
        self.LineDrawer = QPen(Qt.green)
        self.LineWidth = (4 / 5)**self.Zoom_recorder
        self.LineDrawer.setWidth(self.LineWidth)
        self.LinePath = []
示例#31
0
class Suspension_window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowFlags(Qt.FramelessWindowHint|Qt.Tool|Qt.WindowStaysOnTopHint)
        palette1 = QPalette()
        palette1.setColor(self.backgroundRole(), QColor(0,0,0))   # 设置背景颜色
        self.setPalette(palette1)
        #self.setStyleSheet('QWidget{background-color:rgb(0,0,0)}')
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.rightMenuShow)
        self.setWindowOpacity(0.85)
        self.pix=QBitmap('./0.png')                        #蒙版
        self.resize(self.pix.size())
        self.setMask(self.pix)
        self.move(300, 300)
        self.initUI()
        QToolTip.setFont(QFont('SansSerif', 10))
        self.show()
  
    def initUI(self):
        textcolot=QColor(255,255,255)
        margin=10
        width=100
        height=40
        palette2 = QPalette()
        # 初始化
        label0=QLabel("",self)
        label1=QLabel("↑1000KB/s",self)
        label2=QLabel("↓1000KB/s",self)
        label3=QLabel(" CPU 99%",self)
        label4=QLabel("内存 99%",self)
        label5=QLabel("",self)
        # 修改字体
        label1.setFont(QFont("Roman times",10.5))
        label2.setFont(QFont("Roman times",10.5))
        label3.setFont(QFont("Roman times",10.5))
        label4.setFont(QFont("Roman times",10.5))
        # 对齐方式
        label1.setAlignment(Qt.AlignVCenter|Qt.AlignLeft)
        label2.setAlignment(Qt.AlignVCenter|Qt.AlignLeft)
        label3.setAlignment(Qt.AlignVCenter|Qt.AlignLeft)
        label4.setAlignment(Qt.AlignVCenter|Qt.AlignLeft)
        # 调整大小 横,纵
        label0.resize(Battery_width,80)
        label1.resize(width,height)
        label2.resize(width,height)
        label3.resize(width,height)
        label4.resize(width,height)
        label5.resize(Battery_width,80)
        # 调整位置 横,纵
        label0.move(0,0)
        label1.move(Battery_width+margin,0)
        label2.move(Battery_width+margin,height)
        label3.move(Battery_width+margin+width+margin,0)
        label4.move(Battery_width+margin+width+margin,height)
        label5.move(0,0)
        # 设置颜色
        palette2.setColor(QPalette.WindowText, textcolot)
        label1.setPalette(palette2)
        label2.setPalette(palette2)
        label3.setPalette(palette2)
        label4.setPalette(palette2)
        #开启监控
        t = threading.Thread(target=set_hook,args=(label0,label1,label2,label3,label4,label5))
        t.setDaemon(True)
        t.start()

    def mousePressEvent(self, event):
        if event.button()==Qt.LeftButton:
            self.m_flag=True
            self.m_Position=event.globalPos()-self.pos() #获取鼠标相对窗口的位置
            event.accept()
        else:
            self.m_flag=False
            
    def mouseMoveEvent(self, QMouseEvent):
        if Qt.LeftButton and self.m_flag:  
            self.move(QMouseEvent.globalPos()-self.m_Position)#更改窗口位置
            QMouseEvent.accept()
            
    def mouseReleaseEvent(self, QMouseEvent):
        self.m_flag=False

    def rightMenuShow(self):
        try:
            self.contextMenu = QMenu()
            self.actionA = self.contextMenu.addAction(u'退出')
            self.contextMenu.popup(QCursor.pos())  # 菜单显示的位置
            self.actionA.triggered.connect(exit)
            self.contextMenu.show()
        except Exception as e:
            print(e)
示例#32
0
class WScreenShot(QWidget):
    storePath = 'screenShot.jpg'
    imageType = 'JPG'
    quality = 100

    def __init__(self, parent=None):
        super(WScreenShot, self).__init__(parent)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setStyleSheet('''background-color:black; ''')
        self.setWindowOpacity(0.6)
        desktopRect = QDesktopWidget().screenGeometry()
        self.setGeometry(desktopRect)
        self.setCursor(Qt.CrossCursor)
        self.blackMask = QBitmap(desktopRect.size())
        self.blackMask.fill(Qt.black)
        self.mask = self.blackMask.copy()
        self.isDrawing = False
        self.startPoint = QPoint()
        self.endPoint = QPoint()

    def paintEvent(self, event):
        if self.isDrawing:
            self.mask = self.blackMask.copy()
            pp = QPainter(self.mask)
            pen = QPen()
            pen.setStyle(Qt.NoPen)
            pp.setPen(pen)
            brush = QBrush(Qt.white)
            pp.setBrush(brush)
            pp.drawRect(QRect(self.startPoint, self.endPoint))
            self.setMask(QBitmap(self.mask))

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.startPoint = event.pos()
            self.endPoint = self.startPoint
            self.isDrawing = True

    def mouseMoveEvent(self, event):
        if self.isDrawing:
            self.endPoint = event.pos()
            self.update()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.endPoint = event.pos()
            screenShot = QApplication.primaryScreen().grabWindow(
                QApplication.desktop().winId())
            rect = QRect(self.startPoint, self.endPoint)
            outputRegion = screenShot.copy(rect)
            outputRegion.save(self.storePath,
                              format=self.imageType,
                              quality=self.quality)
            self.close()

    def handleClick(self):
        if not self.isVisible():
            self.show()

    def handleClose(self):
        self.close()
示例#33
0
    def seed_img(self, is_seed=True):

        if is_seed:
            try:
                cseed = self.get_seed()
            except UserCancelled:
                return
            except InvalidPassword as e:
                self.d.show_error(str(e))
                return
            if not cseed:
                self.d.show_message(_("This wallet has no seed"))
                return
            txt = cseed.upper()
        else:
            txt = self.txt.upper()

        img = QImage(self.SIZE[0], self.SIZE[1], QImage.Format_Mono)
        bitmap = QBitmap.fromImage(img, Qt.MonoOnly)
        bitmap.fill(Qt.white)
        painter = QPainter()
        painter.begin(bitmap)
        QFontDatabase.addApplicationFont(
            os.path.join(os.path.dirname(__file__), 'SourceSansPro-Bold.otf'))
        if len(txt) < 102:
            fontsize = 15
            linespace = 15
            max_letters = 17
            max_lines = 6
            max_words = 3
        else:
            fontsize = 12
            linespace = 10
            max_letters = 21
            max_lines = 9
            max_words = int(max_letters / 4)

        font = QFont('Source Sans Pro', fontsize, QFont.Bold)
        font.setLetterSpacing(QFont.PercentageSpacing, 100)
        font.setPixelSize(fontsize)
        painter.setFont(font)
        seed_array = txt.split(' ')

        for n in range(max_lines):
            nwords = max_words
            temp_seed = seed_array[:nwords]
            while len(' '.join(map(str, temp_seed))) > max_letters:
                nwords = nwords - 1
                temp_seed = seed_array[:nwords]
            painter.drawText(
                QRect(0, linespace * n, self.SIZE[0], self.SIZE[1]),
                Qt.AlignHCenter, ' '.join(map(str, temp_seed)))
            del seed_array[:nwords]

        painter.end()
        img = bitmap.toImage()
        if (self.rawnoise == False):
            self.make_rawnoise()

        self.make_cypherseed(img, self.rawnoise, False, is_seed)
        return img
示例#34
0
class GrabToolWindow(QWidget):
    """抓取工具窗口,显示在最前端"""
    sigDisplay = pyqtSignal()  # 创建信号,用于新建贴图窗口
    sigScreenShot = pyqtSignal()

    def __init__(self):
        super(GrabToolWindow, self).__init__()
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
                            | Qt.SplashScreen)  # 无边框 置顶 不显示任务栏图标
        self.setStyleSheet('''background-color:black; ''')
        self.setWindowOpacity(0.3)
        self.desktopRect = QDesktopWidget().screenGeometry()
        self.setGeometry(self.desktopRect)
        self.setCursor(Qt.CrossCursor)
        self.blackMask = QBitmap(self.desktopRect.size())
        self.blackMask.fill(Qt.black)
        self.availTopLeftPoint = QDesktopWidget().availableGeometry().topLeft(
        )  # 有效显示区域左上角点

        self.isDrawing = False
        self.startPoint = QPoint()
        self.endPoint = QPoint()

        self.hk1, self.hk2 = SystemHotkey(), SystemHotkey()  # 初始化两个热键
        # self.hk1.register(('control', '1'), callback=lambda x: self.showGrabWindow())
        self.hk2.register(('control', 'shift', 'j'),
                          callback=lambda x: self.showGrabWindow())

        self.sigDisplay.connect(self.createDisplayWin)  # 信号连接到子窗口创建函数
        self.displayWinDict = {}
        self.displayWinNum = 0

        self.sigScreenShot.connect(self.createScreenShotWin)

    def createDisplayWin(self):  # 这里使用字典存储新建的窗口,当窗口关闭时未进行内存释放,可进行优化
        self.displayWinDict[self.displayWinNum] = DisplayWindow(
            self.screenshot, self.startPoint + self.availTopLeftPoint,
            self.displayWinNum)
        self.displayWinDict[self.displayWinNum].show()
        self.displayWinNum += 1

    def createScreenShotWin(self):
        self.screenshotWindow = ScreenshotWindow()
        self.screenshot_full_screen = self.screenshotWindow.screenShot
        self.screenshotWindow.show()

    def showGrabWindow(self):
        self.sigScreenShot.emit()  # 创建并显示全屏截图窗口
        self.activateWindow()  # 激活窗口以在最顶部显示
        self.setWindowState(Qt.WindowActive)  # 设置为激活窗口,以便使用快捷键
        self.show()  # 显示抓取窗口(主窗口)

    def keyPressEvent(self, event):  # Alt+Q键或ESC关闭窗口退出程序, Q键隐藏抓取窗口
        if event.key() == Qt.Key_Escape:
            self.close(), exit(0)
        elif event.key() == Qt.Key_Q:
            if QApplication.keyboardModifiers() == Qt.AltModifier:
                self.close(), exit(0)
            else:
                self.hide()
                self.screenshotWindow.hide()

    def paintMask(self):
        self.mask = self.blackMask.copy()
        pp = QPainter(self.mask)
        pen = QPen()
        pen.setStyle(Qt.NoPen)
        pp.setPen(pen)
        brush = QBrush(Qt.white)
        pp.setBrush(brush)
        pp.drawRect(QRect(self.startPoint, self.endPoint))
        self.setMask(QBitmap(self.mask))
        self.update()

    def paintEvent(self, event):
        if self.isDrawing:
            self.paintMask()

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.isDrawing = True
            self.startPoint = event.pos()  # 相对有效区域左上角点的坐标
            self.endPoint = self.startPoint

    def mouseMoveEvent(self, event):
        if Qt.LeftButton and self.isDrawing:
            self.endPoint = event.pos()
            self.update()

    def mouseReleaseEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.endPoint = event.pos()
            self.paintMask()  # 确保mask绘制完整
            self.isDrawing = False

            if self.endPoint.x() - self.startPoint.x() > 10 and self.endPoint.y(
            ) - self.startPoint.y() > 10:  # 框选区域太小或从右至左框选不进行截图
                self.screenshot = self.screenshot_full_screen.copy(
                    QRect(self.startPoint, self.endPoint))  # 截取框选区域
                self.hide()  # 隐藏抓取工具窗口
                self.screenshotWindow.close()  # 关闭全屏截图显示窗口
                self.sigDisplay.emit()  # 触发信号创建新的子窗口来显示截图

            self.setMask(QBitmap((self.blackMask.copy())))  # 框选操作结束, 恢复窗口mask
示例#35
0
 def paintEvent(self, event):
     painter = QPainter(self)
     painter.drawPixmap(0, 0, 280, 390, QPixmap(r"./images/dog.jpg"))
     painter.drawPixmap(300, 0, 280, 390, QBitmap(r"./images/dog.jpg"))
示例#36
0
 def initUI(self):
     self.setWindowTitle("异形窗口")
     self.pix = QBitmap('./image/mask.png')
     self.resize(self.pix.size())
     #设置mask
     self.setMask(self.pix)
示例#37
0
 def mypix(self):
     self.pix = QBitmap("./images/mask.png")
     self.resize(self.pix.size())
     self.setMask(self.pix)
     self.dragPosition = None
示例#38
0
    def __init__(self,
                 parent=None,
                 f=Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint):
        super(PopupPaletteFrame, self).__init__(parent)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
        self.setAttribute(Qt.WA_NoSystemBackground, True)
        self.setAttribute(Qt.WA_TranslucentBackground, True)

        self.setGeometry(0, 0, 512, 512)

        self.offset = QPoint(0, 0)

        self.local_image = QImage(512, 512, QImage.Format_ARGB32)
        self.fgcolor = '#FFFFFF'
        self.bgcolor = '#000000'

        # This is how to load the merged image from a .kra file.
        ## import zipfile
        ## archive = zipfile.ZipFile(gImgDir + os.sep + 'myPopupPaletteWorkshop.kra', 'r')
        ## img_data = archive.read('mergedimage.png')
        ## img = QImage()
        ## img.loadFromData(img_data)
        ## self.texture = img

        self.texture = QImage(gImgDir + os.sep +
                              'colorwheel_pixel_palette.png')
        self.defaultblackwhiteImg = QImage(gImgDir + os.sep +
                                           'defaultblackwhite10.png')
        self.switcharrowsImg = QImage(gImgDir + os.sep + 'switcharrows16.png')
        self.colorboxImg = QImage(gImgDir + os.sep + 'colorbox28.png')

        lHiColorDir = gShareDir + os.sep + 'icons' + os.sep + 'hicolor'

        # Text box.
        self.textbox = QTextEdit("Test QTextEdit", parent=self)
        self.textbox.move(192, 160)
        self.textbox.setGeometry(192, 160, 128, 32)

        # Big Button in middle.
        self.btnImage = btnImage = QImage(lHiColorDir + os.sep + '128x128' +
                                          os.sep + 'apps' + os.sep +
                                          'calligrakrita.png')
        self.button = ImageButton(btnImage, btnImage, btnImage, self)
        self.button.move(256 - 64, 256 - 64)
        self.button.pressed.connect(self.buttonPressed)
        self.button.released.connect(self.buttonReleased)
        self.button.setToolTip('Right Click for Context Menu')
        self.button.setContextMenuPolicy(Qt.CustomContextMenu)
        self.button.customContextMenuRequested.connect(self.show_context_menu)

        # Create popup context menu.
        self._context_menu = QMenu(self)
        self._context_menu.addAction('Invert', self.invertTexture)
        self._context_menu.addAction('Mirror Horizontal',
                                     self.mirrorTextureHorizontal)
        self._context_menu.addAction('Mirror Vertical',
                                     self.mirrorTextureVertical)

        # 4 smaller buttons.
        self.btnImage1 = btnImage1 = QImage(lHiColorDir + os.sep + '32x32' +
                                            os.sep + 'apps' + os.sep +
                                            'calligrakrita.png')
        self.button1 = ImageButton(btnImage1, btnImage1, btnImage1, self)
        self.button1.move(192, 320)
        self.button1.released.connect(self.button1Released)
        self.button1.setToolTip('test button')

        self.btnImage2 = btnImage2 = QImage(lHiColorDir + os.sep + '32x32' +
                                            os.sep + 'apps' + os.sep +
                                            'calligrakrita.png')
        self.button2 = ImageButton(btnImage2, btnImage2, btnImage2, self)
        self.button2.move(224, 320)
        self.button2.released.connect(self.button2Released)
        self.button2.setToolTip('rotate_canvas_left')

        self.btnImage3 = btnImage3 = QImage(lHiColorDir + os.sep + '32x32' +
                                            os.sep + 'apps' + os.sep +
                                            'calligrakrita.png')
        self.button3 = ImageButton(btnImage3, btnImage3, btnImage3, self)
        self.button3.move(256, 320)
        self.button3.released.connect(self.button3Released)
        self.button3.setToolTip('rotate_canvas_right')

        self.btnImage4 = btnImage4 = QImage(lHiColorDir + os.sep + '32x32' +
                                            os.sep + 'apps' + os.sep +
                                            'calligrakrita.png')
        self.button4 = ImageButton(btnImage4, btnImage4, btnImage4, self)
        self.button4.move(288, 320)
        self.button4.released.connect(self.button4Released)
        self.button4.setToolTip('Im a painter button')

        # Fore/Back color stuff
        self.arrowsBtn = ImageButton(self.switcharrowsImg,
                                     self.switcharrowsImg,
                                     self.switcharrowsImg,
                                     parent=self)
        self.arrowsBtn.move(464, 453)
        self.arrowsBtn.pressed.connect(self.swapFG_BG_Colors)

        self.defblackwhiteBtn = ImageButton(self.defaultblackwhiteImg,
                                            self.defaultblackwhiteImg,
                                            self.defaultblackwhiteImg,
                                            parent=self)
        self.defblackwhiteBtn.move(436, 486)
        self.defblackwhiteBtn.pressed.connect(self.defaultFG_BG_Colors)

        if not krita:
            quitAction = QAction("E&xit",
                                 self,
                                 shortcut="Z",
                                 triggered=self.close)
            self.button.addAction(quitAction)
            self.button.setContextMenuPolicy(Qt.ActionsContextMenu)

        # Mask - Anything not black (0, 0, 0, 0-255) in this image will not be shown when drawn out.
        self.setMask(QBitmap(gImgDir + os.sep + "pixel_palette_mask512.png"))
        self.drawGUI()

        self.setFocusPolicy(Qt.StrongFocus)
        self.setFocus()

        self.setMouseTracking(True)