Example #1
0
class GrabScreen():
    def getMouseXY(self):
        p = QCursor.pos();
        return p.x(), p.y();

    def __init__(self):
        self.app  =  QApplication([])
        self.screen = self.app.primaryScreen();
        self.sid = QApplication.desktop().winId();

    def getScreenAsData(self, quality = 20):
        ss = self.screen.grabWindow(self.sid);
        #b = ss.toImage().mirrored(True, True);
        #ss.convertFromImage(b);
        painter = QPainter();
        painter.begin(ss);
        painter.setBrush(QColor( 255,0,  0))
        size = 8;
        half_size = size / 2;
        cx, cy = self.getMouseXY();
        painter.drawEllipse(cx - half_size, cy - half_size, size,size);
        painter.end();
        #
        bytesArray = QByteArray();
        buff = QBuffer(bytesArray);
        ss.save(buff, 'JPEG', quality = quality)
        data = bytesArray.data();
        return data;
Example #2
0
    def __init__(self):
        super().__init__()

        self.layout = QVBoxLayout(self)

        self.sub_widget = _NotifySubWidget(self)
        self.layout.addWidget(self.sub_widget)
        self.layout.setContentsMargins(0, 0, 0, 0)

        self._exit_shortcut = QShortcut(QKeySequence(Qt.Key_Escape), self)
        self._exit_shortcut.activated.connect(self.close)

        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint | Qt.Tool)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setAttribute(Qt.WA_MacAlwaysShowToolWindow)

        self.resize(width, height)
        self.move(QApplication.primaryScreen().geometry().right() - self.width() - 20, 40)
        self.setLayout(self.layout)

        self._animation = QPropertyAnimation(self, b'windowOpacity')
        self._animation.setStartValue(0.8)
        self._animation.setKeyValueAt(0.4, 1)
        self._animation.setEndValue(0)
        self._animation.setDuration(5000)
        self._animation.finished.connect(self.close)
 def takeScreenshot(self):
     QApplication.instance().beep()
     print("screenshot taking..")
     screen = QApplication.primaryScreen()
     if screen is not None:
         self.screenPixmap = screen.grabWindow(0)
     else:
         self.screenPixmap = QPixmap()
     self.updateScreenshotHolder()
Example #4
0
 def take_screenshot(self):
     screen = QApplication.primaryScreen()
     self.hide()
     self.pixmap = screen.grabWindow(self.id, self.left, self.top, self.width, self.height)
     self.show()
     self.imagePreviewer.setPixmap(self.pixmap)
     self.imagePreviewer.adjustSize()
     self.imagePreviewer.resize(self.imagePreviewer.sizeHint())
     self.imagePreviewer.show()
     self.activateWindow()
     self.done = True
Example #5
0
    def shootScreen(self):
        if self.delaySpinBox.value() != 0:
            QApplication.instance().beep()

        screen = QApplication.primaryScreen()
        if screen is not None:
            self.originalPixmap = screen.grabWindow(0)
        else:
            self.originalPixmap = QPixmap()

        self.updateScreenshotLabel()

        self.newScreenshotButton.setDisabled(False)
        if self.hideThisWindowCheckBox.isChecked():
            self.show()
Example #6
0
    def __init__(self, data, parent=None, title = "", show_text=False):
        WindowModalDialog.__init__(self, parent, title)

        vbox = QVBoxLayout()
        qrw = QRCodeWidget(data)
        qscreen = QApplication.primaryScreen()
        vbox.addWidget(qrw, 1)
        if show_text:
            text = QTextEdit()
            text.setText(data)
            text.setReadOnly(True)
            vbox.addWidget(text)
        hbox = QHBoxLayout()
        hbox.addStretch(1)

        config = electrum.get_config()
        if config:
            filename = os.path.join(config.path, "qrcode.png")

            def print_qr():
                p = qscreen.grabWindow(qrw.winId())
                p.save(filename, 'png')
                self.show_message(_("QR code saved to file") + " " + filename)

            def copy_to_clipboard():
                p = qscreen.grabWindow(qrw.winId())
                p.save(filename, 'png')
                QApplication.clipboard().setImage(QImage(filename))
                self.show_message(_("QR code copied to clipboard"))

            b = QPushButton(_("Copy"))
            hbox.addWidget(b)
            b.clicked.connect(copy_to_clipboard)

            b = QPushButton(_("Save"))
            hbox.addWidget(b)
            b.clicked.connect(print_qr)

        b = QPushButton(_("Close"))
        hbox.addWidget(b)
        b.clicked.connect(self.accept)
        b.setDefault(True)

        vbox.addLayout(hbox)
        self.setLayout(vbox)
Example #7
0
    def __init__(self, data, parent=None, title="", show_text=False):
        WindowModalDialog.__init__(self, parent, title)

        vbox = QVBoxLayout()
        qrw = QRCodeWidget(data)
        qscreen = QApplication.primaryScreen()
        vbox.addWidget(qrw, 1)
        if show_text:
            text = QTextEdit()
            text.setText(data)
            text.setReadOnly(True)
            vbox.addWidget(text)
        hbox = QHBoxLayout()
        hbox.addStretch(1)

        config = electrum_xuez.get_config()
        if config:
            filename = os.path.join(config.path, "qrcode.png")

            def print_qr():
                p = qscreen.grabWindow(qrw.winId())
                p.save(filename, 'png')
                self.show_message(_("QR code saved to file") + " " + filename)

            def copy_to_clipboard():
                p = qscreen.grabWindow(qrw.winId())
                QApplication.clipboard().setPixmap(p)
                self.show_message(_("QR code copied to clipboard"))

            b = QPushButton(_("Copy"))
            hbox.addWidget(b)
            b.clicked.connect(copy_to_clipboard)

            b = QPushButton(_("Save"))
            hbox.addWidget(b)
            b.clicked.connect(print_qr)

        b = QPushButton(_("Close"))
        hbox.addWidget(b)
        b.clicked.connect(self.accept)
        b.setDefault(True)

        vbox.addLayout(hbox)
        self.setLayout(vbox)
Example #8
0
 def grab_entire_desktop_qt() -> QPixmap:
     """
     Grab the entire desktop screenshot to QPixmap (Qt default implementation)
     :return: QPixmap instance or None
     :rtype: QPixmap
     """
     geo = QRect()
     for screen in QGuiApplication.screens():
         src_rect = screen.geometry()
         src_rect.moveTo(int(src_rect.x() / screen.devicePixelRatio()),
                         int(src_rect.y() / screen.devicePixelRatio()))
         geo = geo.united(src_rect)
     pixmap = QApplication.primaryScreen().grabWindow(
         QApplication.desktop().winId(), geo.x(), geo.y(), geo.width(),
         geo.height())
     screen_no = QApplication.desktop().screenNumber()
     screen = QApplication.screens()[screen_no]
     pixmap.setDevicePixelRatio(screen.devicePixelRatio())
     return pixmap
Example #9
0
    def __init__(self):
        super().__init__()
        # DATA
        self._lines = dict()
        self._lines[1] = OneLine((1, 0, 0), 3)
        self._lines[2] = OneLine((0, 0, 1), 3)
        self._lines[1].set_points([0.72, 0.63, 0.0], [0.72, 0.63, 5.0])
        self._lines[2].set_points([7.0, 0.63, 0.0], [7.0, 0.63, 5.0])

        # VTK
        self._vtk_widget = QVTKRenderWindowInteractor()
        self._renderer = vtk.vtkRenderer()
        self._renderer.AddActor(self._lines[1].actor)
        self._renderer.AddActor(self._lines[2].actor)
        self._ren_win = self._vtk_widget.GetRenderWindow()
        self._ren_win.AddRenderer(self._renderer)
        self._ren_win.GetInteractor().SetInteractorStyle(
            vtk.vtkInteractorStyleMultiTouchCamera())

        # TIMER
        self._ren_win.GetInteractor().AddObserver('TimerEvent',
                                                  self._render_timer)
        self._ren_win.GetInteractor().CreateRepeatingTimer(10)

        # QT
        self._ui = Ui_MainWindow()
        self._ui.setupUi(self)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
                            | Qt.NoDropShadowWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)  # 半透明
        self.move(20, (QApplication.primaryScreen().size().height() -
                       self.size().height()) / 2)
        self._ui.btn_quit.clicked.connect(self.exit)

        # LAUNCH
        self._ren_win.SetSize(700, 700)
        self._vtk_widget.Start()
        self._vtk_widget.showFullScreen()

        # THREAD
        self._thread = threading.Thread(target=self._working)
        self._thread.daemon = True
        self._thread.start()
Example #10
0
def get_window_rect(title):
    if title != "":
        app = QApplication(sys.argv)
        screen = QApplication.primaryScreen()
        wid = win32gui.FindWindow(None, title)
        if wid > 0:
            rect = win32gui.GetWindowRect(wid)
            # rect = get_window_real_rect(wid)
            ratio = get_zoom_ratio()
            if rect[0] < 0 and rect[1] < 0 and rect[2] < 0 and rect[3] < 0:
                print("window minimized")
                return
            return {
                "hwnd": wid,
                "x_start": math.floor(rect[0] / ratio),
                "y_start": math.floor(rect[1] / ratio),
                "x_end": math.floor(rect[2] / ratio),
                "y_end": math.floor(rect[3] / ratio),
            }
Example #11
0
    def __init__(self):
        super(ScreenshotWindow, self).__init__()
        availTopLeftPoint = QDesktopWidget().availableGeometry().topLeft(
        )  # 有效显示区域左上角点
        availBottomRightPoint = QDesktopWidget().availableGeometry(
        ).bottomRight()  # 有效显示区域左上角点
        self.screenshot = QApplication.primaryScreen().grabWindow(
            QApplication.desktop().winId())  # 全屏截图
        self.screenshot = self.screenshot.copy(
            QRect(availTopLeftPoint, availBottomRightPoint))  # 获取有效区域截图
        self.resize(self.screenshot.width(), self.screenshot.height())

        # 设置窗口背景为截图
        palette = QPalette()
        palette.setBrush(QPalette.Background, QBrush(QPixmap(self.screenshot)))
        self.setPalette(palette)

        self.setWindowFlags(Qt.FramelessWindowHint
                            | Qt.SplashScreen)  # Qt.WindowStaysOnTopHint
Example #12
0
    def predictNum(self):
        screen = QApplication.primaryScreen()
        # SmoothTransformation
        img = screen.grabWindow(self.ui.widget.winId()).toImage().scaled(
            QSize(28, 28), transformMode=1)
        num_pixel = []
        for y in range(img.height()):
            for x in range(img.width()):
                curr_pixel = img.pixelColor(x, y).red()
                if curr_pixel != 240:
                    num_pixel.append(1)
                else:
                    num_pixel.append(0)
        num_pixel = np.array(num_pixel)
        num_pixel = num_pixel.reshape(1, 28, 28, 1)
        index_num = np.argmax(self.model.predict(num_pixel)[0])
        self.ui.plainTextEdit.setPlainText(str(index_num))

        pass
Example #13
0
def tesseract(rect, lang=None, config=None):
    app = QApplication(sys.argv)
    screen = QApplication.primaryScreen()
    w = screen.grabWindow(rect["hwnd"], rect["x"], rect["y"], rect["w"], rect["h"])
    image = w.toImage()
    # image.save("C:/Users/hunzs/Desktop/tesseract.jpg")
    if config is None:
        if lang == "chi_sim" or lang == "chi_tra":
            config = "-psm 9"
        elif lang == "eng":
            config = "-psm 6"
        elif lang == "num":
            lang = None
            config = "tessedit_char_whitelist=0123456789"
    return pytesseract.image_to_string(
        QImage_to_PILimage(Image.open("C:/Users/hunzs/Desktop/tesseract.jpg")),
        lang=lang,
        config=config
    )
Example #14
0
    def __init__(self, src):
        super().__init__()
        desktop = QApplication.primaryScreen().geometry()

        self.setFixedSize(desktop.width() * 0.9, desktop.height() * 0.8)
        self.move(desktop.width() * 0.05, desktop.height() * 0.05)
        self.setWindowTitle('读数监控')
        self.setFont(QFont('Microsoft YaHei'))
        self.setStyleSheet('font:18px')
        print("main window : w {} h {}".format(self.width(), self.height()))

        self.valid_interval = [-0x3f3f3f3f, 0x3f3f3f3f]
        self.to_miao_code = []
        self.exceed_cnt = 0
        self.last_alarm_time = datetime.datetime.now() - datetime.timedelta(
            minutes=5)

        self.frame = None
        self.binary_threshold = 120
        self.dilate_iteration = 3

        self.cap = cv.VideoCapture(src, cv.CAP_DSHOW)
        self.timer = QTimer()

        self.timer.start(100)
        self.timer.timeout.connect(self.show_frame)

        self.video_box = VideoBox(self.width() * 0.45, self.height())
        self.show_box = ShowBox(self.width() * 0.45, self.height())
        self.show_box.binary.up.clicked.connect(self.on_binary_up_click)
        self.show_box.binary.down.clicked.connect(self.on_binary_down_click)
        self.show_box.dilate.up.clicked.connect(self.on_dilate_up_click)
        self.show_box.dilate.down.clicked.connect(self.on_dilate_down_click)

        self.layout = QHBoxLayout()
        self.layout.addWidget(self.video_box)
        self.layout.addWidget(self.show_box)
        self.setLayout(self.layout)

        self.video_box.configure.button.clicked.connect(
            self.on_configure_button_click)

        self.show()
Example #15
0
    def run(cls):
        app = QApplication(sys.argv)
        screen = app.primaryScreen()
        size = screen.size()
        screen_width = size.width()
        content = ContentView(screen_width)
        cls.window = content

        main_window = MainWindow()
        main_window.setup(lambda label: cls.handle_menu_button_tap(cls, label))
        main_window.setCentralWidget(cls.window)
        main_window.show()
        main_window.resize(screen.size())

        frame_geometry = main_window.frameGeometry()
        center = QDesktopWidget().availableGeometry().center()
        frame_geometry.moveCenter(center)
        main_window.move(frame_geometry.topLeft())
        sys.exit(app.exec_())
Example #16
0
    def auto_roll(self, area):
        """自动滚动截屏,总函数"""
        x, y, w, h = area
        self.img_width = w
        self.img_height = h
        speed = round(1 / self.roll_speed, 2)
        screen = QApplication.primaryScreen()
        controler = MouseController()
        find_pos = Commen_Thread(self.efind_the_pos)
        self.in_rolling = True
        i = 0
        controler.position = (area[0] + int(area[2] / 2),
                              area[1] + int(area[3] / 2))
        while self.in_rolling:
            pix = screen.grabWindow(QApplication.desktop().winId(), x, y, w,
                                    h)  # 区域截屏获取图像pixmap
            img = self.qpix_to_cv2(pix)  # 将qt的pixmap转为pil模块的img对象
            self.img_list.append(img)  # 储存图片的列表
            if i >= 1:
                if self.is_same(self.img_list[i - 1],
                                self.img_list[i]):  # 每帧检查是否停止(图片是否相同)
                    self.in_rolling = False
                    i += 1
                    break
                if i == 5:  # 图片大于5张才开始寻找拼接点
                    find_pos.start()
            controler.scroll(dx=0, dy=-3)  # 滚动屏幕
            time.sleep(0.1)  # 速度控制
            cv2.imwrite('j_temp/{0}.png'.format(i), img)
            i += 1
        print('图片数', i)
        self.max_arrange = i - 1  # 获取图片序列用于控制寻找边界点的结束
        if i <= 2:
            print('过短!一张图还不如直接截呐')
            self.clear_timer.start(0)
            return
        else:
            find_pos.wait()  # 等待拼接点寻找完成
        print('found_pos_done')
        self.merge_all()  # 调用图片拼接函数

        self.clear_timer.start(10000)  # 10s后初始化内存
def main():
    app = QApplication(sys.argv)
    screen = app.primaryScreen()
    screen_size = screen.size()
    outer_window = QMainWindow()
    outer_window.setGeometry(screen_size.width() - 410, 0, 410,
                             screen_size.height())
    scroll = QScrollArea()
    scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
    scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
    window = QWidget()
    window.setWindowTitle("My app")
    all_tasks = MainGrid(window)
    all_tasks.setVerticalSpacing(20)
    scroll.setWidgetResizable(True)
    window.setLayout(all_tasks)
    scroll.setWidget(window)
    outer_window.setCentralWidget(scroll)

    outer_window.show()
    sys.exit(app.exec_())
Example #18
0
def print_app_screen(hwnd_number):
    no_name = ['.', ':', '/', '\\', ':', '?', '?', '=']
    try:
        hwnd = int(hwnd_number)
        # hwnd = win32gui.FindWindow(None, hwnd_title[hwnd_number])
        app = QApplication(sys.argv)
        screen = QApplication.primaryScreen()
        _, _, x_hwnd, y_hwnd = win32gui.GetWindowRect(hwnd)
        img = screen.grabWindow(hwnd).toImage()
        img_index = re.search('-', hwnd_title[hwnd_number][::-1]).span()[0]
        img_name = hwnd_title[hwnd_number][int(-img_index):]
        timestring1 = str(time.time())
        timestring = timestring1[2:10] + timestring1[11:13]
        for i in img_name:
            if i in no_name:
                img_name = img_name.replace(i, '')
        img.save("./images/%s_%s.jpg" % (img_name, timestring))
        # print("生成 %s_%s.jpg" % (img_name, timestring))
        return "%s_%s.jpg" % (img_name, timestring), [x_hwnd, y_hwnd]
    except KeyError:
        return None
Example #19
0
def image_cut(data):
    x1 = data["range"]['X1'] + 2  # 不截虚线框
    y1 = data["range"]['Y1'] + 2
    x2 = data["range"]['X2'] - 2
    y2 = data["range"]['Y2'] - 2

    image = None
    try:
        screen = QApplication.primaryScreen()
        pix = screen.grabWindow(QApplication.desktop().winId(), x1, y1,
                                x2 - x1, y2 - y1)
        # pix.save(folder_path + '/config/image.jpg')
        image = pixmap_to_array(pix)
        # if config.debug:
        #     save_img = folder_path + '/config/image.jpg'
        #     print("保存截图: {}".format(save_img))
        #     imwrite(save_img, image)

    except Exception:
        write_error(format_exc())
    return image
Example #20
0
def seg_ui(image):
    """
    Function to launch the Segmentation User Interface.
    """
    app = QApplication(sys.argv)
    app.aboutToQuit.connect(app.deleteLater)

    screen = app.primaryScreen()
    size = screen.size()
    height = int(0.8 * size.height())

    if 1024 < height:
        height = 1024

    #params = ParticleAnalysis.param_generator()
    ex = main(image, height)

    #ex.show()
    app.exec_()

    return (ex)
Example #21
0
def open_appless_panel(panel_cls: Type[Panel]):  # pragma: no cover
    import asyncio

    app = QApplication([])
    font_db = QFontDatabase()

    for font in (Path(__file__).parent / "resources" / "fonts").glob("*.ttf"):
        font_db.addApplicationFont(str(font))

    app.setStyleSheet(default_stylesheet())

    class FauxParent:
        def client_panel_will_close(self, _):
            app.exit()

    class Hooks:
        qt_app = None

        def __init__(self, qt_app):
            self.qt_app = qt_app

        async def process_events(self):
            while True:
                await asyncio.sleep(0.03)
                self.qt_app.processEvents()

    window_widget = panel_cls(parent=FauxParent(), id="appless", app=None)

    window = QMainWindow()
    window.setCentralWidget(window_widget)

    screen_rect = app.primaryScreen().geometry()
    window.move(screen_rect.left(), screen_rect.top())
    window.resize(*panel_cls.SIZE)

    window.app = None
    window.show()
    loop = asyncio.get_event_loop()
    asyncio.ensure_future(Hooks(app).process_events())
    loop.run_forever()
Example #22
0
class UserIOControl:
    def __init__(self):
        self.__mouse = PyMouse()
        self.__keyboard = PyKeyboard()
        self.__app = QApplication([])
        self.__screen = self.__app.primaryScreen()

    def click(self, x, y, button=1):
        self.__mouse.click(x, y, button)

    def press_key(self, key):
        self.__keyboard.press_key(key)

    def take_screenshot(self):
        byte_array = QByteArray()
        buffer = QBuffer(byte_array)
        buffer.open(QIODevice.WriteOnly)

        image = self.__screen.grabWindow(QApplication.desktop().winId())
        image.save(buffer, "PNG")

        return str(byte_array.toBase64())[1:]
    def mouseMoveEvent(self, event):
        super(CColorStraw, self).mouseMoveEvent(event)
        # Получить положение мыши на экране
        pos = event.globalPos()
        # Возьмите часть увеличенного изображения
        image = QApplication.primaryScreen().grabWindow(
            int(QApplication.desktop().winId()),
            pos.x() - 6,
            pos.y() - 6, 13, 13).toImage()
        color = image.pixelColor(6, 6)

        ####### Получаем цвет пипетки ################
        rgb_color = np.uint8([[[color.red(), color.green(), color.blue()]]])
        self.hsv_list = cv2.cvtColor(rgb_color,
                                     cv2.COLOR_RGB2HSV).tolist()[0][0]
        self.hsv_list[0] = self.hsv_list[0] * 2
        #  print(self.hsv_list)
        ####################

        if color.isValid():
            self.colorChanged.emit(color)
        self._scaleWindow.updateImage(pos, image.scaled(130, 130))
Example #24
0
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.current_dir = os.path.abspath(os.path.dirname(__file__))
        self.setting_window = SettingWindow(self.update_signal)
        self.context = Context(self.update_signal, self.current_dir)
        self.add_info_window = AddInfoWindow(self.update_signal)
        self.confirm_window = ConfirmWindow(self.delete_signal)
        self.confirm_exit_window = ConfirmExitWindow(self.exit_signal)
        self.del_action.triggered.connect(self.confirm_window.exec)
        self.setting_action.triggered.connect(self.setting_window.exec)
        self.add_action.triggered.connect(self.add_info_window.exec)
        self.refresh_action.triggered.connect(self.context.reload_url)
        self.setCentralWidget(self.context)
        self.update_signal.connect(self.context.reload_url)
        self.app = None

        # 默认窗口大小
        primary_screen_rect = QApplication.primaryScreen().geometry()
        self.default_size = QRect(int((primary_screen_rect.width() - 800) / 2) + primary_screen_rect.x(),
                                  int((primary_screen_rect.height() - 600) / 2 + primary_screen_rect.y()),
                                  800, 600)
        self.setGeometry(self.default_size)
        self.context.tableWidget.not_start = False

        self.icon = QIcon(":img/zhifu.ico")
        self.setWindowIcon(self.icon)
        self.setting_window.setWindowIcon(self.icon)
        self.add_info_window.setWindowIcon(self.icon)
        self.confirm_window.setWindowIcon(self.icon)
        self.confirm_exit_window.setWindowIcon(self.icon)


        # print(self.context.tableWidget.selectedItems()[0].row())
        # self.context.tableWidget.cellClicked(self.fex)

        self.delete_signal.connect(self.context.del_one_item)
        self.exit_signal.connect(self.closeApp)
        self._set_hotkey()
Example #25
0
    def __init__(self, father):
        super(screenCapForm, self).__init__()
        self.setupUi(self)

        # 设置格式
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint
                            | QtCore.Qt.CustomizeWindowHint)
        # 改变窗口大小
        self.screenRect = QApplication.desktop().screenGeometry()
        self.setFixedSize(self.screenRect.width(), self.screenRect.height())
        self.gv_fullscreen.setFixedSize(self.screenRect.width(),
                                        self.screenRect.height())
        self.l_rec.setFixedSize(self.screenRect.width(),
                                self.screenRect.height())

        # 禁用滚动条
        self.gv_fullscreen.setVerticalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        self.gv_fullscreen.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)

        # 获取桌面截图
        self.screenPixmap = QApplication.primaryScreen().grabWindow(
            QApplication.desktop().winId())
        self.scene = QGraphicsScene()
        self.scene.addItem(QGraphicsPixmapItem(self.screenPixmap))
        self.gv_fullscreen.setScene(self.scene)

        # 是否截图状态,选取过程中为pending,结束时或者截图前为done
        self.status = 'done'
        self.father = father
        # 画板,画笔
        self.board = QPixmap(self.screenRect.width(), self.screenRect.height())
        self.board.fill(QtCore.Qt.transparent)
        self.painter = QPainter()
        self.from_point = [0, 0]
        self.to_point = [0, 0]
        self.l_rec.setPixmap(self.board)
Example #26
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
Example #27
0
 def __init__(self, render_frequency: float, window_zoom: int = 0.7):
     super().__init__()
     self._screen_size = QApplication.primaryScreen().size()
     self._central_widget = QWidget(self)
     self._central_widget.setAttribute(Qt.WA_AcceptTouchEvents
                                       | Qt.WA_TranslucentBackground)
     self._central_widget.setWindowFlags(Qt.NoDropShadowWindowHint)
     self._central_widget.resize(self._screen_size)
     self._vtk_widget = QVTKRenderWindowInteractor(self._central_widget)
     self._vtk_widget.SetInteractorStyle(
         vtk.vtkInteractorStyleMultiTouchCamera())
     self._vtk_widget.resize(self._screen_size)
     self.setCentralWidget(self._central_widget)
     sw, sh = self._screen_size.width(), self._screen_size.height()
     self.resize(sw * window_zoom, sh * window_zoom)
     self.move(sw * (1 - window_zoom) / 2, sh * (1 - window_zoom) / 2)
     self._central_widget.setFocus()
     # UI
     # self._ui = Ui_Form()
     # self._ui.setupUi(Form=self._central_widget)
     for widget in self._central_widget.children():
         widget.setStyleSheet(f"""
                 QGroupBox {{
                 background-color: rgba(200, 200, 200, 1); 
                 border-radius: 5; 
                 }}""")
     # QT_STYLE
     self.setWindowFlags(Qt.NoDropShadowWindowHint)
     self._render = vtk.vtkRenderer()
     self._ren_win = self._vtk_widget.GetRenderWindow()
     self._ren_win.AddRenderer(self._render)
     self._interactor = self._ren_win.GetInteractor()
     # TIMER
     self._timer = QTimer()
     self._timer.setInterval(int(1000 / render_frequency))
     self._timer.timeout.connect(self._working)
     self._is_running = False
     self.set_render_ena(False)
Example #28
0
def CpuProfilerView():
    if (len(Machine) <= 0):
        return False
    #
    global Settings
    global Locales
    global Translations
    global Hosts
    global Tray
    #
    ConfigureCpuProfiler()
    #
    app = QApplication(sys.argv)
    # 設定資料
    settings = {}
    screen = app.primaryScreen()
    rect = screen.availableGeometry()
    size = rect.size()
    #
    Temp = Settings["Temp"]
    URL = Hosts[Machine]["URL"]
    Username = Hosts[Machine]["Username"]
    Password = Hosts[Machine]["Password"]
    #
    settings["Width"] = size.width()
    settings["Height"] = size.height()
    settings["Path"] = f"{Temp}/{Machine}"
    settings["URL"] = URL
    settings["Username"] = Username
    settings["Password"] = Password
    settings["Machine"] = Machine
    settings["TimeZone"] = Settings["TimeZone"]
    # 啟動CPU Chart
    w = CpuChart(settings)
    w.setWindowTitle(Machine)
    w.startup()
    sys.exit(app.exec_())
    return True
Example #29
0
    def roll_manager(self, area):
        x, y, w, h = area
        self.mode = 1

        def on_click(x, y, button, pressed):
            print(x, y, button)
            if area[0] < x < area[0] + area[2] and area[
                    1] < y < area[1] + area[3] and not pressed:
                self.mode = 1
                lis.stop()

        def on_scroll(x, y, button, pressed):

            self.mode = 0
            lis.stop()

        self.rollermask = roller_mask(area)
        # self.showrect.setGeometry(x, y, w, h)
        # self.showrect.show()
        pix = QApplication.primaryScreen().grabWindow(
            QApplication.desktop().winId(), x, y, w, h)
        newimg = Image.fromqpixmap(pix)
        img = cv2.cvtColor(asarray(newimg), cv2.COLOR_RGB2BGR)
        self.img_list.append(img)
        QApplication.processEvents()
        lis = MouseListenner(on_click=on_click, on_scroll=on_scroll)
        lis.start()
        print("等待用户开始")
        lis.join()
        lis.stop()
        if self.mode:
            print("auto_roll")
            self.auto_roll(area)
        else:
            print("scroll_to_roll")
            self.scroll_to_roll(area)
        self.showm_signal.emit("长截图完成")
        self.rollermask.hide()
Example #30
0
 def tick(self):
     global time
     print("[INFO] Step: " + str(time))
     for path in range(1, 43):
         if (path <= 16):
             try:
                 command = "self.label_" + StateList[
                     path] + ".setStyleSheet(\"background-color: rgba(255, 255, 255, 0);\")"
             except:
                 pass
         else:
             try:
                 command = "self.line_Path" + StateList[
                     path] + ".setStyleSheet(\"background-color: rgba(255, 255, 255, 0;\")"
             except:
                 pass
         eval(command)
     print("[INFO] range[" + str(self.spinBox.value()) + "," +
           str(self.spinBox_2.value()) + "]")
     try:
         if time <= self.spinBox_2.value() and time >= self.spinBox.value():
             print("[INFO] time in range[" + str(self.spinBox.value()) +
                   "," + str(self.spinBox_2.value()) + "], drawing paths")
             self.readJsonAndDrawRobotPaths()
             self.lcdNumber.display(time)
             self.timer.setInterval(int(1000 / self.doubleSpinBox.value()))
             time += 1
         else:
             print("[INFO] time out of range[" + str(self.spinBox.value()) +
                   "," + str(self.spinBox_2.value()) + "]")
             time = self.spinBox.value()
             print("[INFO] Setting time to :" + str(time))
     except:
         print("[ERR] tick function exception")
         pass
     img = QApplication.primaryScreen().grabWindow(0)
     img.save(str(time) + ".png")
     time += 1
Example #31
0
    def __init__(self):
        super().__init__()

        self.points = vtk.vtkPoints()

        self._vtk_widget = QVTKRenderWindowInteractor()
        self._render = vtk.vtkRenderer()
        self._render.AddActor(self.points_actor())
        self._render.SetBackground(0, 0, 0)
        self._ren_win = self._vtk_widget.GetRenderWindow()
        self._ren_win.AddRenderer(self._render)
        self._ren_win.GetInteractor().SetInteractorStyle(
            vtk.vtkInteractorStyleMultiTouchCamera())

        self._ren_win.GetInteractor().AddObserver('TimerEvent',
                                                  self._render_timer)
        self._ren_win.GetInteractor().CreateRepeatingTimer(10)

        self._ui = Ui_MainWindow()
        self._ui.setupUi(self)
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
                            | Qt.NoDropShadowWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)  # 半透明
        self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
        self.setWindowOpacity(1)
        self.move(20, (QApplication.primaryScreen().size().height() -
                       self.size().height()) / 2)

        self._thread = threading.Thread(target=self._working)
        self._thread_switch = False
        self._thread.daemon = True
        self._thread.start()

        self._ren_win.SetSize(700, 700)
        self._vtk_widget.Start()
        self._vtk_widget.showFullScreen()

        self._ui.btn_quit.clicked.connect(self.quit)
Example #32
0
def shot():
    # util.log_title('截图')
    win32gui.EnumWindows(get_all_hwnd, 0)
    gbf_title = ''
    for h, t in hwnd_title.items():
        # print(h, t)
        if t.startswith('Granblue Fantasy'):
            gbf_title = t
            # print(gbf_title)
            hwnd = win32gui.FindWindow(None, gbf_title)
            app = QApplication(sys.argv)
            desktop_id = app.desktop().winId()
            screen = QApplication.primaryScreen()
            img_desk = screen.grabWindow(desktop_id).toImage()
            img_sc = screen.grabWindow(hwnd).toImage()
            img_desk.save(c.img_desktop_path)
            img_sc.save(c.img_sc_path)
            # print(f'img_desktop save to -> {os.path.abspath(c.img_desktop_path)}')
            # print(f'img_gbf save to -> {os.path.abspath(c.img_sc_path)}')
    if gbf_title == '':
        print('gbf not start')
        return False
    return True
Example #33
0
    def slot_MainWindow_btns(self):
        sender = self.sender()
        if sender == self.btnMini:
            if self.uiConfig.ccBoxMiniToTray.checkState():  # 是否最小化到托盘
                self.hide()
        elif sender == self.btnScShot:
            self.uiScShot = Ui_ScShot_Logic(self.uiConfig)
            self.uiScShot.show()
        elif sender == self.btnPrtSc:
            if self.uiConfig.ccBoxAppHide.checkState():
                self.hide()

            prtSc = QApplication.primaryScreen().grabWindow(0)  # 截取整个屏幕,QPixmap类型
            filePath = self.uiConfig.lineEdFilePath.text()
            if not os.path.exists(filePath):  # 如果此路径没有此文件夹,就创建一个
                os.mkdir(filePath)
            rq = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
            imgPath = f"{filePath}/{rq}.png"
            prtSc.save(imgPath, format='png', quality=100)
            PlaySound('prtSc.wav', flags=1)

            if self.uiConfig.ccBoxAppShow.checkState():
                self.showNormal()
Example #34
0
def main(argv=None):

    # import PyQt only here, no need to
    # generally import if only
    # scripting is needed..

    from PyQt5.QtWidgets import QApplication
    from pyboat.ui import start_menu
    # args get not parsed inside Qt app
    app = QApplication(sys.argv)

    parser = argparse.ArgumentParser()
    parser.add_argument('--debug', action='store_true')
    parser.add_argument('--version',
                        action='version',
                        version='pyBOAT ' + __version__)
    args = parser.parse_args(argv)

    debug = args.debug

    if debug:
        print('''
            ----------------
            DEBUG enabled!!
            ---------------
            ''')

        screen = app.primaryScreen()
        print('Screen: %s' % screen.name())
        size = screen.size()
        print('Size: %d x %d' % (size.width(), size.height()))
        rect = screen.availableGeometry()
        print('Available: %d x %d' % (rect.width(), rect.height()))

    window = start_menu.MainWindow(debug)

    sys.exit(app.exec_())
Example #35
0
    def screenshots(self, start, end):
        '''
        截图功能
        :param start:截图开始点
        :param end:截图结束点
        :return:
        '''

        x = min(start[0], end[0])
        y = min(start[1], end[1])
        width = abs(end[0] - start[0])
        height = abs(end[1] - start[1])

        des = QApplication.desktop()
        screen = QApplication.primaryScreen()
        if screen:
            self.setWindowOpacity(0.0)
            pix = screen.grabWindow(des.winId(), x, y, width, height)

        fileName = QFileDialog.getSaveFileName(self, '保存图片', '.', ".png;;.jpg")
        if fileName[0]:
            pix.save(fileName[0] + fileName[1])

        self.close()
Example #36
0
def shot():
    util.log_title('截图')
    win32gui.EnumWindows(get_all_hwnd, 0)
    mhxy_title = ''
    for h, t in hwnd_title.items():
        if t.startswith('梦幻西游 ONLINE'):
            mhxy_title = t
            print(mhxy_title)
            hwnd = win32gui.FindWindow(None, mhxy_title)
            app = QApplication(sys.argv)
            desktop_id = app.desktop().winId()
            screen = QApplication.primaryScreen()
            img_desk = screen.grabWindow(desktop_id).toImage()
            img_sc = screen.grabWindow(hwnd).toImage()
            img_desk.save(c.img_desktop_path)
            img_sc.save(c.img_sc_path)
            print(
                f'img_desktop save to -> {os.path.abspath(c.img_desktop_path)}'
            )
            print(f'img_mhxy save to -> {os.path.abspath(c.img_sc_path)}')
    if mhxy_title == '':
        print('mhxy not start')
        return False
    return True
Example #37
0
    def imageCut(self):

        x1 = self.object.yaml["range"]["X1"]
        y1 = self.object.yaml["range"]["Y1"]
        x2 = self.object.yaml["range"]["X2"]
        y2 = self.object.yaml["range"]["Y2"]

        # 隐藏范围框信号
        if self.object.config["drawImageUse"] \
                and not self.object.config["baiduOCR"] :
            self.hide_range_ui_sign.emit(False)
            # 确保已经隐藏了范围框才截图
            while True:
                if not self.object.show_range_ui_sign:
                    break

        screen = QApplication.primaryScreen()
        pix = screen.grabWindow(QApplication.desktop().winId(), x1, y1,
                                x2 - x1, y2 - y1)
        if self.object.config["drawImageUse"] \
            and not self.object.config["baiduOCR"] \
            and self.object.translation_ui.translate_mode :
            self.hide_range_ui_sign.emit(True)
        pix.save(IMAGE_PATH)
Example #38
0
def make_screenshot():
	app = QApplication([])
	screen = app.primaryScreen()
	result = screen.grabWindow(QApplication.desktop().winId())
Example #39
0
    if not os.path.exists(SONGS_PATH):
        os.mkdir(SONGS_PATH)


if __name__ == "__main__":
    ensure_data_dir()

    app = QApplication(sys.argv)
    app.setQuitOnLastWindowClosed(True)
    app.setWindowIcon(QIcon(WINDOW_ICON))
    app.setApplicationName("FeelUOwn")
    app_event_loop = QEventLoop(app)
    asyncio.set_event_loop(app_event_loop)

    qss = QSS_PATH
    with open(qss, "r") as qssfile:
        app.setStyleSheet(qssfile.read())

    if MODE != DEBUG:
        f_handler = open(LOGFILE, "w")
        sys.stdout = f_handler
        sys.stderr = f_handler

    w = Controller()
    w.move(QApplication.primaryScreen().geometry().center() - w.rect().center())
    w.show()

    app_event_loop.run_forever()

    sys.exit()