Example #1
0
def get_shadow():
    """
    Returns shadow effect.
    """

    shadow = QGraphicsDropShadowEffect()
    shadow.setBlurRadius(10)
    shadow.setXOffset(0)
    shadow.setYOffset(0)
    return shadow
Example #2
0
 def initObj(self):
     self.ellipse.setPos(self.posX, self.posY)
     self.ellipse.setPen(QPen(Qt.transparent, 1))
     self.ellipse.setBrush(QBrush(Qt.darkGreen))
     self.ellipse.setZValue(0)
     self.ellipse.setOpacity(1)
     effect = QGraphicsDropShadowEffect(self.parent)
     effect.setBlurRadius(15)
     effect.setColor(Qt.black)
     self.ellipse.setGraphicsEffect(effect)
     self.stand.append(self.sheet.copy(10, 15, 100, 120))
     self.stand.append(self.sheet.copy(130, 15, 100, 120))
     self.stand.append(self.sheet.copy(250, 15, 100, 120))
     self.pix = self.parent.m_scene.addPixmap(self.stand[0])
     self.pix.setPos(self.posX, self.posY)
     self.pix.setOffset(-20, -56)
     self.pix.setZValue(2)
     self.pix.setScale(1)
Example #3
0
    def setupScene(self):
        self.m_scene.setSceneRect(-300, -200, 600, 460)

        linearGrad = QLinearGradient(QPointF(-100, -100), QPointF(100, 100))
        linearGrad.setColorAt(0, QColor(255, 255, 255))
        linearGrad.setColorAt(1, QColor(192, 192, 255))
        self.setBackgroundBrush(linearGrad)

        radialGrad = QRadialGradient(30, 30, 30)
        radialGrad.setColorAt(0, Qt.yellow)
        radialGrad.setColorAt(0.2, Qt.yellow)
        radialGrad.setColorAt(1, Qt.transparent)

        pixmap = QPixmap(60, 60)
        pixmap.fill(Qt.transparent)

        painter = QPainter(pixmap)
        painter.setPen(Qt.NoPen)
        painter.setBrush(radialGrad)
        painter.drawEllipse(0, 0, 60, 60)
        painter.end()

        self.m_lightSource = self.m_scene.addPixmap(pixmap)
        self.m_lightSource.setZValue(2)

        for i in range(-2, 3):
            for j in range(-2, 3):
                if (i + j) & 1:
                    item = QGraphicsEllipseItem(0, 0, 50, 50)
                else:
                    item = QGraphicsRectItem(0, 0, 50, 50)

                item.setPen(QPen(Qt.black, 1))
                item.setBrush(QBrush(Qt.white))

                effect = QGraphicsDropShadowEffect(self)
                effect.setBlurRadius(8)
                item.setGraphicsEffect(effect)
                item.setZValue(1)
                item.setPos(i * 80, j * 80)
                self.m_scene.addItem(item)
                self.m_items.append(item)
Example #4
0
 def __init__(self, parent=None):
     """Init class."""
     super(MainWindow, self).__init__()
     self.setWindowTitle(__doc__.strip().capitalize())
     self.statusBar().showMessage(" Choose one App and move the sliders !")
     self.setMinimumSize(480, 240)
     self.setMaximumSize(640, 2048)
     self.setWindowIcon(QIcon.fromTheme("preferences-system"))
     self.center()
     QShortcut("Ctrl+q", self, activated=lambda: self.close())
     self.menuBar().addMenu("&File").addAction("Exit", exit)
     windowMenu = self.menuBar().addMenu("&Window")
     windowMenu.addAction("Minimize", lambda: self.showMinimized())
     windowMenu.addAction("Maximize", lambda: self.showMaximized())
     windowMenu.addAction("Restore", lambda: self.showNormal())
     windowMenu.addAction("FullScreen", lambda: self.showFullScreen())
     windowMenu.addAction("Center", lambda: self.center())
     windowMenu.addAction("Top-Left", lambda: self.move(0, 0))
     windowMenu.addAction("To Mouse", lambda: self.move_to_mouse_position())
     windowMenu.addSeparator()
     windowMenu.addAction(
         "Increase size", lambda:
         self.resize(self.size().width() * 1.4, self.size().height() * 1.4))
     windowMenu.addAction("Decrease size", lambda: self.resize(
         self.size().width() // 1.4, self.size().height() // 1.4))
     windowMenu.addAction("Minimum size", lambda:
                          self.resize(self.minimumSize()))
     windowMenu.addAction("Maximum size", lambda:
                          self.resize(self.maximumSize()))
     windowMenu.addAction("Horizontal Wide", lambda: self.resize(
         self.maximumSize().width(), self.minimumSize().height()))
     windowMenu.addAction("Vertical Tall", lambda: self.resize(
         self.minimumSize().width(), self.maximumSize().height()))
     windowMenu.addSeparator()
     windowMenu.addAction("Disable Resize", lambda:
                          self.setFixedSize(self.size()))
     windowMenu.addAction("Set Interface Font...", lambda:
                          self.setFont(QFontDialog.getFont()[0]))
     helpMenu = self.menuBar().addMenu("&Help")
     helpMenu.addAction("About Qt 5", lambda: QMessageBox.aboutQt(self))
     helpMenu.addAction("About Python 3",
                        lambda: open_new_tab('https://www.python.org'))
     helpMenu.addAction("About" + __doc__,
                        lambda: QMessageBox.about(self, __doc__, HELP))
     helpMenu.addSeparator()
     helpMenu.addAction(
         "Keyboard Shortcut",
         lambda: QMessageBox.information(self, __doc__, "<b>Quit = CTRL+Q"))
     helpMenu.addAction("View Source Code",
                        lambda: call('xdg-open ' + __file__, shell=True))
     helpMenu.addAction("View GitHub Repo", lambda: open_new_tab(__url__))
     helpMenu.addAction("Report Bugs", lambda: open_new_tab(
         'https://github.com/juancarlospaco/pyority/issues?state=open'))
     helpMenu.addAction("Check Updates", lambda: Downloader(self))
     container, child_container = QWidget(), QWidget()
     container_layout = QVBoxLayout(container)
     child_layout = QHBoxLayout(child_container)
     self.setCentralWidget(container)
     # widgets
     group0 = QGroupBox("My Apps")
     group1, group2 = QGroupBox("CPU Priority"), QGroupBox("HDD Priority")
     child_layout.addWidget(group0)
     child_layout.addWidget(group1)
     child_layout.addWidget(group2)
     container_layout.addWidget(child_container)
     # table
     self.table = QTableWidget()
     self.table.setColumnCount(1)
     self.table.verticalHeader().setVisible(True)
     self.table.horizontalHeader().setVisible(False)
     self.table.setShowGrid(False)
     self.table.setAlternatingRowColors(True)
     self.table.setIconSize(QSize(64, 64))
     self.table.setSelectionMode(QAbstractItemView.SingleSelection)
     self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
     # Graphic effect
     glow = QGraphicsDropShadowEffect(self)
     glow.setOffset(0)
     glow.setBlurRadius(9)
     glow.setColor(QColor(99, 255, 255))
     self.table.setGraphicsEffect(glow)
     glow.setEnabled(True)
     processes = self.generate_process_list()
     self.table.setRowCount(len(processes))
     for index, process in enumerate(processes):
         item = QTableWidgetItem(
             QIcon.fromTheme(process.name().split()[0].split('/')[0]),
             process.name().split()[0].split('/')[0].strip())
         item.setData(Qt.UserRole, process)
         item.setToolTip("{}, {}, {}, {}".format(
             process.name(), process.nice(),
             process.ionice()[1], process.pid))
         self.table.setItem(index, 0, item)
     self.table.clicked.connect(lambda: self.sliderhdd.setDisabled(False))
     self.table.clicked.connect(lambda: self.slidercpu.setDisabled(False))
     self.table.clicked.connect(lambda: self.slidercpu.setValue(
         int(tuple(self.table.currentItem().toolTip().split(","))[1])))
     self.table.clicked.connect(lambda: self.sliderhdd.setValue(
         int(tuple(self.table.currentItem().toolTip().split(","))[2])))
     self.table.resizeColumnsToContents()
     # self.table.resizeRowsToContents()
     # sliders
     self.slidercpu = QSlider()
     self.slidercpu.setRange(0, 19)
     self.slidercpu.setSingleStep(1)
     self.slidercpu.setTickPosition(3)
     self.slidercpu.setDisabled(True)
     self.slidercpu.setInvertedAppearance(True)
     self.slidercpu.setInvertedControls(True)
     self.slidercpu.valueChanged.connect(self.set_cpu_value)
     self.slidercpu.valueChanged.connect(
         lambda: self.slidercpu.setToolTip(str(self.slidercpu.value())))
     # Timer to start
     self.slidercpu_timer = QTimer(self)
     self.slidercpu_timer.setSingleShot(True)
     self.slidercpu_timer.timeout.connect(self.on_slidercpu_timer_timeout)
     QLabel(self.slidercpu).setPixmap(
         QIcon.fromTheme("list-add").pixmap(16))
     QVBoxLayout(group1).addWidget(self.slidercpu)
     self.sliderhdd = QSlider()
     self.sliderhdd.setRange(0, 7)
     self.sliderhdd.setSingleStep(1)
     self.sliderhdd.setTickPosition(3)
     self.sliderhdd.setDisabled(True)
     self.sliderhdd.setInvertedAppearance(True)
     self.sliderhdd.setInvertedControls(True)
     self.sliderhdd.valueChanged.connect(self.set_hdd_value)
     self.sliderhdd.valueChanged.connect(
         lambda: self.sliderhdd.setToolTip(str(self.sliderhdd.value())))
     # Timer to start
     self.sliderhdd_timer = QTimer(self)
     self.sliderhdd_timer.setSingleShot(True)
     self.sliderhdd_timer.timeout.connect(self.on_sliderhdd_timer_timeout)
     QLabel(self.sliderhdd).setPixmap(
         QIcon.fromTheme("list-add").pixmap(16))
     QVBoxLayout(group2).addWidget(self.sliderhdd)
     QVBoxLayout(group0).addWidget(self.table)
Example #5
0
    def __init__(self, item):
        print(item)
        super().__init__()
        self.item = item
        #             sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        #             sizePolicy.setHorizontalStretch(0)
        #             sizePolicy.setVerticalStretch(0)
        #             sizePolicy.setHeightForWidth(self.session_bt_size_policy().hasHeightForWidth())
        #             self.setSizePolicy(sizePolicy)

        #             self.setMinimumSize(QSize(200, 100))
        item_size = get_option_int("item_size")
        self.setFixedSize(QSize(item_size, item_size))

        self.pushButton = QPushButton(self)
        #             允许拖放
        if item["type"] == 3:
            self.setAcceptDrops(True)
#             self.pushButton.setAcceptDrops(True)
#             self.setDragEnabled(True)
        if not item["ico"]:
            self.set_icon(get_file_realpath('data/image/firefox64.png'))
        else:
            self.check_icon_path(item)
            self.set_icon(item["ico"])
        self.pushButton.setIconSize(QSize(item_size * 0.4, item_size * 0.4))
        self.pushButton.clicked.connect(self.on_clicked)
        #             self.pushButton.setAttribute(Qt.WA_TranslucentBackground,True )
        #             self.pushButton.setAutoFillBackground(True)
        self.pushButton.setStyleSheet("border: 0px;")
        op = QGraphicsOpacityEffect()
        op.setOpacity(0.5)
        #             self.pushButton.setGraphicsEffect(op)

        self.label = QLabel(self)
        #             self.label.setSizePolicy(sizePolicy)
        self.label.setFont(QFont("sans", 10, QFont.Normal))
        self.label.setAttribute(Qt.WA_TranslucentBackground)
        pe = QPalette()
        self.label.setAutoFillBackground(True)
        pe.setColor(QPalette.WindowText, Qt.white)
        self.label.setPalette(pe)

        dse = QGraphicsDropShadowEffect(self.label)
        dse.setBlurRadius(10)
        dse.setColor(QPalette().color(QPalette.Shadow))
        dse.setOffset(0, 0)
        self.label.setGraphicsEffect(dse)

        #             self.label.setAlignment(Qt.AlignCenter)
        #             sizePolicy=QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding);
        #             sizePolicy.setHorizontalStretch(0);
        #             sizePolicy.setVerticalStretch(0);
        #             sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth());
        #             self.label.setSizePolicy(sizePolicy);
        #             self.label.setAlignment(Qt.AlignTop)
        self.label.setWordWrap(True)
        #             self.label.adjustSize()
        #             self.label.setScaledContents(True)
        if len(item["name"]) > 9:
            self.label.setText(item["name"][:9] + "\n" + item["name"][9:])
        else:
            self.label.setText(item["name"] + " \n ")

        self.verticalLayout = QVBoxLayout(self)
        self.verticalLayout.addWidget(self.pushButton, 5, Qt.AlignCenter)
        self.verticalLayout.addWidget(self.label, 1, Qt.AlignCenter)

        self.item_popup_menu = QMenu()
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.customContextMenuRequested[QPoint].connect(self.handle_pop_menu)
        self.menu_item = [QAction("修改"), QAction("删除")]
Example #6
0
class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        ti = TrayIcon(self)
        ti.show()
        self.handler = Handle(self)
        self.m_flag = None
        self.m_Position = None
        self.setupUi(self)
        self.init_ui()
        self.click_handler()
        self.shadow = QGraphicsDropShadowEffect()
        self.shadow.setBlurRadius(15)
        self.shadow.setColor(QColor(0, 0, 0, 255))
        self.shadow.setOffset(0, 0)
        self.shadow1 = QGraphicsDropShadowEffect()
        self.shadow1.setBlurRadius(15)
        self.shadow1.setOffset(0, 0)
        self.shadow1.setColor(QColor(0, 0, 0, 255))
        self.shadow2 = QGraphicsDropShadowEffect()
        self.shadow2.setBlurRadius(15)
        self.shadow2.setOffset(0, 0)
        self.shadow2.setColor(QColor(0, 0, 0, 255))
        self.widget_2.setGraphicsEffect(self.shadow)
        self.widget.setGraphicsEffect(self.shadow1)  # 加阴影,更立体

    def init_ui(self):
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)  # 去边框
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground)  # 设置窗口背景透明
        self.centralwidget.setAttribute(
            QtCore.Qt.WA_TranslucentBackground)  # 设置pyqt自动生成的centralwidget背景透明
        self.centralwidget.setAutoFillBackground(True)
        self.pushButton.setFixedSize(QSize(BUTTON_WIDTH,
                                           BUTTON_HEIGHT))  # 设置按钮大小
        self.pushButton_2.setFixedSize(QSize(BUTTON_WIDTH,
                                             BUTTON_HEIGHT))  # 设置按钮大小
        btn_close_normal = resource_path(join("img", "btn_close_normal.png"))
        btn_close_down2 = resource_path(join("img", "btn_close_down2.png"))
        btn_close_down = resource_path(join("img", "btn_close_down.png"))
        btn_set_normal = resource_path(join("img", "btn_set_normal.png"))
        btn_min_normal = resource_path(join("img", "btn_min_normal.png"))
        Qss = 'QWidget#widget_2{background-color: %s;}' % BACKGROUND_COLOR
        Qss += 'QWidget#widget{background-color: %s;border-top-right-radius:5 ;border-top-left-radius:5 ;}' % TITLE_COLOR
        Qss += 'QWidget#widget_3{background-color: %s;}' % TITLE_COLOR
        Qss += 'QPushButton#pushButton{margin-top:6;background-color: %s;border-image:url(%s);border-top-right-radius:5 ;}' % (
            TITLE_COLOR, btn_close_normal)
        Qss += 'QPushButton#pushButton:hover{border-image:url(%s); border-top-right-radius:5 ;}' % btn_close_down2
        Qss += 'QPushButton#pushButton:pressed{border-image:url(%s);border-top-right-radius:5 ;}' % btn_close_down
        Qss += 'QPushButton#pushButton_2{margin-top:8;background-color: %s;border-image:url(%s);}' % (
            TITLE_COLOR, btn_min_normal)
        Qss += 'QPushButton#pushButton_2:hover{background-color: %s;border-image:url(%s);}' % (
            BACKGROUND_COLOR, btn_min_normal)
        Qss += 'QPushButton#pushButton_2:pressed{background-color: %s;border-top-left-radius:5 ;}' % BACKGROUND_COLOR
        Qss += 'QPushButton#pushButton_3{border-image:url(%s);background-color: %s;border-top-left-radius:5}' % (
            btn_set_normal, TITLE_COLOR)
        Qss += '#label{background-color:rbga(0,0,0,0);color:#111111;}'
        self.setStyleSheet(Qss)  # 边框部分qss重载
        self.setWindowIcon(QIcon(resource_path("icon.ico")))
        self.setWindowTitle('神秘鸭')
        self.textBrowser.append("欢迎使用神秘鸭 smya.cn")
        self.read_login_info()
        _thread.start_new_thread(self.handler.ad, ())
        _translate = QtCore.QCoreApplication.translate
        self.label.setText(
            _translate("MainWindow", "神秘鸭 v{}".format(APP_VERSION)))
        self.progressBar.setHidden(True)
        self.handler.app_update()

    def click_handler(self):
        """
        按钮点击事件
        :return:
        """
        self.pushButton.clicked.connect(self.exit_app)  # 关闭
        self.pushButton_2.clicked.connect(self.ButtonMinSlot)  # 最小化
        self.login.clicked.connect(self.handler.login)
        self.video_script.clicked.connect(self.start_script)
        self.ad1.mousePressEvent = self.handler.jump_ad
        self.checkBox.stateChanged.connect(self.select)
        _thread.start_new_thread(self.info_window_scroll, ())

    def select(self):
        with open(join(os.path.expanduser('~'), 'smya_mode.ini'), "w") as F:
            F.write("{}".format(self.checkBox.isChecked()))

    def exit_app(self):
        box = QMessageBox(QMessageBox.Information, "提示!", "你是要退出还是最小化?")
        yes = box.addButton(self.tr("退出"), QMessageBox.YesRole)
        no = box.addButton(self.tr("最小化"), QMessageBox.NoRole)
        box.exec_()
        if box.clickedButton() == yes:
            self.close()
        else:
            self.hide()

    def read_login_info(self):
        login_file = join(os.path.expanduser('~'), 'smya.json')
        _thread.start_new_thread(self.check_old_script, ())
        try:
            if exists(login_file) is True:
                with open(login_file, 'r') as f:
                    info = json.loads(f.readline())
                    device_id = info['device_id']
                    safe_code = info['safe_code']

                    if len(device_id) and len(safe_code) > 5:
                        self.device_id.setText(device_id)
                        self.safe_code.setText(safe_code)
                        self.handler.login()
        except:
            pass

    def check_old_script(self):
        """下个版本可以删掉"""
        new_path = os.path.join(os.path.expanduser('~'), 'smyascript')
        old_path = resource_path('scripts')
        if os.path.exists(new_path) is False and os.path.exists(
                old_path) is True:
            shutil.copytree(old_path, new_path)

    def send_key_event(self, data):
        self.show()

    def start_script(self):
        try:
            old_tools_path = os.path.join(
                os.path.expanduser('~'),
                'smyatoolsv{}'.format(APP_TOOLS_VERSION - 1))
            if os.path.exists(old_tools_path) is True:
                delete_file(old_tools_path)
            tools_path = os.path.join(os.path.expanduser('~'),
                                      'smyatoolsv{}'.format(APP_TOOLS_VERSION))
            if os.path.exists(join(tools_path, "smyatools.exe")) is True:
                _thread.start_new_thread(subprocess.Popen,
                                         (join(tools_path, "smyatools.exe"), ))
            else:
                if os.path.exists(tools_path) is True:
                    os.rmdir(tools_path)
                box = QMessageBox(QMessageBox.Warning, "提示!",
                                  "神秘鸭录制工具未安装或需要更新,现在是否安装!")
                yes = box.addButton(self.tr("安装"), QMessageBox.YesRole)
                no = box.addButton(self.tr("取消"), QMessageBox.NoRole)
                box.exec_()
                if box.clickedButton() == yes:
                    self.progressBar.setHidden(False)
                    self.progressBar.setValue(0)
                    f = requests.get(
                        "https://cdn.monyuan.com/smya/smyatoolsv{}.zip".format(
                            APP_TOOLS_VERSION),
                        stream=True)
                    length = float(f.headers['content-length'])
                    count = 0
                    time1 = time.time()
                    down_file = join(
                        tools_path,
                        "smyatoolsv{}.zip".format(APP_TOOLS_VERSION))
                    os.mkdir(tools_path)
                    with open(down_file, "wb") as F:
                        for chunk in f.iter_content(chunk_size=1024):
                            if chunk:
                                F.write(chunk)
                                count += len(chunk)
                                p = int(count / length * 100)
                                self.progressBar.setValue(p)
                                if p == 100:
                                    self.progressBar.setHidden(True)
                    F.close()
                    zipFile = zipfile.ZipFile(down_file)
                    for file in zipFile.namelist():
                        zipFile.extract(file, os.path.expanduser('~'))
                    zipFile.close()
                    os.remove(down_file)
                    QMessageBox.information(self, '提示!', '你已下载完成,可以使用啦!')
        except Exception as E:
            self.textBrowser.append(
                '<span style="color: red">{} {}</span>'.format(
                    datetime.strftime(datetime.now(), '%H:%M:%S'), E))
            # 下个版本删除
            self.textBrowser.append(
                '<span style="color: red">{} {}</span>'.format(
                    datetime.strftime(datetime.now(), '%H:%M:%S'),
                    "请重启电脑然后安装!"))
            QMessageBox.warning(self, '错误!', '出现问题,请看运行日志!')

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()  # 获取鼠标相对窗口的位置
            event.accept()
            self.setCursor(QCursor(QtCore.Qt.OpenHandCursor))

    def mouseReleaseEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.m_flag = False
            self.setCursor(QCursor(QtCore.Qt.ArrowCursor))

    def mouseMoveEvent(self, event):
        """
        拖动事件
        :param event:
        :return:
        """
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(event.globalPos() - self.m_Position)  # 更改窗口位置
            event.accept()

    def keyPressEvent(self, QKeyEvent):
        if QKeyEvent.key() == QtCore.Qt.Key_Escape:
            self.hide()

    def ButtonMinSlot(self):
        self.showMinimized()

    def info_window_scroll(self):
        sleep(3.5)
        while True:
            self.textBrowser.moveCursor(self.textBrowser.textCursor().End)
            sleep(0.5)
Example #7
0
class ColorPicker(QDialog):

    DX_Color_OutSingal = pyqtSignal(int, int, int)

    def __init__(self, lightTheme=False, useAlpha=False):
        super(ColorPicker, self).__init__()

        self.usingAlpha = useAlpha

        # Call UI Builder function
        if useAlpha:
            if lightTheme: self.ui = Ui_Light_Alpha()
            else: self.ui = Ui_Dark_Alpha()
            self.ui.setupUi(self)
        else:
            if lightTheme: self.ui = Ui_Light()
            else: self.ui = Ui_Dark()
            self.ui.setupUi(self)

        # Make Frameless
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setWindowTitle("Color Picker")

        # Add DropShadow
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(17)
        self.shadow.setXOffset(0)
        self.shadow.setYOffset(0)
        self.shadow.setColor(QColor(0, 0, 0, 150))
        self.ui.drop_shadow_frame.setGraphicsEffect(self.shadow)

        # Connect update functions
        self.ui.hue.mouseMoveEvent = self.moveHueSelector
        self.ui.red.textEdited.connect(self.rgbChanged)
        self.ui.green.textEdited.connect(self.rgbChanged)
        self.ui.blue.textEdited.connect(self.rgbChanged)
        self.ui.hex.textEdited.connect(self.hexChanged)
        if self.usingAlpha: self.ui.alpha.textEdited.connect(self.alphaChanged)

        # Connect window dragging functions
        self.ui.title_bar.mouseMoveEvent = self.moveWindow
        self.ui.title_bar.mousePressEvent = self.setDragPos
        self.ui.window_title.mouseMoveEvent = self.moveWindow
        self.ui.window_title.mousePressEvent = self.setDragPos

        # Connect selector moving function
        self.ui.black_overlay.mouseMoveEvent = self.moveSVSelector
        self.ui.black_overlay.mousePressEvent = self.moveSVSelector

        # Connect Ok|Cancel Button Box and X Button
        self.ui.buttonBox.accepted.connect(self.accept)
        self.ui.buttonBox.rejected.connect(self.reject)
        self.ui.exit_btn.clicked.connect(self.reject)

        self.lastcolor = (0, 0, 0)
        self.color = (0, 0, 0)
        self.alpha = 100

    ## Main Function
    def getColor(self, lc=None):
        if lc != None and self.usingAlpha:
            alpha = lc[3]
            lc = lc[:3]
            self.setAlpha(alpha)
            self.alpha = alpha
        if lc == None: lc = self.lastcolor
        else: self.lastcolor = lc

        self.setRGB(lc)
        self.rgbChanged()
        r, g, b = lc
        self.ui.lastcolor_vis.setStyleSheet(
            f"background-color: rgb({r},{g},{b})")

        if self.exec_():
            r, g, b = self.hsv2rgb(self.color)
            self.lastcolor = (r, g, b)
            if self.usingAlpha: return (r, g, b, self.alpha)
            return (r, g, b)

        else:
            return self.lastcolor

    ## Update Functions
    def hsvChanged(self):
        h, s, v = (100 - self.ui.hue_selector.y() / 1.85,
                   (self.ui.selector.x() + 6) / 2.0,
                   (194 - self.ui.selector.y()) / 2.0)
        r, g, b = self.hsv2rgb(h, s, v)
        # print(r)
        # print(g)
        # print(b)
        self.DX_Color_OutSingal.emit(r, g, b)
        self.color = (h, s, v)
        self.setRGB((r, g, b))
        self.setHex(self.hsv2hex(self.color))
        self.ui.color_vis.setStyleSheet(f"background-color: rgb({r},{g},{b})")
        self.ui.color_view.setStyleSheet(
            f"border-radius: 5px;background-color: qlineargradient(x1:1, x2:0, stop:0 hsl({h}%,100%,50%), stop:1 #fff);"
        )

    def rgbChanged(self):
        r, g, b = self.i(self.ui.red.text()), self.i(
            self.ui.green.text()), self.i(self.ui.blue.text())
        cr, cg, cb = self.clampRGB((r, g, b))

        if r != cr or (r == 0 and self.ui.red.hasFocus()):
            self.setRGB((cr, cg, cb))
            self.ui.red.selectAll()
        if g != cg or (g == 0 and self.ui.green.hasFocus()):
            self.setRGB((cr, cg, cb))
            self.ui.green.selectAll()
        if b != cb or (b == 0 and self.ui.blue.hasFocus()):
            self.setRGB((cr, cg, cb))
            self.ui.blue.selectAll()

        self.color = self.rgb2hsv(r, g, b)
        self.setHSV(self.color)
        self.setHex(self.rgb2hex((r, g, b)))
        self.ui.color_vis.setStyleSheet(f"background-color: rgb({r},{g},{b})")

    def hexChanged(self):
        hex = self.ui.hex.text()
        r, g, b = self.hex2rgb(hex)
        self.color = self.hex2hsv(hex)
        self.setHSV(self.color)
        self.setRGB((r, g, b))
        self.ui.color_vis.setStyleSheet(f"background-color: rgb({r},{g},{b})")

    def alphaChanged(self):
        alpha = self.i(self.ui.alpha.text())
        oldalpha = alpha
        if alpha < 0: alpha = 0
        if alpha > 100: alpha = 100
        if alpha != oldalpha or alpha == 0:
            self.ui.alpha.setText(str(alpha))
            self.ui.alpha.selectAll()
        self.alpha = alpha

    ## Internal setting functions
    def setRGB(self, c):
        r, g, b = c
        self.ui.red.setText(str(self.i(r)))
        self.ui.green.setText(str(self.i(g)))
        self.ui.blue.setText(str(self.i(b)))

    def setHSV(self, c):
        self.ui.hue_selector.move(7, (100 - c[0]) * 1.85)
        self.ui.color_view.setStyleSheet(
            f"border-radius: 5px;background-color: qlineargradient(x1:1, x2:0, stop:0 hsl({c[0]}%,100%,50%), stop:1 #fff);"
        )
        self.ui.selector.move(c[1] * 2 - 6, (200 - c[2] * 2) - 6)

    def setHex(self, c):
        self.ui.hex.setText(c)

    def setAlpha(self, a):
        self.ui.alpha.setText(str(a))

    ## Color Utility
    def hsv2rgb(self, h_or_color, s=0, v=0, a=None):
        if type(h_or_color).__name__ == "tuple":
            if len(h_or_color) == 4:
                h, s, v, a = h_or_color
            else:
                h, s, v = h_or_color
        else:
            h = h_or_color
        r, g, b = colorsys.hsv_to_rgb(h / 100.0, s / 100.0, v / 100.0)
        if a != None: return (r * 255, g * 255, b * 255, a)
        return (r * 255, g * 255, b * 255)

    def rgb2hsv(self, r_or_color, g=0, b=0, a=None):
        if type(r_or_color).__name__ == "tuple":
            if len(r_or_color) == 4:
                r, g, b, a = r_or_color
            else:
                r, g, b = r_or_color
        else:
            r = r_or_color
        h, s, v = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)
        if a != None: return (h * 100, s * 100, v * 100, a)
        return (h * 100, s * 100, v * 100)

    def hex2rgb(self, hex):
        if len(hex) < 6: hex += "0" * (6 - len(hex))
        elif len(hex) > 6: hex = hex[0:6]
        rgb = tuple(int(hex[i:i + 2], 16) for i in (0, 2, 4))
        return rgb

    def rgb2hex(self, r_or_color, g=0, b=0, a=0):
        if type(r_or_color).__name__ == "tuple": r, g, b = r_or_color[:3]
        else: r = r_or_color
        hex = '%02x%02x%02x' % (int(r), int(g), int(b))
        return hex

    def hex2hsv(self, hex):
        return self.rgb2hsv(self.hex2rgb(hex))

    def hsv2hex(self, h_or_color, s=0, v=0, a=0):
        if type(h_or_color).__name__ == "tuple": h, s, v = h_or_color[:3]
        else: h = h_or_color
        return self.rgb2hex(self.hsv2rgb(h, s, v))

    ## Dragging Functions
    def setDragPos(self, event):
        self.dragPos = event.globalPos()

    def moveWindow(self, event):
        # MOVE WINDOW
        if event.buttons() == Qt.LeftButton:
            self.move(self.pos() + event.globalPos() - self.dragPos)
            self.dragPos = event.globalPos()
            event.accept()

    def moveSVSelector(self, event):
        if event.buttons() == Qt.LeftButton:
            pos = event.pos()
            if pos.x() < 0: pos.setX(0)
            if pos.y() < 0: pos.setY(0)
            if pos.x() > 200: pos.setX(200)
            if pos.y() > 200: pos.setY(200)
            self.ui.selector.move(pos - QPoint(6, 6))
            self.hsvChanged()

    def moveHueSelector(self, event):
        if event.buttons() == Qt.LeftButton:
            pos = event.pos().y() - 7
            if pos < 0: pos = 0
            if pos > 185: pos = 185
            self.ui.hue_selector.move(QPoint(7, pos))
            self.hsvChanged()

    ## Utility

    ## Custom int() function, that converts uncastable strings to 0
    def i(self, text):
        try:
            return int(text)
        except:
            return 0

    ## clamp function to remove near-zero values
    def clampRGB(self, rgb):
        r, g, b = rgb
        if r < 0.0001: r = 0
        if g < 0.0001: g = 0
        if b < 0.0001: b = 0
        if r > 255: r = 255
        if g > 255: g = 255
        if b > 255: b = 255
        return (r, g, b)
Example #8
0
class BasicPlaylistPanel(QWidget):
    """ 播放列表面板基类 """
    def __init__(self, parent=None):
        super().__init__(parent)
        # 创建小部件
        self.__createWidgets()
        # 初始化
        self.__initWidget()

    def __createWidgets(self):
        """ 创建小部件 """
        self.iconPic = QLabel(self)
        self.lineEdit = LineEdit(parent=self)
        self.cancelLabel = ClickableLabel("取消", self)
        self.button = PerspectivePushButton(parent=self)
        self.playlistExistedLabel = QLabel("此名称已经存在。请尝试其他名称。", self)

    def __initWidget(self):
        """ 初始化小部件 """
        self.resize(586, 644)
        self.button.resize(313, 48)
        self.setAttribute(Qt.WA_StyledBackground)
        self.setShadowEffect()
        self.playlistExistedLabel.hide()
        self.iconPic.setPixmap(
            QPixmap(
                r"app\resource\images\createPlaylistPanel\playList_icon.png"))
        # 分配ID
        self.setObjectName("basicPlaylistPanel")
        self.cancelLabel.setObjectName("cancelLabel")
        # 信号连接到槽函数
        self.cancelLabel.clicked.connect(self.parent().deleteLater)

    def setShadowEffect(self):
        """ 添加阴影 """
        self.shadowEffect = QGraphicsDropShadowEffect(self)
        self.shadowEffect.setBlurRadius(60)
        self.shadowEffect.setOffset(0, 5)
        self.setGraphicsEffect(self.shadowEffect)

    def paintEvent(self, e):
        """ 绘制边框 """
        pen = QPen(QColor(172, 172, 172))
        pen.setWidth(2)
        painter = QPainter(self)
        painter.setPen(pen)
        painter.drawRect(0, 0, self.width() - 1, self.height() - 1)

    def _setQss(self):
        """ 设置层叠样式 """
        with open("app\\resource\\css\\playlistPanel.qss",
                  encoding="utf-8") as f:
            self.setStyleSheet(f.read())

    def _isPlaylistExist(self, playlistName) -> bool:
        """ 检测播放列表是否已经存在,如果已存在就显示提示标签 """
        # 扫描播放列表文件夹下的播放列表名字
        if not os.path.exists("app\\Playlists"):
            os.mkdir("app\\Playlists")
        playlistName_list = [
            os.path.splitext(i)[0] for i in os.listdir("app\\Playlists")
        ]
        isExist = playlistName in playlistName_list
        # 如果播放列表名字已存在显示提示标签
        self.playlistExistedLabel.setVisible(isExist)
        self.button.setEnabled(not isExist)
        return isExist
Example #9
0
class Firmament(QWidget):
	def __init__(self):
		QWidget.__init__(self)
		self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
		self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
		#self.setWindowOpacity(1)
		self.setMaximumHeight(30)
		self.resize(QSize(ancho, 30))
		self.container = QHBoxLayout()
		self.container.setContentsMargins(0,0,0,0)
		self.container.setSpacing(0)
		self.setLayout(self.container)

		#Widget de contenido, ignorar el resto, no he ordenado nada jijijiji.
		self.contenido = QWidget()
		self.container.addWidget(self.contenido,0)
		self.contenido.setStyleSheet("background-color: rgba(255, 255, 255,0.5);")
		#Crea la sombra
		self.shadow = QGraphicsDropShadowEffect(self.contenido)
		self.shadow.setColor(QColor(0,0,0,30))
		self.shadow.setBlurRadius(15)		
		self.shadow.setOffset(0,4)
		self.contenido.setGraphicsEffect(self.shadow)

		self.layout = QGridLayout()
		self.layout.setContentsMargins(0,0,0,0)
		self.layout.setSpacing(0)

		self.cuarzoBtn = QPushButton()
		self.cuarzoBtn.setAttribute(QtCore.Qt.WA_TranslucentBackground)
		self.batteryStatus = QPushButton()
		self.wifiStatus = QPushButton()
		self.volumeControl = QPushButton()
		self.shutdownControl = QPushButton()

		self.cuarzoBtn.setIcon(QIcon("src/img/cuarzo_16x16.png"))
		self.batteryStatus.setIcon(QIcon("src/img/battery-full.png"))
		self.wifiStatus.setIcon(QIcon("src/img/network-wireless-signal-good.png"))
		self.volumeControl.setIcon(QIcon("src/img/audio-volume-high.png"))
		self.shutdownControl.setIcon(QIcon("src/img/system-devices-panel.png"))

		self.cuarzoBtn.setIconSize(QSize(16,16))
		self.batteryStatus.setIconSize(QSize(22,22))
		self.wifiStatus.setIconSize(QSize(22,22))
		self.volumeControl.setIconSize(QSize(22,22))
		self.shutdownControl.setIconSize(QSize(22,22))

		self.cuarzoBtn.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
		self.batteryStatus.setStyleSheet("background-color: rgba(255, 255, 255, 0);")		
		self.wifiStatus.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
		self.volumeControl.setStyleSheet("background-color: rgba(255, 255, 255, 0);")
		self.shutdownControl.setStyleSheet("background-color: rgba(255, 255, 255, 0);")

		# Grupo de Iconos de Derecha
		self.btnGroup = QWidget()
		self.topicons = QHBoxLayout()
		self.topicons.setContentsMargins(0,0,0,0)
		self.topicons.setSpacing(0)
		self.topicons.addWidget(self.wifiStatus)
		self.topicons.addWidget(self.volumeControl)
		self.topicons.addWidget(self.batteryStatus)
		self.topicons.addWidget(self.shutdownControl)
		self.btnGroup.setLayout(self.topicons)

		self.layout.addWidget(self.cuarzoBtn,0,0,QtCore.Qt.AlignLeft)
		self.layout.addWidget(clock,0,1,QtCore.Qt.AlignCenter)
		self.layout.addWidget(self.btnGroup,0,2, QtCore.Qt.AlignRight)

		self.contenido.setLayout(self.layout)
Example #10
0
class Clipper(QPushButton):
    def __init__(self, master):
        super().__init__()

        self._id = 0
        self.master = master

        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setOffset(0, 0)
        self.shadow.setColor(QColor(255, 255, 255))

        self.setMinimumHeight(200)
        self.setGraphicsEffect(self.shadow)
        self.setObjectName("ClipperButton")

        self.enterEvent = lambda event: self.shadow.setBlurRadius(15)
        self.leaveEvent = lambda event: self.shadow.setBlurRadius(0)

        self.titlebar = QFrame(self)
        self.titlebar.resize(330, 30)
        self.titlebar.setObjectName("ClipperTitlebar")

        self._titlebar_text = QLineEdit(self.titlebar)
        self._titlebar_text.resize(self.width() - 30, 30)
        self._titlebar_text.move(30, 0)
        self._titlebar_text.setText("New Clipper")

        self.text_label_frame = QFrame(self)
        self.text_label_frame.resize(330, 170)
        self.text_label_frame.move(0, 30)
        self.text_label_frame.mousePressEvent = lambda event: self.text_label_pressed(
        )

        self._text_label = ClassicQLabel(self.text_label_frame)
        self._text_label.resize(
            self.text_label_frame.frameGeometry().width() - 15,
            self.text_label_frame.frameGeometry().height() - 15)
        self._text_label.move(5, 5)
        self._text_label.mousePressEvent = lambda event: self.text_label_pressed(
        )
        self._text_label.setWordWrap(True)
        self._text_label.setAlignment(Qt.AlignTop)

        self.delete_button = QPushButton(self)
        self.delete_button.resize(30, 30)
        self.delete_button.clicked.connect(self.delete_button_clicked)

    def text_label_pressed(self):
        if len(self._text_label.text()) > 0:
            QApplication.clipboard().setText(self._text_label.text())

    def delete_button_clicked(self):
        window_clippers.pop(self.id)
        self.master.resize_window_clippers()
        self.setParent(None)

    @property
    def text(self):
        return self._text_label.text()

    @text.setter
    def text(self, text):
        self.title = win32gui.GetWindowText(win32gui.GetForegroundWindow())
        self._text_label.setText(text)

    @property
    def title(self):
        return self._titlebar_text.text()

    @title.setter
    def title(self, text):
        self._titlebar_text.setText(text)

    @property
    def id(self):
        return self._id

    @id.setter
    def id(self, id):
        self._id = id
Example #11
0
class MainWindow(QMainWindow):
    """Voice Changer main window."""
    def __init__(self, parent=None):
        super(MainWindow, self).__init__()
        self.statusBar().showMessage("Move Dial to Deform Microphone Voice !.")
        self.setWindowTitle(__doc__)
        self.setMinimumSize(240, 240)
        self.setMaximumSize(480, 480)
        self.resize(self.minimumSize())
        self.setWindowIcon(QIcon.fromTheme("audio-input-microphone"))
        self.tray = QSystemTrayIcon(self)
        self.center()
        QShortcut("Ctrl+q", self, activated=lambda: self.close())
        self.menuBar().addMenu("&File").addAction("Quit", lambda: exit())
        self.menuBar().addMenu("Sound").addAction(
            "STOP !", lambda: call('killall rec', shell=True))
        windowMenu = self.menuBar().addMenu("&Window")
        windowMenu.addAction("Hide", lambda: self.hide())
        windowMenu.addAction("Minimize", lambda: self.showMinimized())
        windowMenu.addAction("Maximize", lambda: self.showMaximized())
        windowMenu.addAction("Restore", lambda: self.showNormal())
        windowMenu.addAction("FullScreen", lambda: self.showFullScreen())
        windowMenu.addAction("Center", lambda: self.center())
        windowMenu.addAction("Top-Left", lambda: self.move(0, 0))
        windowMenu.addAction("To Mouse", lambda: self.move_to_mouse_position())
        # widgets
        group0 = QGroupBox("Voice Deformation")
        self.setCentralWidget(group0)
        self.process = QProcess(self)
        self.process.error.connect(
            lambda: self.statusBar().showMessage("Info: Process Killed", 5000))
        self.control = QDial()
        self.control.setRange(-10, 20)
        self.control.setSingleStep(5)
        self.control.setValue(0)
        self.control.setCursor(QCursor(Qt.OpenHandCursor))
        self.control.sliderPressed.connect(
            lambda: self.control.setCursor(QCursor(Qt.ClosedHandCursor)))
        self.control.sliderReleased.connect(
            lambda: self.control.setCursor(QCursor(Qt.OpenHandCursor)))
        self.control.valueChanged.connect(
            lambda: self.control.setToolTip(f"<b>{self.control.value()}"))
        self.control.valueChanged.connect(lambda: self.statusBar().showMessage(
            f"Voice deformation: {self.control.value()}", 5000))
        self.control.valueChanged.connect(self.run)
        self.control.valueChanged.connect(lambda: self.process.kill())
        # Graphic effect
        self.glow = QGraphicsDropShadowEffect(self)
        self.glow.setOffset(0)
        self.glow.setBlurRadius(99)
        self.glow.setColor(QColor(99, 255, 255))
        self.control.setGraphicsEffect(self.glow)
        self.glow.setEnabled(False)
        # Timer to start
        self.slider_timer = QTimer(self)
        self.slider_timer.setSingleShot(True)
        self.slider_timer.timeout.connect(self.on_slider_timer_timeout)
        # an icon and set focus
        QLabel(self.control).setPixmap(
            QIcon.fromTheme("audio-input-microphone").pixmap(32))
        self.control.setFocus()
        QVBoxLayout(group0).addWidget(self.control)
        self.menu = QMenu(__doc__)
        self.menu.addAction(__doc__).setDisabled(True)
        self.menu.setIcon(self.windowIcon())
        self.menu.addSeparator()
        self.menu.addAction(
            "Show / Hide", lambda: self.hide()
            if self.isVisible() else self.showNormal())
        self.menu.addAction("STOP !", lambda: call('killall rec', shell=True))
        self.menu.addSeparator()
        self.menu.addAction("Quit", lambda: exit())
        self.tray.setContextMenu(self.menu)
        self.make_trayicon()

    def run(self):
        """Run/Stop the QTimer."""
        if self.slider_timer.isActive():
            self.slider_timer.stop()
        self.glow.setEnabled(True)
        call('killall rec ; killall play', shell=True)
        self.slider_timer.start(3000)

    def on_slider_timer_timeout(self):
        """Run subprocess to deform voice."""
        self.glow.setEnabled(False)
        value = int(self.control.value()) * 100
        command = 'play -q -V0 "|rec -q -V0 -n -d -R riaa bend pitch {}"'.format(
            value)
        print("Voice Deformation Value: " + str(value))
        print("Voice Deformation Command: " + str(command))
        self.process.start(command)
        if self.isVisible():
            self.statusBar().showMessage("Minimizing to System TrayIcon", 3000)
            print("Minimizing Main Window to System TrayIcon now...")
            sleep(3)

    def center(self):
        """Center Window on the Current Screen,with Multi-Monitor support."""
        window_geometry = self.frameGeometry()
        mousepointer_position = QApplication.desktop().cursor().pos()
        screen = QApplication.desktop().screenNumber(mousepointer_position)
        centerPoint = QApplication.desktop().screenGeometry(screen).center()
        window_geometry.moveCenter(centerPoint)
        self.move(window_geometry.topLeft())

    def move_to_mouse_position(self):
        """Center the Window on the Current Mouse position."""
        window_geometry = self.frameGeometry()
        window_geometry.moveCenter(QApplication.desktop().cursor().pos())
        self.move(window_geometry.topLeft())

    def make_trayicon(self):
        """Make a Tray Icon."""
        if self.windowIcon() and __doc__:
            self.tray.setIcon(self.windowIcon())
            self.tray.setToolTip(__doc__)
            self.tray.activated.connect(
                lambda: self.hide() if self.isVisible() else self.showNormal())
            return self.tray.show()
Example #12
0
    def shadow(self):

        shadow = QGraphicsDropShadowEffect()
        shadow.setBlurRadius(self.shadowSize)
        shadow.setOffset(self.shadowOffset)
        self.text.setGraphicsEffect(shadow)
Example #13
0
class Interface(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self)
        self.setWindowIcon(QIcon(""))
        self.setWindowTitle("G-Calculator")
        self.setWindowFlags(Qt.WindowTitleHint | Qt.WindowCloseButtonHint
                            | Qt.WindowMinimizeButtonHint)
        self.setFixedSize(670, 650)
        self.setWindowFlags((Qt.FramelessWindowHint))
        self.setStyleSheet(
            "QMainWindow{\n"
            "background-color: qlineargradient(spread:pad, x1:0.063, y1:0.346591, x2:0.982955, y2:0.477, stop:0 rgba(220,20,60,1), stop:1 rgba(102,0,0,1));\n"
            "border-radius: 22px;"
            "}\n"
            "")
        self.initUi()

    def initUi(self):
        # Stilos
        #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#
        frame = ("QFrame{\n"
                 "color:#1b231f;\n"
                 "background-color: rgba(255,255,255,0.8);\n"
                 "border-radius: 22px;\n"
                 "}")
        frame_2 = ("QFrame{\n"
                   "color:#1b231f;\n"
                   "background-color: rgba(255,255,255,1);\n"
                   "border-radius: 10px;\n"
                   "}")
        frame_pantalla = ("QLineEdit{\n"
                          "color:white;\n"
                          "background-color: rgba(0,0,0,0.8);\n"
                          "border-radius: 10px;\n"
                          "}")

        label_titulo = ("QLabel{\n" "color:rgb(24, 24, 24);\n" "}")

        botonCierre = (
            "QPushButton{\n"
            "border:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 0, 0, 0), stop:1 rgba(255, 255, 255, 0));\n"
            "background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 0, 0, 0), stop:1 rgba(255, 255, 255, 0));\n"
            "color:rgb(255, 255, 255);\n"
            "}\n"
            "QPushButton:hover{\n"
            "background-color:rgb(255, 0, 0);\n"
            "color:rgb(255, 255, 255);\n"
            "}")

        botonStandar = (
            "QPushButton{\n"
            "border:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 0, 0, 0), stop:1 rgba(255, 255, 255, 0));\n"
            "background-color: rgba(255,255,255,1);\n"
            "border-radius: 10px;"
            "color:rgb(0, 0, 0);\n"
            "}\n"
            "QPushButton:hover{\n"
            "background-color:rgb(10, 0, 0);\n"
            "color:rgb(255, 255, 255);\n"
            "}")
        botonSpecial = (
            "QPushButton{\n"
            "border:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(0, 0, 0, 0), stop:1 rgba(255, 255, 255, 0));\n"
            "background-color: rgba(207, 0, 89);\n"
            "border-radius: 10px;"
            "color:rgb(0, 0, 0);\n"
            "}\n"
            "QPushButton:hover{\n"
            "background-color:rgb(71,13,191);\n"
            "color:rgb(255, 255, 255);\n"
            "}")
        #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#

        self.frame_principal = QFrame(self)
        self.frame_principal.setGeometry(QRect(30, 120, 610, 500))
        self.frame_principal.setStyleSheet(frame)
        self.frame_principal.move(30, 100)

        # Label y frame del encabezado
        self.frame_titulo = QFrame(self)
        self.frame_titulo.setGeometry(QRect(30, 30, 135, 50))
        self.frame_titulo.setStyleSheet(frame_2)
        self.frame_titulo.move(268, 20)
        self.sombra_2 = QGraphicsDropShadowEffect()
        self.sombra_2.setBlurRadius(23)
        self.frame_titulo.setGraphicsEffect(self.sombra_2)

        self.Label = QLabel(self)
        self.Label.setGeometry(QRect(30, 30, 121, 51))
        self.Label.setText("G-Calculator")
        self.Label.setStyleSheet(label_titulo)
        self.Label.setFont(QtGui.QFont("Lobster", 17, QtGui.QFont.Bold))
        self.Label.move(280, 20)
        self.sombra = QGraphicsDropShadowEffect()
        self.sombra.setBlurRadius(22)
        self.Label.setGraphicsEffect(self.sombra)

        self.botonCerrar = QPushButton(self)
        self.botonCerrar.setGeometry(QRect(30, 30, 40, 30))
        self.botonCerrar.setIcon(QIcon("icons/close.svg"))
        self.botonCerrar.move(590, 10)
        self.botonCerrar.setStyleSheet(botonCierre)

        self.botonMinimizar = QPushButton(self)
        self.botonMinimizar.setIcon(QIcon("icons/shuffle.svg"))
        self.botonMinimizar.setGeometry(QRect(30, 30, 30, 30))
        self.botonMinimizar.move(560, 10)
        self.botonMinimizar.setStyleSheet(botonCierre)

        self.acercaDe = QPushButton(self)
        self.acercaDe.setIcon(QIcon("icons/menu.svg"))
        self.acercaDe.setGeometry(QRect(30, 30, 30, 30))
        self.acercaDe.move(10, 10)
        self.acercaDe.setStyleSheet(botonCierre)

        # botones del contenido numérico#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#
        self.frame_pantalla = QtWidgets.QLineEdit(self.frame_principal)
        self.frame_pantalla.setGeometry(QRect(40, 40, 520, 120))
        self.frame_pantalla.setStyleSheet(frame_pantalla)
        self.frame_pantalla.move(45, 10)
        self.frame_pantalla.setFont(QtGui.QFont("Roboto", 50,
                                                QtGui.QFont.Bold))
        self.frame_pantalla.setReadOnly(True)
        self.frame_pantalla.setCursor(QtGui.QCursor(QtCore.Qt.IBeamCursor))
        self.frame_pantalla.setMaxLength(100)
        self.frame_pantalla.setAlignment(QtCore.Qt.AlignRight
                                         | QtCore.Qt.AlignTrailing
                                         | QtCore.Qt.AlignVCenter)
        self.sombra_3 = QGraphicsDropShadowEffect()
        self.sombra_3.setBlurRadius(22)
        self.frame_pantalla.setGraphicsEffect(self.sombra_3)

        self.boton_Nro1 = QPushButton(self.frame_principal)
        self.boton_Nro1.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro1.setStyleSheet(botonStandar)
        self.boton_Nro1.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro1.setText("1")
        self.boton_Nro1.move(45, 160)
        self.sombra_4 = QGraphicsDropShadowEffect()
        self.sombra_4.setBlurRadius(22)
        self.boton_Nro1.setGraphicsEffect(self.sombra_4)

        self.boton_Nro2 = QPushButton(self.frame_principal)
        self.boton_Nro2.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro2.setStyleSheet(botonStandar)
        self.boton_Nro2.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro2.setText("2")
        self.boton_Nro2.move(110, 160)
        self.sombra_5 = QGraphicsDropShadowEffect()
        self.sombra_5.setBlurRadius(22)
        self.boton_Nro2.setGraphicsEffect(self.sombra_5)

        self.boton_Nro3 = QPushButton(self.frame_principal)
        self.boton_Nro3.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro3.setStyleSheet(botonStandar)
        self.boton_Nro3.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro3.setText("3")
        self.boton_Nro3.move(175, 160)
        self.sombra_6 = QGraphicsDropShadowEffect()
        self.sombra_6.setBlurRadius(22)
        self.boton_Nro3.setGraphicsEffect(self.sombra_6)

        self.boton_Nro4 = QPushButton(self.frame_principal)
        self.boton_Nro4.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro4.setStyleSheet(botonStandar)
        self.boton_Nro4.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro4.setText("4")
        self.boton_Nro4.move(45, 230)
        self.sombra_7 = QGraphicsDropShadowEffect()
        self.sombra_7.setBlurRadius(22)
        self.boton_Nro4.setGraphicsEffect(self.sombra_7)

        self.boton_Nro5 = QPushButton(self.frame_principal)
        self.boton_Nro5.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro5.setStyleSheet(botonStandar)
        self.boton_Nro5.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro5.setText("5")
        self.boton_Nro5.move(110, 230)
        self.sombra_8 = QGraphicsDropShadowEffect()
        self.sombra_8.setBlurRadius(22)
        self.boton_Nro5.setGraphicsEffect(self.sombra_8)

        self.boton_Nro6 = QPushButton(self.frame_principal)
        self.boton_Nro6.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro6.setStyleSheet(botonStandar)
        self.boton_Nro6.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro6.setText("6")
        self.boton_Nro6.move(175, 230)
        self.sombra_9 = QGraphicsDropShadowEffect()
        self.sombra_9.setBlurRadius(22)
        self.boton_Nro6.setGraphicsEffect(self.sombra_9)

        self.boton_Nro7 = QPushButton(self.frame_principal)
        self.boton_Nro7.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro7.setStyleSheet(botonStandar)
        self.boton_Nro7.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro7.setText("7")
        self.boton_Nro7.move(45, 300)
        self.sombra_10 = QGraphicsDropShadowEffect()
        self.sombra_10.setBlurRadius(22)
        self.boton_Nro7.setGraphicsEffect(self.sombra_10)

        self.boton_Nro8 = QPushButton(self.frame_principal)
        self.boton_Nro8.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro8.setStyleSheet(botonStandar)
        self.boton_Nro8.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro8.setText("8")
        self.boton_Nro8.move(110, 300)
        self.sombra_11 = QGraphicsDropShadowEffect()
        self.sombra_11.setBlurRadius(22)
        self.boton_Nro8.setGraphicsEffect(self.sombra_11)

        self.boton_Nro9 = QPushButton(self.frame_principal)
        self.boton_Nro9.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro9.setStyleSheet(botonStandar)
        self.boton_Nro9.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro9.setText("9")
        self.boton_Nro9.move(175, 300)
        self.sombra_12 = QGraphicsDropShadowEffect()
        self.sombra_12.setBlurRadius(22)
        self.boton_Nro9.setGraphicsEffect(self.sombra_12)

        self.boton_Point = QPushButton(self.frame_principal)
        self.boton_Point.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Point.setStyleSheet(botonStandar)
        self.boton_Point.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Point.setText(".")
        self.boton_Point.move(45, 370)
        self.sombra_13 = QGraphicsDropShadowEffect()
        self.sombra_13.setBlurRadius(22)
        self.boton_Point.setGraphicsEffect(self.sombra_13)

        self.boton_Nro0 = QPushButton(self.frame_principal)
        self.boton_Nro0.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Nro0.setStyleSheet(botonStandar)
        self.boton_Nro0.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Nro0.setText("0")
        self.boton_Nro0.move(110, 370)
        self.sombra_14 = QGraphicsDropShadowEffect()
        self.sombra_14.setBlurRadius(22)
        self.boton_Nro0.setGraphicsEffect(self.sombra_14)

        self.boton_Equal = QPushButton(self.frame_principal)
        self.boton_Equal.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Equal.setStyleSheet(botonSpecial)
        self.boton_Equal.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Equal.setText("=")
        self.boton_Equal.move(175, 370)
        self.sombra_15 = QGraphicsDropShadowEffect()
        self.sombra_15.setBlurRadius(22)
        self.boton_Equal.setGraphicsEffect(self.sombra_15)

        self.boton_Clear = QPushButton(self.frame_principal)
        self.boton_Clear.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Clear.setStyleSheet(botonSpecial)
        self.boton_Clear.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Clear.setText("DEL")
        self.boton_Clear.move(250, 160)
        self.sombra_16 = QGraphicsDropShadowEffect()
        self.sombra_16.setBlurRadius(22)
        self.boton_Clear.setGraphicsEffect(self.sombra_16)

        self.boton_Clear2 = QPushButton(self.frame_principal)
        self.boton_Clear2.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Clear2.setStyleSheet(botonSpecial)
        self.boton_Clear2.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Clear2.setText("Clear")
        self.boton_Clear2.move(315, 160)
        self.sombra_17 = QGraphicsDropShadowEffect()
        self.sombra_17.setBlurRadius(22)
        self.boton_Clear2.setGraphicsEffect(self.sombra_17)

        self.boton_suma = QPushButton(self.frame_principal)
        self.boton_suma.setGeometry(QRect(40, 40, 50, 50))
        self.boton_suma.setStyleSheet(botonStandar)
        self.boton_suma.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_suma.setText("+")
        self.boton_suma.move(250, 230)
        self.sombra_19 = QGraphicsDropShadowEffect()
        self.sombra_19.setBlurRadius(22)
        self.boton_suma.setGraphicsEffect(self.sombra_19)

        self.boton_Resta = QPushButton(self.frame_principal)
        self.boton_Resta.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Resta.setStyleSheet(botonStandar)
        self.boton_Resta.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Resta.setText("-")
        self.boton_Resta.move(315, 230)
        self.sombra_20 = QGraphicsDropShadowEffect()
        self.sombra_20.setBlurRadius(22)
        self.boton_Resta.setGraphicsEffect(self.sombra_20)

        self.boton_Divide = QPushButton(self.frame_principal)
        self.boton_Divide.setGeometry(QRect(40, 40, 50, 50))
        self.boton_Divide.setStyleSheet(botonStandar)
        self.boton_Divide.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_Divide.setText("/")
        self.boton_Divide.move(250, 300)
        self.sombra_21 = QGraphicsDropShadowEffect()
        self.sombra_21.setBlurRadius(22)
        self.boton_Divide.setGraphicsEffect(self.sombra_21)

        self.boton_X = QPushButton(self.frame_principal)
        self.boton_X.setGeometry(QRect(40, 40, 50, 50))
        self.boton_X.setStyleSheet(botonStandar)
        self.boton_X.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_X.setText("X")
        self.boton_X.move(315, 300)
        self.sombra_18 = QGraphicsDropShadowEffect()
        self.sombra_18.setBlurRadius(22)
        self.boton_X.setGraphicsEffect(self.sombra_18)

        self.boton_parent = QPushButton(self.frame_principal)
        self.boton_parent.setGeometry(QRect(40, 40, 50, 50))
        self.boton_parent.setStyleSheet(botonStandar)
        self.boton_parent.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.boton_parent.setText("(")
        self.boton_parent.move(250, 370)
        self.sombra_19 = QGraphicsDropShadowEffect()
        self.sombra_19.setBlurRadius(22)
        self.boton_parent.setGraphicsEffect(self.sombra_19)

        self.boton_parent2 = QPushButton(self.frame_principal)
        self.boton_parent2.setGeometry(QRect(40, 40, 50, 50))
        self.boton_parent2.setStyleSheet(botonStandar)
        self.boton_parent2.setFont(QtGui.QFont("Lobster", 14,
                                               QtGui.QFont.Bold))
        self.boton_parent2.setText(")")
        self.boton_parent2.move(315, 370)
        self.sombra_20 = QGraphicsDropShadowEffect()
        self.sombra_20.setBlurRadius(22)
        self.boton_parent2.setGraphicsEffect(self.sombra_20)

        self.seno = QPushButton(self.frame_principal)
        self.seno.setGeometry(QRect(40, 40, 50, 50))
        self.seno.setStyleSheet(botonStandar)
        self.seno.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.seno.setText("Sen")
        self.seno.move(390, 160)
        self.sombra_21 = QGraphicsDropShadowEffect()
        self.sombra_21.setBlurRadius(22)
        self.seno.setGraphicsEffect(self.sombra_21)

        self.coseno = QPushButton(self.frame_principal)
        self.coseno.setGeometry(QRect(40, 40, 50, 50))
        self.coseno.setStyleSheet(botonStandar)
        self.coseno.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.coseno.setText("Cos")
        self.coseno.move(450, 160)
        self.sombra_22 = QGraphicsDropShadowEffect()
        self.sombra_22.setBlurRadius(22)
        self.coseno.setGraphicsEffect(self.sombra_22)

        self.tangente = QPushButton(self.frame_principal)
        self.tangente.setGeometry(QRect(40, 40, 50, 50))
        self.tangente.setStyleSheet(botonStandar)
        self.tangente.setFont(QtGui.QFont("Lobster", 14, QtGui.QFont.Bold))
        self.tangente.setText("Tan")
        self.tangente.move(510, 160)
        self.sombra_23 = QGraphicsDropShadowEffect()
        self.sombra_23.setBlurRadius(22)
        self.tangente.setGraphicsEffect(self.sombra_23)

        self.arcsen = QPushButton(self.frame_principal)
        self.arcsen.setGeometry(QRect(40, 40, 50, 50))
        self.arcsen.setStyleSheet(botonStandar)
        self.arcsen.setFont(QtGui.QFont("Lobster", 12, QtGui.QFont.Bold))
        self.arcsen.setText("ArcSen")
        self.arcsen.move(390, 220)
        self.sombra_24 = QGraphicsDropShadowEffect()
        self.sombra_24.setBlurRadius(22)
        self.arcsen.setGraphicsEffect(self.sombra_24)

        self.arccos = QPushButton(self.frame_principal)
        self.arccos.setGeometry(QRect(40, 40, 50, 50))
        self.arccos.setStyleSheet(botonStandar)
        self.arccos.setFont(QtGui.QFont("Lobster", 12, QtGui.QFont.Bold))
        self.arccos.setText("ArcCos")
        self.arccos.move(450, 220)
        self.sombra_25 = QGraphicsDropShadowEffect()
        self.sombra_25.setBlurRadius(22)
        self.arccos.setGraphicsEffect(self.sombra_25)

        self.arctang = QPushButton(self.frame_principal)
        self.arctang.setGeometry(QRect(40, 40, 50, 50))
        self.arctang.setStyleSheet(botonStandar)
        self.arctang.setFont(QtGui.QFont("Lobster", 12, QtGui.QFont.Bold))
        self.arctang.setText("ArcTan")
        self.arctang.move(510, 220)
        self.sombra_26 = QGraphicsDropShadowEffect()
        self.sombra_26.setBlurRadius(22)
        self.arctang.setGraphicsEffect(self.sombra_26)

        self.raiz = QPushButton(self.frame_principal)
        self.raiz.setGeometry(QRect(40, 40, 50, 50))
        self.raiz.setStyleSheet(botonStandar)
        self.raiz.setText("ELpepe")
        self.raiz.move(390, 280)
        self.sombra_27 = QGraphicsDropShadowEffect()
        self.sombra_27.setBlurRadius(22)
        self.raiz.setGraphicsEffect(self.sombra_27)

        #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#

        #=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#
        # Eventos
        self.botonCerrar.clicked.connect(self.closeButton)
        self.botonMinimizar.clicked.connect(self.minimize)

        #Pad de Botones

        self.boton_Nro1.clicked.connect(
            lambda: self.frame_pantalla.insert('1'))
        self.boton_Nro2.clicked.connect(
            lambda: self.frame_pantalla.insert('2'))
        self.boton_Nro3.clicked.connect(
            lambda: self.frame_pantalla.insert('3'))
        self.boton_Nro4.clicked.connect(
            lambda: self.frame_pantalla.insert('4'))
        self.boton_Nro5.clicked.connect(
            lambda: self.frame_pantalla.insert('5'))
        self.boton_Nro6.clicked.connect(
            lambda: self.frame_pantalla.insert('6'))
        self.boton_Nro7.clicked.connect(
            lambda: self.frame_pantalla.insert('7'))
        self.boton_Nro8.clicked.connect(
            lambda: self.frame_pantalla.insert('8'))
        self.boton_Nro9.clicked.connect(
            lambda: self.frame_pantalla.insert('9'))
        self.boton_Nro0.clicked.connect(
            lambda: self.frame_pantalla.insert('0'))

        self.boton_Point.clicked.connect(
            lambda: self.frame_pantalla.insert('.'))
        self.boton_Equal.clicked.connect(lambda: self.evaluacion())
        self.boton_Clear.clicked.connect(
            lambda: self.frame_pantalla.backspace())
        self.boton_Clear2.clicked.connect(lambda: self.frame_pantalla.clear())

        self.boton_suma.clicked.connect(
            lambda: self.frame_pantalla.insert('+'))
        self.boton_Resta.clicked.connect(
            lambda: self.frame_pantalla.insert('-'))
        self.boton_Divide.clicked.connect(
            lambda: self.frame_pantalla.insert('/'))
        self.boton_X.clicked.connect(lambda: self.frame_pantalla.insert('*'))
        self.boton_parent.clicked.connect(
            lambda: self.frame_pantalla.insert('('))
        self.boton_parent2.clicked.connect(
            lambda: self.frame_pantalla.insert(')'))

        self.seno.clicked.connect(lambda: self.frame_pantalla.insert('sin('))
        self.coseno.clicked.connect(lambda: self.frame_pantalla.insert('cos('))
        self.tangente.clicked.connect(
            lambda: self.frame_pantalla.insert('tan('))
        self.arcsen.clicked.connect(
            lambda: self.frame_pantalla.insert('asin('))
        self.arccos.clicked.connect(
            lambda: self.frame_pantalla.insert('acos('))
        self.arctang.clicked.connect(
            lambda: self.frame_pantalla.insert('atan('))
        self.raiz.clicked.connect(lambda: self.frame_pantalla.insert('ELpepe'))

    # Lógica#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#=#
    def evaluacion(self):
        try:
            pantalla = self.frame_pantalla.text()
            self.resultado = eval(pantalla)

            self.frame_pantalla.setText(str(self.resultado))
        except:
            self.frame_pantalla.setText('SINTAXIS ERROR')

    def closeButton(self):

        exit = QMessageBox(self)
        exit.setWindowTitle("¿Salir de VESOR?")
        exit.setIcon(QMessageBox.Question)
        exit.setText("¿Estás seguro que desea cerrar esta ventana?")
        buttonExit = exit.addButton("Salir", QMessageBox.YesRole)
        botonCancelar = exit.addButton("Cancelar", QMessageBox.NoRole)

        exit.exec_()

        if exit.clickedButton() == buttonExit:
            self.destroy()
        else:
            pass

    def minimize(self, event):
        self.setWindowState(Qt.WindowMinimized)

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.dragPosition = event.globalPos() - self.frameGeometry(
            ).topLeft()
            event.accept()

    def mouseMoveEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.move(event.globalPos() - self.dragPosition)
            event.accept()
Example #14
0
class main(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self)
        self.setWindowTitle("Main Ui")
        self.setFixedSize(800, 600)
        self.setStyleSheet(estiloFondo)

        self.initUi()

    def initUi(self):

        globalFont = (QtGui.QFont("Roboto", 16, QtGui.QFont.Bold))
        titulofont = (QtGui.QFont("Roboto", 20, QtGui.QFont.Bold))
        font_line = (QtGui.QFont("Roboto", 12, QtGui.QFont.Bold))
        fontCondiciones = (QtGui.QFont("Roboto", 11, QtGui.QFont.Bold))

        self.frameizquierda = QFrame(self)
        self.frameizquierda.setStyleSheet(estiloFrame)
        self.frameizquierda.setGeometry(QRect(0, 0, 400, 600))
        self.sombra = QGraphicsDropShadowEffect()
        self.sombra.setBlurRadius(100)
        self.frameizquierda.setGraphicsEffect(self.sombra)

        self.encabezado = QLabel(self)
        self.encabezado.setStyleSheet(estiloTitulo)
        self.encabezado.setGeometry(QRect(460, 50, 200, 100))
        self.encabezado.setText("REGISTRO")
        self.encabezado.setFont(titulofont)
        self.encabezado.setAlignment(QtCore.Qt.AlignRight
                                     | QtCore.Qt.AlignVCenter)

        self.boton1 = QPushButton(self)
        self.boton1.setStyleSheet(estiloR)
        self.boton1.setGeometry(QRect(650, 10, 70, 30))
        self.boton1.setFont(fontCondiciones)
        self.boton1.setText("registro")
        self.sombra3 = QGraphicsDropShadowEffect()
        self.sombra3.setBlurRadius(100)
        self.boton1.setGraphicsEffect(self.sombra3)

        self.boton2 = QPushButton(self)
        self.boton2.setStyleSheet(estiloD)
        self.boton2.setGeometry(QRect(720, 10, 70, 30))
        self.boton2.setFont(fontCondiciones)
        self.boton2.setText("inicio")
        self.sombra4 = QGraphicsDropShadowEffect()
        self.sombra4.setBlurRadius(100)
        self.boton2.setGraphicsEffect(self.sombra4)

        self.nombre = QLabel(self)
        self.nombre.setStyleSheet(estiloNombre)
        self.nombre.setGeometry(QRect(450, 100, 100, 100))
        self.nombre.setText("NOMBRE")
        self.nombre.setFont(globalFont)
        self.nombre.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)

        self.nombre_edit = QLineEdit(self)
        self.nombre_edit.setStyleSheet(estiloLine)
        self.nombre_edit.setFont(font_line)
        self.nombre_edit.setGeometry(QRect(460, 165, 100, 30))
        self.nombre_edit.setPlaceholderText("Nombre")

        self.apellido = QLabel(self)
        self.apellido.setStyleSheet(estiloNombre)
        self.apellido.setGeometry(QRect(625, 100, 100, 100))
        self.apellido.setText("APELLIDO")
        self.apellido.setFont(globalFont)
        self.apellido.setAlignment(QtCore.Qt.AlignRight
                                   | QtCore.Qt.AlignVCenter)

        self.apellido_edit = QLineEdit(self)
        self.apellido_edit.setStyleSheet(estiloLine)
        self.apellido_edit.setFont(font_line)
        self.apellido_edit.setGeometry(QRect(630, 165, 100, 30))
        self.apellido_edit.setPlaceholderText("Apellido")

        self.contrasena = QLabel(self)
        self.contrasena.setStyleSheet(estiloNombre)
        self.contrasena.setFont(globalFont)
        self.contrasena.setGeometry(QRect(450, 200, 150, 100))
        self.contrasena.setText("CONTRASEÑA")
        self.contrasena.setAlignment(QtCore.Qt.AlignRight
                                     | QtCore.Qt.AlignVCenter)

        self.contrasena_edit = QLineEdit(self)
        self.contrasena_edit.setStyleSheet(estiloLine)
        self.contrasena_edit.setFont(font_line)
        self.contrasena_edit.setGeometry(QRect(460, 265, 300, 30))
        self.contrasena_edit.setPlaceholderText("Contraseña")

        self.email = QLabel(self)
        self.email.setStyleSheet(estiloNombre)
        self.email.setFont(globalFont)
        self.email.setGeometry(QRect(465, 300, 100, 100))
        self.email.setText("Email")

        self.email_edit = QLineEdit(self)
        self.email_edit.setStyleSheet(estiloLine)
        self.email_edit.setFont(font_line)
        self.email_edit.setGeometry(QRect(465, 365, 300, 30))
        self.email_edit.setPlaceholderText("*****@*****.**")

        self.chequer = QCheckBox(self)
        self.chequer.setGeometry(QRect(465, 400, 20, 30))
        self.chequer.setStyleSheet(estiloCheck)

        self.condiciones = QLabel(self)
        self.condiciones.setStyleSheet(estilo_condiciones)
        self.condiciones.setFont(fontCondiciones)
        self.condiciones.setText("Aceptar términos y condiciones")
        self.condiciones.setGeometry(QRect(490, 365, 250, 100))

        self.btn_registro = QPushButton(self)
        self.btn_registro.setStyleSheet(estiloBoton)
        self.btn_registro.setGeometry(QRect(460, 450, 300, 50))
        self.btn_registro.setFont(globalFont)
        self.btn_registro.setText("Registrarse")
        self.sombra2 = QGraphicsDropShadowEffect()
        self.sombra2.setBlurRadius(100)
        self.btn_registro.setGraphicsEffect(self.sombra2)

        self.copyrigth = QLabel(self)
        self.copyrigth.setStyleSheet(estilo_condiciones)
        self.copyrigth.setFont(fontCondiciones)
        self.copyrigth.setText("by Cristian Cala ❤️")
        self.copyrigth.setGeometry(QRect(660, 530, 150, 100))
Example #15
0
 def setShadow(self, rgb: tuple, r: int, offset=(0, 0)):
     effect_shadow = QGraphicsDropShadowEffect(self)
     effect_shadow.setOffset(*offset)  # 偏移
     effect_shadow.setBlurRadius(r)  # 阴影半径
     effect_shadow.setColor(QColor(*rgb))  # 阴影颜色
     return effect_shadow
Example #16
0
class SubPropertyPanel(QWidget):
    """ 子属性面板 """
    def __init__(self, songInfo: dict, parent=None):
        super().__init__(parent)

        self.songInfo = songInfo
        self.pen = QPen(QColor(0, 153, 188))

        # 实例化小部件
        self.createWidgets()
        # 初始化小部件的位置
        self.initWidget()
        self.setShadowEffect()
        # 设置层叠样式
        self.setQss()

    def createWidgets(self):
        """ 实例化标签 """
        # 标题
        self.yearLabel = QLabel("年", self)
        self.diskLabel = QLabel("光盘", self)
        self.tconLabel = QLabel("类型", self)
        self.durationLabel = QLabel("时长", self)
        self.propertyLabel = QLabel("属性", self)
        self.songerLabel = QLabel("歌曲歌手", self)
        self.songNameLabel = QLabel("歌曲名", self)
        self.trackNumberLabel = QLabel("曲目", self)
        self.songPathLabel = QLabel("文件位置", self)
        self.albumNameLabel = QLabel("专辑标题", self)
        self.albumSongerLabel = QLabel("专辑歌手", self)
        # 内容
        self.disk = QLabel("1", self)
        self.year = QLabel(self.songInfo["year"], self)
        self.tcon = QLabel(self.songInfo["tcon"], self)
        self.songer = QLabel(self.songInfo["songer"], self)
        self.albumName = QLabel(self.songInfo["album"], self)
        self.duration = QLabel(self.songInfo["duration"], self)
        self.songName = QLabel(self.songInfo["songName"], self)
        self.albumSonger = QLabel(self.songInfo["songer"], self)
        self.songPath = QLabel(self.songInfo["songPath"], self)
        self.trackNumber = QLabel(self.songInfo["tracknumber"], self)
        # 实例化关闭按钮
        self.closeButton = PerspectivePushButton("关闭", self)
        # 创建小部件列表
        self.label_list_1 = [
            self.albumName,
            self.songName,
            self.songPath,
            self.songer,
            self.albumSonger,
        ]
        self.label_list_2 = [
            self.trackNumberLabel,
            self.trackNumber,
            self.diskLabel,
            self.disk,
            self.albumNameLabel,
            self.albumName,
            self.albumSongerLabel,
            self.albumSonger,
            self.tconLabel,
            self.tcon,
            self.durationLabel,
            self.duration,
            self.yearLabel,
            self.year,
            self.songPathLabel,
            self.songPath,
            self.closeButton,
        ]
        self.label_list_3 = [
            self.disk,
            self.year,
            self.tcon,
            self.songer,
            self.albumName,
            self.duration,
            self.songName,
            self.albumSonger,
            self.songPath,
            self.trackNumber,
        ]

    def initWidget(self):
        """ 初始化小部件的属性 """
        self.resize(942, 590)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_StyledBackground)
        # 初始化抬头的位置
        self.tconLabel.move(28, 330)
        self.diskLabel.move(584, 168)
        self.yearLabel.move(652, 330)
        self.songerLabel.move(584, 90)
        self.propertyLabel.move(28, 27)
        self.songNameLabel.move(28, 90)
        self.songPathLabel.move(28, 408)
        self.albumNameLabel.move(28, 252)
        self.durationLabel.move(584, 330)
        self.trackNumberLabel.move(28, 168)
        self.albumSongerLabel.move(584, 252)
        # 初始化内容的位置
        self.tcon.move(28, 362)
        self.year.move(652, 362)
        self.disk.move(584, 202)
        self.songer.move(584, 122)
        self.songName.move(28, 122)
        self.songPath.move(28, 442)
        self.albumName.move(28, 282)
        self.duration.move(584, 362)
        self.trackNumber.move(28, 202)
        self.albumSonger.move(584, 282)
        self.closeButton.move(732, 535)
        # 设置按钮的大小
        self.closeButton.setFixedSize(170, 40)
        # 将关闭信号连接到槽函数
        if not self.parent():
            self.closeButton.clicked.connect(self.deleteLater)
        # 设置宽度
        for label in self.label_list_1:
            if label in [self.songer, self.albumSonger]:
                label.setFixedWidth(291)
            elif label in [self.albumName, self.songName]:
                label.setFixedWidth(500)
            elif label == self.songPath:
                label.setFixedWidth(847)
        # 调整高度
        self.adjustHeight()
        # 允许鼠标选中
        for label in self.label_list_3:
            label.setTextInteractionFlags(Qt.TextSelectableByMouse)
        # 分配ID
        self.year.setObjectName("songer")
        self.songer.setObjectName("songer")
        self.duration.setObjectName("songer")
        self.songPath.setObjectName("songPath")
        self.albumSonger.setObjectName("songer")
        self.propertyLabel.setObjectName("propertyLabel")

    def adjustHeight(self):
        """ 如果有换行的发生就调整高度 """
        newSongName, isSongNameWrap = autoWrap(self.songName.text(), 57)
        newSonger, isSongerWrap = autoWrap(self.songer.text(), 33)
        newAlbumName, isAlbumNameWrap = autoWrap(self.albumName.text(), 57)
        newAlbumSonger, isAlbumSongerWrap = autoWrap(self.albumSonger.text(),
                                                     33)
        newSongPath, isSongPathWrap = autoWrap(self.songPath.text(), 100)
        if isSongNameWrap or isSongerWrap:
            self.songName.setText(newSongName)
            self.songer.setText(newSonger)
            # 后面的所有标签向下平移25px
            for label in self.label_list_2:
                label.move(label.geometry().x(), label.geometry().y() + 25)
            self.resize(self.width(), self.height() + 25)
        if isAlbumNameWrap or isAlbumSongerWrap:
            self.albumName.setText(newAlbumName)
            self.albumSonger.setText(newAlbumSonger)
            # 后面的所有标签向下平移25px
            for label in self.label_list_2[8:]:
                label.move(label.geometry().x(), label.geometry().y() + 25)
            self.resize(self.width(), self.height() + 25)
        if isSongPathWrap:
            self.songPath.setText(newSongPath)
            self.resize(self.width(), self.height() + 25)

    def setQss(self):
        """ 设置层叠样式表 """
        with open("app\\resource\\css\\propertyPanel.qss",
                  "r",
                  encoding="utf-8") as f:
            qss = f.read()
            self.setStyleSheet(qss)

    def paintEvent(self, event):
        """ 绘制边框 """
        painter = QPainter(self)
        # 绘制边框
        painter.setPen(self.pen)
        painter.drawRect(0, 0, self.width() - 1, self.height() - 1)

    def setShadowEffect(self):
        """ 添加阴影效果 """
        self.shadowEffect = QGraphicsDropShadowEffect(self)
        self.shadowEffect.setBlurRadius(50)
        self.shadowEffect.setOffset(0, 5)
        self.setGraphicsEffect(self.shadowEffect)
Example #17
0
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.i = 0
        self.i1 = 0
        self.initUI()

    def initUI(self):

        self.scroll = QScrollArea(
            self
        )  # Scroll Area which contains the widgets, set as the centralWidget
        self.widget1 = QWidget(self)
        self.widget1.setStyleSheet('background-color:#FAF6F5;')
        self.widget1.resize(1024, 1800)
        # self.widget2=QWidget(self)
        # self.widget2.setStyleSheet('background-color:black;')
        # self.widget2.resize(1024,800)
        # self.widget2.move(0,500)
        self.setGeometry(100, 100, 1024, 768)
        #self.vbox = QVBoxLayout()
        #self.widget1.setLayout(self.vbox)                # Widget that contains the collection of Vertical Box
        self.epf = QLabel("", self.widget1)
        effect = QGraphicsDropShadowEffect(self.epf)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf.setGraphicsEffect(effect)
        self.epf.setStyleSheet((
            "QLabel{background-color:white; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf.setGeometry(4, 3, 1000, 60)

        self.epf1 = QLabel("", self.widget1)
        #self.epf.setFont(QFont('Arial', 18))
        effect = QGraphicsDropShadowEffect(self.epf1)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf1.setGraphicsEffect(effect)
        self.epf1.setStyleSheet((
            "QLabel{background-color:#FCFCFE; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf1.setGeometry(20, 93, 970, 1680)
        source_label = QLabel("Face Swap Using Hard Drive Videos",
                              self.widget1)
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(250, 113, 600, 35)

        qq = u'\u2190'
        bb = QPushButton(qq + ' Back', self.widget1)
        bb.setGeometry(20, 3, 85, 58)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(18)
        bb.setFont(font)
        bb.setStyleSheet((
            "QPushButton{background-color:white; color: black;border-style: ridge;border-width:0px;border-radius: 0px;border-color: white;}"
        ))
        #bb.clicked.connect(self.bb_onClick)
        self.epf = QLabel("", self.widget1)
        #self.epf.setFont(QFont('Arial', 18))
        effect = QGraphicsDropShadowEffect(self.epf)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf.setGraphicsEffect(effect)
        self.epf.setStyleSheet((
            "QLabel{background-color:white; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf.setGeometry(50, 163, 900, 420)
        source_label = QLabel("Add Source Videos", self.widget1)
        source_label.setStyleSheet('background-color:white;')
        source_label.setFont(QFont('Arial', 21))
        source_label.setGeometry(100, 175, 600, 30)
        self.add_svideo = QPushButton('+', self.widget1)
        self.add_svideo.setGeometry(850, 213, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(18)
        self.add_svideo.setFont(font)
        self.add_svideo.setStyleSheet((
            "QPushButton{background-color:red; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.add_svideo.clicked.connect(self.add_svideo_onClick)

        self.del_svideo = QPushButton('-', self.widget1)
        self.del_svideo.setGeometry(800, 213, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(28)
        self.del_svideo.setFont(font)
        self.del_svideo.setStyleSheet((
            "QPushButton{background-color:blue; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.del_svideo.clicked.connect(self.del_svideo_onClick)

        self.dataView = QTreeWidget(self.widget1)
        self.dataView.setRootIsDecorated(False)
        self.dataView.setHeaderLabels(['Ref No', 'Source Videos'])
        self.dataView.header().setStyleSheet(
            'padding-top:-2px;background-color:white;font-size:21pt; font-family: Arial;border-width:1px;border-style:outset;border-color:black; '
        )
        self.dataView.setColumnCount(2)
        self.dataView.setColumnWidth(0, 100)
        self.dataView.setColumnWidth(1, 100)

        self.dataView.setStyleSheet('background-color:white;color: black;')
        self.dataView.setFont(QFont('Times New Roman', 22))

        self.dataView.setGeometry(100, 260, 800, 265)
        #self.dataView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)

        QScroller.grabGesture(self.dataView.viewport(), QScroller.TouchGesture)
        #self.dataView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
        #self.dataView.itemClicked.connect(self.onItemClicked)

        self.epf = QLabel("", self.widget1)
        #self.epf.setFont(QFont('Arial', 18))
        effect = QGraphicsDropShadowEffect(self.epf)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf.setGraphicsEffect(effect)
        self.epf.setStyleSheet((
            "QLabel{background-color:white; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf.setGeometry(50, 603, 900, 420)
        source_label = QLabel("Add Destination Videos", self.widget1)
        source_label.setStyleSheet('background-color:white;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(100, 613, 600, 30)
        self.add_dvideo = QPushButton('+', self.widget1)
        self.add_dvideo.setGeometry(850, 653, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(18)
        self.add_dvideo.setFont(font)
        self.add_dvideo.setStyleSheet((
            "QPushButton{background-color:red; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.add_dvideo.clicked.connect(self.add_dvideo_onClick)

        self.del_dvideo = QPushButton('-', self.widget1)
        self.del_dvideo.setGeometry(800, 653, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(28)
        self.del_dvideo.setFont(font)
        self.del_dvideo.setStyleSheet((
            "QPushButton{background-color:blue; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.del_dvideo.clicked.connect(self.del_dvideo_onClick)

        self.dataView1 = QTreeWidget(self.widget1)
        self.dataView1.setRootIsDecorated(False)
        self.dataView1.setHeaderLabels(['Ref No', 'Destination Videos'])
        self.dataView1.header().setStyleSheet(
            'padding-top:-2px;background-color:white;font-size:21pt; font-family: Arial;border-width:1px;border-style:outset;border-color:black; '
        )
        self.dataView1.setColumnCount(2)
        self.dataView1.setColumnWidth(0, 100)
        self.dataView1.setColumnWidth(1, 100)

        self.dataView1.setStyleSheet('background-color:white;color: black;')
        self.dataView1.setFont(QFont('Times New Roman', 22))

        self.dataView1.setGeometry(100, 700, 800, 265)

        source_label = QLabel("Picture of Person In Source Video",
                              self.widget1)
        source_label.setFont(QFont('Arial', 22))
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setGeometry(100, 1113, 600, 30)
        self.lineEdit3 = QLineEdit(self.widget1)
        self.lineEdit3.setEnabled(False)
        self.lineEdit3.setFont(QFont('Arial', 11))
        self.lineEdit3.setGeometry(100, 1160, 650, 40)
        self.lineEdit3.setStyleSheet("background-color:white;color:black;")
        self.lineEdit3.setObjectName("lineEdit3")

        self.srcvideo_b = QPushButton('Select File', self.widget1)
        self.srcvideo_b.setGeometry(790, 1155, 120, 50)
        effect = QGraphicsDropShadowEffect(self.srcvideo_b)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.srcvideo_b.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.srcvideo_b.setFont(font)
        self.srcvideo_b.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.srcvideo_b.clicked.connect(self.srcvideo_b_onClick)

        source_label = QLabel("Picture of Person In Destination Video",
                              self.widget1)
        source_label.setFont(QFont('Arial', 22))
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setGeometry(100, 1213, 600, 30)
        self.lineEdit4 = QLineEdit(self.widget1)
        self.lineEdit4.setEnabled(False)
        self.lineEdit4.setFont(QFont('Arial', 11))
        self.lineEdit4.setGeometry(100, 1260, 650, 40)
        self.lineEdit4.setStyleSheet("background-color:white;color:black;")
        self.lineEdit4.setObjectName("lineEdit4")

        self.dstvideo_b = QPushButton('Select File', self.widget1)
        self.dstvideo_b.setGeometry(790, 1255, 120, 50)
        effect = QGraphicsDropShadowEffect(self.dstvideo_b)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.dstvideo_b.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.dstvideo_b.setFont(font)
        self.dstvideo_b.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.dstvideo_b.clicked.connect(self.dstvideo_b_onClick)

        source_label = QLabel("Output Video in which face is to be replaced",
                              self.widget1)
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(100, 1313, 600, 30)
        self.lineEdit5 = QLineEdit(self.widget1)
        self.lineEdit5.setEnabled(False)
        self.lineEdit5.setFont(QFont('Arial', 11))
        self.lineEdit5.setGeometry(100, 1360, 650, 40)
        self.lineEdit5.setStyleSheet("background-color:white;color:black;")
        self.lineEdit5.setObjectName("lineEdit5")

        self.output_v = QPushButton('Select File', self.widget1)
        self.output_v.setGeometry(790, 1355, 120, 50)
        effect = QGraphicsDropShadowEffect(self.output_v)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.output_v.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.output_v.setFont(font)
        self.output_v.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.output_v.clicked.connect(self.output_v_onClick)

        source_label = QLabel("Output Directory", self.widget1)
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(100, 1413, 600, 30)
        self.lineEdit6 = QLineEdit(self.widget1)
        self.lineEdit6.setEnabled(False)
        self.lineEdit6.setFont(QFont('Arial', 11))
        self.lineEdit6.setGeometry(100, 1460, 650, 40)
        self.lineEdit6.setStyleSheet("background-color:white;color:black;")
        self.lineEdit6.setObjectName("lineEdit6")

        self.output_d = QPushButton('Select Folder', self.widget1)
        self.output_d.setGeometry(790, 1455, 120, 50)
        effect = QGraphicsDropShadowEffect(self.output_d)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.output_d.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.output_d.setFont(font)
        self.output_d.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.output_d.clicked.connect(self.output_d_onClick)

        self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
        self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        #self.scroll.setWidgetResizable(True)
        self.scroll.setWidget(self.widget1)
        #self.scroll.setWidget(self.widget2)
        # self.scroll.setGeometry(0,0,1024,768)

        self.buttonWindow4 = QPushButton('Start', self.widget1)
        self.buttonWindow4.setGeometry(440, 1570, 215, 85)
        self.effect = QGraphicsDropShadowEffect(self.buttonWindow4)
        self.effect.setOffset(0, 0)
        self.effect.setBlurRadius(20)
        self.buttonWindow4.setGraphicsEffect(self.effect)
        self.font = QFont()
        self.font.setFamily("Arial")
        self.font.setBold(True)
        self.font.setWeight(50)
        self.font.setPointSize(18)
        self.buttonWindow4.setFont(self.font)
        self.buttonWindow4.setStyleSheet((
            "QPushButton{background-color:#3C81F8; color: black;border-style: ridge;border-width:1px;border-radius: 10px;border-color: black;}"
        ))

        self.buttonWindow4.clicked.connect(self.start)

        self.setCentralWidget(self.scroll)
        self.setWindowTitle('Face Swap')

        self.dataView.itemClicked.connect(self.onItemClicked)
        self.dataView1.itemClicked.connect(self.onItemClicked1)
        self.show()

    def onItemClicked(self):
        #global getChildNode
        getSelected = self.dataView.selectedItems()
        #if getSelected:
        baseNode = getSelected[0]
        self.getChildNode = baseNode.text(1)
        print(self.getChildNode)

    def add_svideo_onClick(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        self.fileNamesrc, _ = QFileDialog.getOpenFileName(
            self,
            "QFileDialog.getOpenFileName()",
            "",
            "MP4 File (*.mp4)",
            options=options)
        #self.lineEdit5.setText('{}'.format(str(self.fileName3)))
        t = youtube.srcvideo_list
        t.append('{}'.format(str(self.fileNamesrc)))
        print(t, youtube.srcvideo_list)
        QTreeWidgetItem(self.dataView, [str(self.i), t[self.i]])
        self.i = self.i + 1
        #for i,x in enumerate(t):
        #print(i,x)
        #QTreeWidgetItem(self.dataView,[str(i),x])
    def del_svideo_onClick(self):
        #for i in reversed(range(self.dataView.childCount())):
        #self.dataView.removeChild(self.dataView.child(i))
        #keydata=self.getChildNode
        #QTreeWidgetItem.removeRow(int(keydata))
        try:
            #if len(self.getChildNode)==0:
            #raise ValueError
            #self.close()
            #self.destroy()
            #gc.collect()
            #info.info1=getChildNode
            #self.e.show()
            keydata = self.getChildNode
            print(keydata)
            t = youtube.srcvideo_list
            print(t)
            t.remove(keydata)
            self.i = self.i - 1
            #t.append(self.lineEdit1.text())
            #print(t)
            self.dataView.clear()
            for i, x in enumerate(t):
                #print(i,x)
                QTreeWidgetItem(self.dataView, [str(i), x])
            # #self.getChildNode=''
        except:
            print("error")
            #self.popup1=popup1(name='      Please select any user to edit!',name2='Okay!')
            #self.popup1.show()
    def onItemClicked1(self):
        #global getChildNode
        getSelected = self.dataView1.selectedItems()
        #if getSelected:
        baseNode = getSelected[0]
        self.getChildNode1 = baseNode.text(1)
        print(self.getChildNode1)

    def add_dvideo_onClick(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        self.fileNamedst, _ = QFileDialog.getOpenFileName(
            self,
            "QFileDialog.getOpenFileName()",
            "",
            "MP4 File (*.mp4)",
            options=options)
        t = youtube.dstvideo_list
        t.append('{}'.format(str(self.fileNamedst)))
        print(t, youtube.dstvideo_list)
        QTreeWidgetItem(self.dataView1, [str(self.i1), t[self.i1]])
        self.i1 = self.i1 + 1
        #for i,x in enumerate(t):
        #print(i,x)
        #QTreeWidgetItem(self.dataView,[str(i),x])
    def del_dvideo_onClick(self):
        try:
            keydata = self.getChildNode1
            print(keydata)
            t = youtube.dstvideo_list
            print(t)
            t.remove(keydata)
            self.i1 = self.i1 - 1
            #t.append(self.lineEdit1.text())
            #print(t)
            self.dataView1.clear()
            for i, x in enumerate(t):
                #print(i,x)
                QTreeWidgetItem(self.dataView1, [str(i), x])
            # #self.getChildNode=''
        except:
            print("error")
            #self.popup1=popup1(name='      Please select any user to edit!',name2='Okay!')
            #self.popup1.show()

    def srcvideo_b_onClick(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        self.fileName1, _ = QFileDialog.getOpenFileName(
            self,
            "QFileDialog.getOpenFileName()",
            "",
            "PNG File (*.png)",
            options=options)
        self.lineEdit3.setText('{}'.format(str(self.fileName1)))
        print(self.fileName1)

    def dstvideo_b_onClick(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        self.fileName2, _ = QFileDialog.getOpenFileName(
            self,
            "QFileDialog.getOpenFileName()",
            "",
            "PNG File (*.png)",
            options=options)
        self.lineEdit4.setText('{}'.format(str(self.fileName2)))
        print(self.fileName2)

    def output_v_onClick(self):
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        self.fileName3, _ = QFileDialog.getOpenFileName(
            self,
            "QFileDialog.getOpenFileName()",
            "",
            "MP4 File (*.mp4)",
            options=options)
        self.lineEdit5.setText('{}'.format(str(self.fileName3)))
        print(self.fileName3)

    def output_d_onClick(self):
        self.fileName4 = str(QFileDialog.getExistingDirectory())
        self.lineEdit6.setText('{}'.format(str(self.fileName4)))
        print(self.fileName4)

    def start(self):
        youtube.lineedit3 = self.lineEdit3.text()
        self.calc = External1()
        self.calc.start()
Example #18
0
class AvatarWidget(QLabel):

    clicked = pyqtSignal()

    def __init__(self, *args, **kwargs):
        super(AvatarWidget, self).__init__(*args, **kwargs)
        self.setCursor(Qt.PointingHandCursor)
        self._rotate = 0
        self._radius = 0
        self._step = 45
        self._padding = 10
        self._image = ""
        self._shadowColor = "#212121"
        self._pixmap = None
        self._direction = None  # clockwise 顺时针 anticlockwise 逆时针
        self._timer = QTimer(self, timeout=self.update)
        self._effect = QGraphicsDropShadowEffect(self)
        self._effect.setBlurRadius(self._padding * 2)
        self._effect.setOffset(0, 0)

    def __del__(self):
        del self._pixmap
        self.stop()

    def stop(self):
        self._timer.stop()

    def update(self):
        if self._direction == "clockwise":  # 顺时针
            # 0 45 90 135 180 225 270 315 360
            if self._rotate == -360:
                self._rotate = 45
            else:
                self._rotate += self._step
            if self._rotate > 360:  # 旋转一周后停止
                self._rotate = 360
                self._direction = None
                self._timer.stop()  # 停止计时器
            else:
                super(AvatarWidget, self).update()
        elif self._direction == "anticlockwise":  # 逆时针
            # 360 -45 -90 -135 -180 -225 -270 -315 -360
            if self._rotate == 360:
                self._rotate = -45
            else:
                self._rotate -= self._step
            if self._rotate < -360:
                self._rotate = -360
                self._direction = None
                self._timer.stop()
            else:
                super(AvatarWidget, self).update()

    def paintEvent(self, event):
        '''绘制事件'''
        if not self._pixmap or self._pixmap.isNull():
            return super(AvatarWidget, self).paintEvent(event)
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing, True)
        ph = self._padding / 2
        if self._direction in ("clockwise", "anticlockwise"):
            painter.translate(self.rect().center())  # 设置中心为旋转的中心
            painter.rotate(self._rotate)  # 旋转
            # 绘制图片
            painter.drawPixmap(
                QPointF((-self.width() + self._padding) / 2,
                        (-self.height() + self._padding) / 2), self._pixmap)
            painter.translate(-self.rect().center())  # 将原点复位
        else:
            painter.drawPixmap(QPointF(ph, ph), self._pixmap)


#         painter.setPen(  # 边框圆圈
#             QPen(QColor(self._shadowColor), 5, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
#         painter.drawRoundedRect(
#             ph, ph, self._pixmap.width(),
#             self._pixmap.height(), self._radius, self._radius)  # 画边框圆圈

    def mouseReleaseEvent(self, event):
        super(AvatarWidget, self).mouseReleaseEvent(event)
        self.clicked.emit()

    def enterEvent(self, event):
        '''鼠标进入事件'''
        self._effect.setColor(QColor(self._shadowColor))
        self._effect.setBlurRadius(self._padding * 2)
        self.setGraphicsEffect(self._effect)
        self._timer.stop()
        self._direction = "clockwise"  # 顺时针旋转
        self._timer.start(60)

    def leaveEvent(self, event):
        '''鼠标离开事件'''
        self._effect.setBlurRadius(0)
        self.setGraphicsEffect(self._effect)
        self._timer.stop()
        self._direction = "anticlockwise"  # 逆时针旋转
        self._timer.start(60)

    def getImage(self) -> str:
        return self._image

    def setPixmap(self, path: str) -> None:
        self._image = path
        size = min(self.width(), self.height()) - self.padding  # 需要边距的边框
        self._radius = int(size / 2)
        self._pixmap = QPixmap(size, size)
        self._pixmap.fill(Qt.transparent)  # 填充背景为透明
        tmp = QPixmap(path).scaled(size, size, Qt.KeepAspectRatioByExpanding,
                                   Qt.SmoothTransformation)
        # QPainter
        painter = QPainter()
        painter.begin(self._pixmap)
        painter.setRenderHint(QPainter.Antialiasing, True)
        painter.setRenderHint(QPainter.SmoothPixmapTransform, True)
        # QPainterPath
        path = QPainterPath()
        path.addRoundedRect(0, 0, size, size, self._radius, self._radius)
        # 切割圆
        painter.setClipPath(path)
        painter.drawPixmap(0, 0, tmp)
        painter.end()
        del tmp

    def getPadding(self) -> int:
        return self._padding

    def setPadding(self, padding):
        self._padding = padding

    def getShadowColor(self) -> str:
        return self._shadowColor

    def setShadowColor(self, color: str):
        self._shadowColor = color

    image = pyqtProperty(str, getImage, setPixmap)
    padding = pyqtProperty(int, getPadding, setPadding)
    shadowColor = pyqtProperty(str, getShadowColor, setShadowColor)
Example #19
0
    def setup_ui(self):
        if 'attendees' in self.data and self.data['attendees'][0]:
            you = self.data['attendees'][0]
            if 'responseStatus' in you:
                self.responseStatus = you['responseStatus']
                self.classes.append(self.responseStatus)

            if 'optional' in you and you['optional']:
                self.optional = True
                self.classes.append('optional')

        self.setProperty('class', ' '.join(self.classes))

        self.setAttribute(Qt.WA_StyledBackground, True)

        shadow = QGraphicsDropShadowEffect()
        shadow.setBlurRadius(15)
        shadow.setXOffset(0)
        shadow.setYOffset(2)
        self.setGraphicsEffect(shadow)

        self.vertical_layout = QVBoxLayout()
        self.vertical_layout.setContentsMargins(0, 5, 0, 0)
        self.vertical_layout.setSpacing(0)
        horizontal_layout = QHBoxLayout()
        horizontal_layout.setContentsMargins(10, 10, 10, 10)
        self.vertical_layout.addLayout(horizontal_layout)

        self.start = datetime.datetime.strptime(self.data['start']['dateTime'],
                                                DATETIME_FORMAT)
        self.end = datetime.datetime.strptime(self.data['end']['dateTime'],
                                              DATETIME_FORMAT)
        seconds = (self.end - self.start).total_seconds()
        delta = ''
        if seconds >= 3600:
            hours = int(seconds // 3600)
            seconds -= hours * 3600
            delta = '{0}h'.format(hours)

        if seconds >= 60:
            minutes = int((seconds // 60) % 60)
            delta += '{0}m'.format(minutes)

        duration = QLabel(
            '%s - %s (%s)' %
            (self.start.strftime("%H:%M"), self.end.strftime("%H:%M"), delta))
        duration.setMinimumWidth(120)
        horizontal_layout.addWidget(duration)

        self.setup_summary(horizontal_layout)
        self.setup_conference(horizontal_layout)

        self.timer_label = QLabel()
        self.timer_label.setAlignment(Qt.AlignVCenter | Qt.AlignRight)
        self.timer_label.setFixedWidth(50)
        self.countdown()
        horizontal_layout.addWidget(self.timer_label)

        self.setLayout(self.vertical_layout)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.timeout)
        self.timer.start(1000)
Example #20
0
class SubSongInfoEditPanel(QWidget):
    """ 歌曲信息编辑面板的子窗口 """

    saveInfoSig = pyqtSignal(dict, dict)

    def __init__(self, songInfo: dict, parent):
        super().__init__(parent)

        self.songInfo = deepcopy(songInfo)
        self.oldSongInfo = deepcopy(songInfo)
        # 实例化小部件
        self.__createWidgets()
        # 初始化小部件
        self.__initWidget()
        self.__initLayout()
        self.setShadowEffect()
        # 设置层叠样式
        self.__setQss()

    def __createWidgets(self):
        """ 实例化小部件 """
        # 实例化按钮
        self.saveButton = PerspectivePushButton("保存", self)
        self.cancelButton = PerspectivePushButton("取消", self)
        # 实例化标签
        self.yearLabel = QLabel("年", self)
        self.tconLabel = QLabel("类型", self)
        self.diskLabel = QLabel("光盘", self)
        self.trackNumLabel = QLabel("曲目", self)
        self.songNameLabel = QLabel("歌曲名", self)
        self.songPathLabel = QLabel("文件位置", self)
        self.albumNameLabel = QLabel("专辑标题", self)
        self.songerNameLabel = QLabel("歌曲歌手", self)
        self.albumSongerLabel = QLabel("专辑歌手", self)
        self.editInfoLabel = QLabel("编辑歌曲信息", self)
        self.songPath = QLabel(self.songInfo["songPath"], self)
        self.emptyTrackErrorIcon = ErrorIcon(self)
        self.bottomErrorIcon = ErrorIcon(self)
        self.bottomErrorLabel = QLabel(self)
        # 实例化单行输入框
        self.diskEditLine = LineEdit("1", self)
        self.tconEditLine = LineEdit(self.songInfo["tcon"], self)
        self.yearEditLine = LineEdit(self.songInfo["year"], self)
        self.albumNameEditLine = LineEdit(self.songInfo["album"], self)
        self.songNameEditLine = LineEdit(self.songInfo["songName"], self)
        self.songerNameEditLine = LineEdit(self.songInfo["songer"], self)
        self.albumSongerEditLine = LineEdit(self.songInfo["songer"], self)
        self.trackNumEditLine = LineEdit(self.songInfo["tracknumber"], self)

        # 创建集中管理小部件的列表
        self.leftLabel_list = [
            self.songNameLabel,
            self.trackNumLabel,
            self.albumNameLabel,
            self.tconLabel,
        ]

        self.rightLabel_list = [
            self.songerNameLabel,
            self.diskLabel,
            self.albumSongerLabel,
            self.yearLabel,
        ]

        self.leftEditLine_list = [
            self.songNameEditLine,
            self.trackNumEditLine,
            self.albumNameEditLine,
            self.tconEditLine,
        ]

        self.rightEditLine_list = [
            self.songerNameEditLine,
            self.diskEditLine,
            self.albumSongerEditLine,
            self.yearEditLine,
        ]

        self.editLine_list = [
            self.songNameEditLine,
            self.songerNameEditLine,
            self.trackNumEditLine,
            self.diskEditLine,
            self.albumNameEditLine,
            self.albumSongerEditLine,
            self.tconEditLine,
            self.yearEditLine,
        ]

    def __initWidget(self):
        """ 初始化小部件的属性 """
        self.resize(932, 652)
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_StyledBackground)
        # 默认选中歌名编辑框
        self.songNameEditLine.setFocus()
        self.songNameEditLine.clearButton.show()
        # 给每个单行输入框设置大小
        for editLine in self.editLine_list:
            editLine.setFixedSize(408, 40)

        # 设置按钮的大小
        self.saveButton.setFixedSize(165, 41)
        self.cancelButton.setFixedSize(165, 41)

        # 设置报警标签位置
        self.bottomErrorLabel.setMinimumWidth(100)
        self.emptyTrackErrorIcon.move(7, 224)
        self.bottomErrorIcon.hide()
        self.bottomErrorLabel.hide()
        self.emptyTrackErrorIcon.hide()
        self.installEventFilter(self)

        # 如果曲目为空就禁用保存按钮并更改属性
        self.trackNumEditLine.setProperty("hasText", "true")
        if not self.trackNumEditLine.text():
            self.saveButton.setEnabled(False)
            self.emptyTrackErrorIcon.show()
            self.trackNumEditLine.setProperty("hasText", "false")

        # 给输入框设置过滤器
        rex_trackNum = QRegExp(r"(\d)|([1-9]\d{1,2})")
        rex_year = QRegExp(r"\d{4}年{0,1}")
        validator_tracknum = QRegExpValidator(rex_trackNum, self.trackNumEditLine)
        validator_disk = QRegExpValidator(rex_trackNum, self.diskEditLine)
        validator_year = QRegExpValidator(rex_year, self.yearEditLine)
        self.trackNumEditLine.setValidator(validator_tracknum)
        self.diskEditLine.setValidator(validator_disk)
        self.yearEditLine.setValidator(validator_year)

        # 将曲目输入框数字改变的信号连接到槽函数
        self.trackNumEditLine.textChanged.connect(self.checkTrackEditLine)

        # 将按钮点击信号连接到槽函数
        self.saveButton.clicked.connect(self.saveInfo)
        if not self.parent():
            self.cancelButton.clicked.connect(self.deleteLater)

        # 分配ID
        self.editInfoLabel.setObjectName("editSongInfo")
        self.songerNameEditLine.setObjectName("songer")
        self.albumSongerEditLine.setObjectName("songer")
        self.songPath.setObjectName("songPath")
        self.bottomErrorLabel.setObjectName("bottomErrorLabel")

    def __initLayout(self):
        """ 初始化小部件的排版 """
        self.editInfoLabel.move(30, 30)
        self.songPathLabel.move(30, 470)
        self.songPath.move(30, 502)
        self.saveButton.move(566, 595)
        self.cancelButton.move(736, 595)
        label_top_y = 95

        for i, (label_left, label_right) in enumerate(
            zip(self.leftLabel_list, self.rightLabel_list)
        ):
            label_left.setObjectName("infoTypeLabel")
            label_right.setObjectName("infoTypeLabel")
            label_left.move(30, label_top_y + i * 87)
            label_right.move(494, label_top_y + i * 87)

        editLine_top_y = 127

        for i, (editLine_left, editLine_right) in enumerate(
            zip(self.leftEditLine_list, self.rightEditLine_list)
        ):
            editLine_left.move(30, editLine_top_y + i * 87)
            editLine_right.move(494, editLine_top_y + i * 87)

        # 调整高度
        newSongPath, isWordWrap = autoWrap(self.songPath.text(), 100)
        if isWordWrap:
            self.songPath.setText(newSongPath)
            self.resize(self.width(), self.height() + 25)
            self.cancelButton.move(self.cancelButton.x(), self.cancelButton.y() + 25)
            self.saveButton.move(self.saveButton.x(), self.saveButton.y() + 25)
        # 调整报错标签的位置
        self.bottomErrorIcon.move(30, self.height() - 110)
        self.bottomErrorLabel.move(55, self.height() - 112)

    def __setQss(self):
        """ 设置层叠样式表 """
        with open(r"app\resource\css\infoEditPanel.qss", encoding="utf-8") as f:
            self.setStyleSheet(f.read())

    def paintEvent(self, event):
        """ 绘制背景和阴影 """
        # 创建画笔
        self.pen = QPen(QColor(0, 153, 188))
        painter = QPainter(self)
        # 绘制边框
        painter.setPen(self.pen)
        painter.drawRect(0, 0, self.width() - 1, self.height() - 1)

    def saveInfo(self):
        """ 保存标签卡信息 """
        album_list = adjustAlbumName(self.albumNameEditLine.text())
        self.songInfo["songName"] = self.songNameEditLine.text()
        self.songInfo["songer"] = self.songerNameEditLine.text()
        self.songInfo["album"] = album_list[0]
        self.songInfo["modifiedAlbum"] = album_list[-1]
        # 根据后缀名选择曲目标签的写入方式
        self.songInfo["tracknumber"] = self.trackNumEditLine.text()
        self.songInfo["tcon"] = self.tconEditLine.text()
        if self.yearEditLine.text()[:4] != "未知年份":
            self.songInfo["year"] = self.yearEditLine.text()[:4] + "年"
        else:
            self.songInfo["year"] = "未知年份"
        if not modifySongInfo(self.songInfo):
            self.bottomErrorLabel.setText("遇到未知错误,请稍后再试")
            self.bottomErrorLabel.show()
            self.bottomErrorIcon.show()
        else:
            self.saveInfoSig.emit(self.oldSongInfo, self.songInfo)
            self.parent().deleteLater()

    def checkTrackEditLine(self):
        """ 检查曲目输入框的内容是否为空 """
        if not self.trackNumEditLine.text():
            self.bottomErrorLabel.setText("曲目必须是1000以下的数字")
            self.bottomErrorLabel.show()
            self.emptyTrackErrorIcon.show()
            self.bottomErrorIcon.show()
            self.saveButton.setEnabled(False)
            self.trackNumEditLine.setProperty("hasText", "false")
        else:
            self.trackNumEditLine.setProperty("hasText", "true")
            self.bottomErrorLabel.hide()
            self.bottomErrorIcon.hide()
            self.emptyTrackErrorIcon.hide()
            self.saveButton.setEnabled(True)
        self.trackNumEditLine.setStyle(QApplication.style())

    def setShadowEffect(self):
        """ 添加阴影 """
        self.shadowEffect = QGraphicsDropShadowEffect(self)
        self.shadowEffect.setBlurRadius(50)
        self.shadowEffect.setOffset(0, 5)
        self.setGraphicsEffect(self.shadowEffect)
Example #21
0
class NodeBodyItem(GraphicsPathObject):
    """
    The central part (body) of the `NodeItem`.
    """
    def __init__(self, parent=None):
        GraphicsPathObject.__init__(self, parent)
        assert(isinstance(parent, NodeItem))

        self.__processingState = 0
        self.__progress = -1
        self.__animationEnabled = False
        self.__isSelected = False
        self.__hasFocus = False
        self.__hover = False
        self.__shapeRect = QRectF(-10, -10, 20, 20)

        self.setAcceptHoverEvents(True)

        self.setFlag(QGraphicsItem.ItemSendsScenePositionChanges, True)
        self.setFlag(QGraphicsItem.ItemSendsGeometryChanges, True)

        self.setPen(QPen(Qt.NoPen))

        self.setPalette(default_palette())

        self.shadow = QGraphicsDropShadowEffect(
            blurRadius=3,
            color=QColor(SHADOW_COLOR),
            offset=QPointF(0, 0),
            )

        self.setGraphicsEffect(self.shadow)
        self.shadow.setEnabled(True)

        self.__blurAnimation = QPropertyAnimation(self.shadow, b"blurRadius",
                                                  self)
        self.__blurAnimation.setDuration(100)
        self.__blurAnimation.finished.connect(self.__on_finished)

        self.__pingAnimation = QPropertyAnimation(self, b"scale", self)
        self.__pingAnimation.setDuration(250)
        self.__pingAnimation.setKeyValues([(0.0, 1.0), (0.5, 1.1), (1.0, 1.0)])

    # TODO: The body item should allow the setting of arbitrary painter
    # paths (for instance rounded rect, ...)
    def setShapeRect(self, rect):
        """
        Set the item's shape `rect`. The item should be confined within
        this rect.

        """
        path = QPainterPath()
        path.addEllipse(rect)
        self.setPath(path)
        self.__shapeRect = rect

    def setPalette(self, palette):
        """
        Set the body color palette (:class:`QPalette`).
        """
        self.palette = palette
        self.__updateBrush()

    def setAnimationEnabled(self, enabled):
        """
        Set the node animation enabled.
        """
        if self.__animationEnabled != enabled:
            self.__animationEnabled = enabled

    def setProcessingState(self, state):
        """
        Set the processing state of the node.
        """
        if self.__processingState != state:
            self.__processingState = state
            if not state and self.__animationEnabled:
                self.ping()

    def setProgress(self, progress):
        """
        Set the progress indicator state of the node. `progress` should
        be a number between 0 and 100.

        """
        self.__progress = progress
        self.update()

    def ping(self):
        """
        Trigger a 'ping' animation.
        """
        animation_restart(self.__pingAnimation)

    def hoverEnterEvent(self, event):
        self.__hover = True
        self.__updateShadowState()
        return GraphicsPathObject.hoverEnterEvent(self, event)

    def hoverLeaveEvent(self, event):
        self.__hover = False
        self.__updateShadowState()
        return GraphicsPathObject.hoverLeaveEvent(self, event)

    def paint(self, painter, option, widget):
        """
        Paint the shape and a progress meter.
        """
        # Let the default implementation draw the shape
        if option.state & QStyle.State_Selected:
            # Prevent the default bounding rect selection indicator.
            option.state = option.state ^ QStyle.State_Selected
        GraphicsPathObject.paint(self, painter, option, widget)
        if self.__progress >= 0:
            # Draw the progress meter over the shape.
            # Set the clip to shape so the meter does not overflow the shape.
            painter.setClipPath(self.shape(), Qt.ReplaceClip)
            color = self.palette.color(QPalette.ButtonText)
            pen = QPen(color, 5)
            painter.save()
            painter.setPen(pen)
            painter.setRenderHints(QPainter.Antialiasing)
            span = max(1, int(self.__progress * 57.60))
            painter.drawArc(self.__shapeRect, 90 * 16, -span)
            painter.restore()

    def __updateShadowState(self):
        if self.__hasFocus:
            color = QColor(FOCUS_OUTLINE_COLOR)
            self.setPen(QPen(color, 1.5))
        else:
            self.setPen(QPen(Qt.NoPen))

        radius = 3
        enabled = False

        if self.__isSelected:
            enabled = True
            radius = 7

        if self.__hover:
            radius = 17
            enabled = True

        if enabled and not self.shadow.isEnabled():
            self.shadow.setEnabled(enabled)

        if self.__animationEnabled:
            if self.__blurAnimation.state() == QPropertyAnimation.Running:
                self.__blurAnimation.pause()

            self.__blurAnimation.setStartValue(self.shadow.blurRadius())
            self.__blurAnimation.setEndValue(radius)
            self.__blurAnimation.start()
        else:
            self.shadow.setBlurRadius(radius)

    def __updateBrush(self):
        palette = self.palette
        if self.__isSelected:
            cg = QPalette.Active
        else:
            cg = QPalette.Inactive

        palette.setCurrentColorGroup(cg)
        c1 = palette.color(QPalette.Light)
        c2 = palette.color(QPalette.Button)
        grad = radial_gradient(c2, c1)
        self.setBrush(QBrush(grad))

    # TODO: The selected and focus states should be set using the
    # QStyle flags (State_Selected. State_HasFocus)

    def setSelected(self, selected):
        """
        Set the `selected` state.

        .. note:: The item does not have `QGraphicsItem.ItemIsSelectable` flag.
                  This property is instead controlled by the parent NodeItem.

        """
        self.__isSelected = selected
        self.__updateBrush()

    def setHasFocus(self, focus):
        """
        Set the `has focus` state.

        .. note:: The item does not have `QGraphicsItem.ItemIsFocusable` flag.
                  This property is instead controlled by the parent NodeItem.

        """
        self.__hasFocus = focus
        self.__updateShadowState()

    def __on_finished(self):
        if self.shadow.blurRadius() == 0:
            self.shadow.setEnabled(False)
Example #22
0
    def initUI(self):

        self.scroll = QScrollArea(
            self
        )  # Scroll Area which contains the widgets, set as the centralWidget
        self.widget1 = QWidget(self)
        self.widget1.setStyleSheet('background-color:#FAF6F5;')
        self.widget1.resize(1024, 1800)
        # self.widget2=QWidget(self)
        # self.widget2.setStyleSheet('background-color:black;')
        # self.widget2.resize(1024,800)
        # self.widget2.move(0,500)
        self.setGeometry(100, 100, 1024, 768)
        #self.vbox = QVBoxLayout()
        #self.widget1.setLayout(self.vbox)                # Widget that contains the collection of Vertical Box
        self.epf = QLabel("", self.widget1)
        effect = QGraphicsDropShadowEffect(self.epf)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf.setGraphicsEffect(effect)
        self.epf.setStyleSheet((
            "QLabel{background-color:white; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf.setGeometry(4, 3, 1000, 60)

        self.epf1 = QLabel("", self.widget1)
        #self.epf.setFont(QFont('Arial', 18))
        effect = QGraphicsDropShadowEffect(self.epf1)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf1.setGraphicsEffect(effect)
        self.epf1.setStyleSheet((
            "QLabel{background-color:#FCFCFE; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf1.setGeometry(20, 93, 970, 1680)
        source_label = QLabel("Face Swap Using Hard Drive Videos",
                              self.widget1)
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(250, 113, 600, 35)

        qq = u'\u2190'
        bb = QPushButton(qq + ' Back', self.widget1)
        bb.setGeometry(20, 3, 85, 58)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(18)
        bb.setFont(font)
        bb.setStyleSheet((
            "QPushButton{background-color:white; color: black;border-style: ridge;border-width:0px;border-radius: 0px;border-color: white;}"
        ))
        #bb.clicked.connect(self.bb_onClick)
        self.epf = QLabel("", self.widget1)
        #self.epf.setFont(QFont('Arial', 18))
        effect = QGraphicsDropShadowEffect(self.epf)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf.setGraphicsEffect(effect)
        self.epf.setStyleSheet((
            "QLabel{background-color:white; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf.setGeometry(50, 163, 900, 420)
        source_label = QLabel("Add Source Videos", self.widget1)
        source_label.setStyleSheet('background-color:white;')
        source_label.setFont(QFont('Arial', 21))
        source_label.setGeometry(100, 175, 600, 30)
        self.add_svideo = QPushButton('+', self.widget1)
        self.add_svideo.setGeometry(850, 213, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(18)
        self.add_svideo.setFont(font)
        self.add_svideo.setStyleSheet((
            "QPushButton{background-color:red; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.add_svideo.clicked.connect(self.add_svideo_onClick)

        self.del_svideo = QPushButton('-', self.widget1)
        self.del_svideo.setGeometry(800, 213, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(28)
        self.del_svideo.setFont(font)
        self.del_svideo.setStyleSheet((
            "QPushButton{background-color:blue; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.del_svideo.clicked.connect(self.del_svideo_onClick)

        self.dataView = QTreeWidget(self.widget1)
        self.dataView.setRootIsDecorated(False)
        self.dataView.setHeaderLabels(['Ref No', 'Source Videos'])
        self.dataView.header().setStyleSheet(
            'padding-top:-2px;background-color:white;font-size:21pt; font-family: Arial;border-width:1px;border-style:outset;border-color:black; '
        )
        self.dataView.setColumnCount(2)
        self.dataView.setColumnWidth(0, 100)
        self.dataView.setColumnWidth(1, 100)

        self.dataView.setStyleSheet('background-color:white;color: black;')
        self.dataView.setFont(QFont('Times New Roman', 22))

        self.dataView.setGeometry(100, 260, 800, 265)
        #self.dataView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)

        QScroller.grabGesture(self.dataView.viewport(), QScroller.TouchGesture)
        #self.dataView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
        #self.dataView.itemClicked.connect(self.onItemClicked)

        self.epf = QLabel("", self.widget1)
        #self.epf.setFont(QFont('Arial', 18))
        effect = QGraphicsDropShadowEffect(self.epf)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.epf.setGraphicsEffect(effect)
        self.epf.setStyleSheet((
            "QLabel{background-color:white; color: white;padding-left:8px;border-style: ridge;border-width:0px;border-radius: 10px;border-color: #008CBA;}"
        ))
        #self.epf.setStyleSheet('background-color:#4299ff;padding-left:10px;')
        self.epf.setGeometry(50, 603, 900, 420)
        source_label = QLabel("Add Destination Videos", self.widget1)
        source_label.setStyleSheet('background-color:white;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(100, 613, 600, 30)
        self.add_dvideo = QPushButton('+', self.widget1)
        self.add_dvideo.setGeometry(850, 653, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(18)
        self.add_dvideo.setFont(font)
        self.add_dvideo.setStyleSheet((
            "QPushButton{background-color:red; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.add_dvideo.clicked.connect(self.add_dvideo_onClick)

        self.del_dvideo = QPushButton('-', self.widget1)
        self.del_dvideo.setGeometry(800, 653, 40, 40)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(28)
        self.del_dvideo.setFont(font)
        self.del_dvideo.setStyleSheet((
            "QPushButton{background-color:blue; color: black;border-style: ridge;border-width:0px;border-radius: 20px;border-color: white;}"
        ))
        self.del_dvideo.clicked.connect(self.del_dvideo_onClick)

        self.dataView1 = QTreeWidget(self.widget1)
        self.dataView1.setRootIsDecorated(False)
        self.dataView1.setHeaderLabels(['Ref No', 'Destination Videos'])
        self.dataView1.header().setStyleSheet(
            'padding-top:-2px;background-color:white;font-size:21pt; font-family: Arial;border-width:1px;border-style:outset;border-color:black; '
        )
        self.dataView1.setColumnCount(2)
        self.dataView1.setColumnWidth(0, 100)
        self.dataView1.setColumnWidth(1, 100)

        self.dataView1.setStyleSheet('background-color:white;color: black;')
        self.dataView1.setFont(QFont('Times New Roman', 22))

        self.dataView1.setGeometry(100, 700, 800, 265)

        source_label = QLabel("Picture of Person In Source Video",
                              self.widget1)
        source_label.setFont(QFont('Arial', 22))
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setGeometry(100, 1113, 600, 30)
        self.lineEdit3 = QLineEdit(self.widget1)
        self.lineEdit3.setEnabled(False)
        self.lineEdit3.setFont(QFont('Arial', 11))
        self.lineEdit3.setGeometry(100, 1160, 650, 40)
        self.lineEdit3.setStyleSheet("background-color:white;color:black;")
        self.lineEdit3.setObjectName("lineEdit3")

        self.srcvideo_b = QPushButton('Select File', self.widget1)
        self.srcvideo_b.setGeometry(790, 1155, 120, 50)
        effect = QGraphicsDropShadowEffect(self.srcvideo_b)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.srcvideo_b.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.srcvideo_b.setFont(font)
        self.srcvideo_b.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.srcvideo_b.clicked.connect(self.srcvideo_b_onClick)

        source_label = QLabel("Picture of Person In Destination Video",
                              self.widget1)
        source_label.setFont(QFont('Arial', 22))
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setGeometry(100, 1213, 600, 30)
        self.lineEdit4 = QLineEdit(self.widget1)
        self.lineEdit4.setEnabled(False)
        self.lineEdit4.setFont(QFont('Arial', 11))
        self.lineEdit4.setGeometry(100, 1260, 650, 40)
        self.lineEdit4.setStyleSheet("background-color:white;color:black;")
        self.lineEdit4.setObjectName("lineEdit4")

        self.dstvideo_b = QPushButton('Select File', self.widget1)
        self.dstvideo_b.setGeometry(790, 1255, 120, 50)
        effect = QGraphicsDropShadowEffect(self.dstvideo_b)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.dstvideo_b.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.dstvideo_b.setFont(font)
        self.dstvideo_b.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.dstvideo_b.clicked.connect(self.dstvideo_b_onClick)

        source_label = QLabel("Output Video in which face is to be replaced",
                              self.widget1)
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(100, 1313, 600, 30)
        self.lineEdit5 = QLineEdit(self.widget1)
        self.lineEdit5.setEnabled(False)
        self.lineEdit5.setFont(QFont('Arial', 11))
        self.lineEdit5.setGeometry(100, 1360, 650, 40)
        self.lineEdit5.setStyleSheet("background-color:white;color:black;")
        self.lineEdit5.setObjectName("lineEdit5")

        self.output_v = QPushButton('Select File', self.widget1)
        self.output_v.setGeometry(790, 1355, 120, 50)
        effect = QGraphicsDropShadowEffect(self.output_v)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.output_v.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.output_v.setFont(font)
        self.output_v.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.output_v.clicked.connect(self.output_v_onClick)

        source_label = QLabel("Output Directory", self.widget1)
        source_label.setStyleSheet('background-color:#FCFCFE;')
        source_label.setFont(QFont('Arial', 22))
        source_label.setGeometry(100, 1413, 600, 30)
        self.lineEdit6 = QLineEdit(self.widget1)
        self.lineEdit6.setEnabled(False)
        self.lineEdit6.setFont(QFont('Arial', 11))
        self.lineEdit6.setGeometry(100, 1460, 650, 40)
        self.lineEdit6.setStyleSheet("background-color:white;color:black;")
        self.lineEdit6.setObjectName("lineEdit6")

        self.output_d = QPushButton('Select Folder', self.widget1)
        self.output_d.setGeometry(790, 1455, 120, 50)
        effect = QGraphicsDropShadowEffect(self.output_d)
        effect.setOffset(0, 0)
        effect.setBlurRadius(20)
        self.output_d.setGraphicsEffect(effect)
        font = QFont()
        font.setFamily("Arial")
        font.setBold(True)
        font.setWeight(50)
        font.setPointSize(13)
        self.output_d.setFont(font)
        self.output_d.setStyleSheet((
            "QPushButton{background-color:#333335; color: white;border-style: ridge;border-width:0px;border-radius: 3px;border-color: #008CBA;}"
        ))
        self.output_d.clicked.connect(self.output_d_onClick)

        self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
        self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        #self.scroll.setWidgetResizable(True)
        self.scroll.setWidget(self.widget1)
        #self.scroll.setWidget(self.widget2)
        # self.scroll.setGeometry(0,0,1024,768)

        self.buttonWindow4 = QPushButton('Start', self.widget1)
        self.buttonWindow4.setGeometry(440, 1570, 215, 85)
        self.effect = QGraphicsDropShadowEffect(self.buttonWindow4)
        self.effect.setOffset(0, 0)
        self.effect.setBlurRadius(20)
        self.buttonWindow4.setGraphicsEffect(self.effect)
        self.font = QFont()
        self.font.setFamily("Arial")
        self.font.setBold(True)
        self.font.setWeight(50)
        self.font.setPointSize(18)
        self.buttonWindow4.setFont(self.font)
        self.buttonWindow4.setStyleSheet((
            "QPushButton{background-color:#3C81F8; color: black;border-style: ridge;border-width:1px;border-radius: 10px;border-color: black;}"
        ))

        self.buttonWindow4.clicked.connect(self.start)

        self.setCentralWidget(self.scroll)
        self.setWindowTitle('Face Swap')

        self.dataView.itemClicked.connect(self.onItemClicked)
        self.dataView1.itemClicked.connect(self.onItemClicked1)
        self.show()
Example #23
0
    def __init__(self,
                 core,
                 jobs_ctx,
                 event_bus,
                 systray_notification,
                 action_addr=None,
                 **kwargs):
        super().__init__(**kwargs)

        self.setupUi(self)
        self.jobs_ctx = jobs_ctx
        self.core = core
        self.event_bus = event_bus
        self.systray_notification = systray_notification

        self.menu = MenuWidget(parent=self)
        self.widget_menu.layout().addWidget(self.menu)

        for e in self.NOTIFICATION_EVENTS:
            self.event_bus.connect(e, self.handle_event)

        self.event_bus.connect(CoreEvent.FS_ENTRY_SYNCED,
                               self._on_vlobs_updated_trio)
        self.event_bus.connect(CoreEvent.BACKEND_REALM_VLOBS_UPDATED,
                               self._on_vlobs_updated_trio)
        self.vlobs_updated_qt.connect(self._on_vlobs_updated_qt)
        self.organization_stats_timer = QTimer()
        self.organization_stats_timer.setInterval(self.RESET_TIMER_STATS)
        self.organization_stats_timer.setSingleShot(True)
        self.organization_stats_timer.timeout.connect(
            self._get_organization_stats)

        self.set_user_info()
        menu = QMenu()
        log_out_act = menu.addAction(_("ACTION_LOG_OUT"))
        log_out_act.triggered.connect(self.logout_requested.emit)
        self.button_user.setMenu(menu)
        pix = Pixmap(":/icons/images/material/person.svg")
        pix.replace_color(QColor(0, 0, 0), QColor(0x00, 0x92, 0xFF))
        self.button_user.setIcon(QIcon(pix))
        self.button_user.clicked.connect(self._show_user_menu)

        self.new_notification.connect(self.on_new_notification)
        self.menu.files_clicked.connect(self.show_mount_widget)
        self.menu.users_clicked.connect(self.show_users_widget)
        self.menu.devices_clicked.connect(self.show_devices_widget)
        self.connection_state_changed.connect(
            self._on_connection_state_changed)

        self.widget_title2.hide()
        self.icon_title3.hide()
        self.label_title3.setText("")
        self.icon_title3.apply_style()
        self.icon_title3.apply_style()

        effect = QGraphicsDropShadowEffect(self)
        effect.setColor(QColor(100, 100, 100))
        effect.setBlurRadius(4)
        effect.setXOffset(-2)
        effect.setYOffset(2)
        self.widget_notif.setGraphicsEffect(effect)

        self.mount_widget = MountWidget(self.core,
                                        self.jobs_ctx,
                                        self.event_bus,
                                        parent=self)
        self.widget_central.layout().insertWidget(0, self.mount_widget)
        self.mount_widget.folder_changed.connect(self._on_folder_changed)

        self.organization_stats_success.connect(
            self._on_organization_stats_success)
        self.organization_stats_error.connect(
            self._on_organization_stats_error)

        self.users_widget = UsersWidget(self.core,
                                        self.jobs_ctx,
                                        self.event_bus,
                                        parent=self)
        self.users_widget.filter_shared_workspaces_request.connect(
            self.show_mount_widget)
        self.widget_central.layout().insertWidget(0, self.users_widget)

        self.devices_widget = DevicesWidget(self.core,
                                            self.jobs_ctx,
                                            self.event_bus,
                                            parent=self)
        self.widget_central.layout().insertWidget(0, self.devices_widget)

        self._on_connection_state_changed(self.core.backend_status,
                                          self.core.backend_status_exc,
                                          allow_systray=False)
        if action_addr is not None:
            try:
                self.go_to_file_link(action_addr.workspace_id,
                                     action_addr.path)
            except FSWorkspaceNotFoundError:
                show_error(
                    self,
                    _("TEXT_FILE_LINK_WORKSPACE_NOT_FOUND_organization").
                    format(organization=action_addr.organization_id),
                )

                self.show_mount_widget()
        else:
            self.show_mount_widget()
Example #24
0
class UILogin(form):
    def __init__(self):
        super(UILogin, self).__init__()
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setupUi()

    def setupUi(self):
        Login = self
        Login.setObjectName("Login")
        Login.resize(427, 548)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Login.sizePolicy().hasHeightForWidth())
        Login.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("Noto Serif")
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        Login.setFont(font)
        Login.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/source/img/if_16_1751363.ico"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Login.setWindowIcon(icon)
        Login.setStyleSheet("background-color: rgb(255, 255, 255);")
        Login.setInputMethodHints(QtCore.Qt.ImhSensitiveData)
        self.MainFrame = QtWidgets.QFrame(Login)
        self.MainFrame.setGeometry(QtCore.QRect(10, 10, 411, 531))
        self.MainFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.MainFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.MainFrame.setObjectName("MainFrame")
        self.shadow = QGraphicsDropShadowEffect()
        self.shadow.setBlurRadius(4)
        self.shadow.setOffset(2)
        self.MainFrame.setGraphicsEffect(self.shadow)
        self.label_3 = QtWidgets.QLabel(self.MainFrame)
        self.label_3.setGeometry(QtCore.QRect(310, 20, 71, 71))
        self.label_3.setStyleSheet("background-color: rgb(65, 105, 225);")
        self.label_3.setText("")
        self.label_3.setPixmap(QtGui.QPixmap(":/source/img/iiie.png"))
        self.label_3.setObjectName("label_3")
        self.label = QtWidgets.QLabel(self.MainFrame)
        self.label.setGeometry(QtCore.QRect(10, 5, 81, 101))
        self.label.setStyleSheet("background-color: rgb(65, 105, 225);")
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap(":/source/img/logo.png"))
        self.label.setObjectName("label")
        self.frame_2 = QtWidgets.QFrame(self.MainFrame)
        self.frame_2.setGeometry(QtCore.QRect(40, 190, 321, 311))
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.frame_2.setObjectName("frame_2")
        self.label_6 = QtWidgets.QLabel(self.frame_2)
        self.label_6.setGeometry(QtCore.QRect(40, 50, 41, 41))
        self.label_6.setText("")
        self.label_6.setPixmap(QtGui.QPixmap(":/source/img/Usuario.png"))
        self.label_6.setObjectName("label_6")
        self.txtUsuario = QtWidgets.QLineEdit(self.frame_2)
        self.txtUsuario.setGeometry(QtCore.QRect(100, 70, 141, 21))
        self.txtUsuario.setStyleSheet(
            "border-bottom:1px solid black;border-top:none;")
        self.txtUsuario.setObjectName("txtUsuario")
        self.label_7 = QtWidgets.QLabel(self.frame_2)
        self.label_7.setGeometry(QtCore.QRect(40, 110, 51, 51))
        self.label_7.setText("")
        self.label_7.setPixmap(QtGui.QPixmap(":/source/img/Password.png"))
        self.label_7.setObjectName("label_7")
        self.txtPassword = QtWidgets.QLineEdit(self.frame_2)
        self.txtPassword.setGeometry(QtCore.QRect(100, 130, 141, 21))
        self.txtPassword.setStyleSheet(
            "border-bottom:1px solid black;border-top:none;")
        self.txtPassword.setEchoMode(QtWidgets.QLineEdit.Password)
        self.txtPassword.setObjectName("txtPassword")
        self.lblForgottenPass = QtWidgets.QLabel(self.frame_2)
        self.lblForgottenPass.setGeometry(QtCore.QRect(90, 190, 161, 16))
        font = QtGui.QFont()
        font.setPointSize(9)
        self.lblForgottenPass.setFont(font)
        self.lblForgottenPass.setCursor(
            QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.lblForgottenPass.setStyleSheet(
            "QLabel{color: rgb(0, 0, 255); }lblForgottenPass:hover{color:rgb(0,0,125);}"
        )
        self.lblForgottenPass.setTextInteractionFlags(
            QtCore.Qt.TextBrowserInteraction)
        self.lblForgottenPass.setObjectName("lblForgottenPass")
        self.btnAceptar = QtWidgets.QPushButton(self.frame_2)
        self.btnAceptar.setGeometry(QtCore.QRect(90, 240, 131, 41))
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.btnAceptar.setFont(font)
        self.btnAceptar.setStyleSheet("border:1px solid green;")
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/source/img/OK.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.btnAceptar.setIcon(icon1)
        self.btnAceptar.setIconSize(QtCore.QSize(24, 24))
        self.btnAceptar.setShortcut("")
        self.btnAceptar.setCheckable(False)
        self.btnAceptar.setFlat(True)
        self.btnAceptar.setObjectName("btnAceptar")
        self.label_4 = QtWidgets.QLabel(self.MainFrame)
        self.label_4.setGeometry(QtCore.QRect(130, 140, 151, 25))
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(14)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.label_5 = QtWidgets.QLabel(self.MainFrame)
        self.label_5.setGeometry(QtCore.QRect(50, 180, 91, 15))
        font = QtGui.QFont()
        font.setFamily("Roboto")
        font.setPointSize(11)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.label_2 = QtWidgets.QLabel(self.MainFrame)
        self.label_2.setGeometry(QtCore.QRect(90, 40, 111, 31))
        font = QtGui.QFont()
        font.setPointSize(21)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setAutoFillBackground(False)
        self.label_2.setStyleSheet(
            "color: rgb(255, 255, 0);background-color: rgb(65, 105, 225);")
        self.label_2.setObjectName("label_2")
        self.btnExit = QtWidgets.QPushButton(self.MainFrame)
        self.btnExit.setGeometry(QtCore.QRect(385, 5, 24, 24))
        self.btnExit.setText("")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/source/img/Cancelar.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.btnExit.setIcon(icon2)
        self.btnExit.setIconSize(QtCore.QSize(24, 24))
        self.btnExit.setFlat(True)
        self.btnExit.setObjectName("btnExit")
        self.graphicsView = QtWidgets.QGraphicsView(self.MainFrame)
        self.graphicsView.setGeometry(QtCore.QRect(0, 0, 411, 116))
        self.graphicsView.setAutoFillBackground(True)
        self.graphicsView.setStyleSheet("background-color: rgb(65, 105, 225);")
        self.graphicsView.setObjectName("graphicsView")
        self.frame_2.raise_()
        self.label_4.raise_()
        self.label_5.raise_()
        self.graphicsView.raise_()
        self.label.raise_()
        self.label_2.raise_()
        self.label_3.raise_()
        self.btnExit.raise_()
        self.center()
        self.retranslateUi(Login)
        QtCore.QMetaObject.connectSlotsByName(Login)

        # shorcut

        self.shortcut = QShortcut(Qt.Key_Return, self)
        self.shortcut.activated.connect(self.btnAceptar_Click)

        # movie

        self.movie = QMovie(":/source/img/Cargando.gif")  # 80 ,200
        self.lblmovie = QtWidgets.QLabel(self.frame_2)
        self.lblmovie.setGeometry(QtCore.QRect(135, 235, 48, 48))
        self.lblmovie.setMovie(self.movie)
        self.lblmovie.hide()
        self.movie.setScaledSize(QtCore.QSize(48, 48))

        # listener

        self.btnAceptar.clicked.connect(self.btnAceptar_Click)
        self.lblForgottenPass.mousePressEvent = self.mousePress_Click
        self.btnExit.clicked.connect(self.exit)

        # end

    def mousePress_Click(self, evt):
        if evt.buttons() == Qt.LeftButton:
            UI = UIRecuperarModal(self)
            UI.show()

    def btnAceptar_Click(self):
        if (self.txtUsuario.text() == "" or self.txtPassword.text() == ""):
            QMessageBox.warning(self, "¡Advertencia!",
                                "Rellene los campos solicitados")
            self.lblmovie.hide()
            self.btnAceptar.show()
            return
        self.btnAceptar.hide()
        self.lblmovie.show()
        self.movie.start()
        worker = Worker(
            Logica.IniciarSesion, **{
                "Usuario": self.txtUsuario.text(),
                "Password": self.txtPassword.text()
            })
        worker.signals.finished.connect(self.btnAceptar_CallBack)
        self.threadpool.start(worker)

    def btnAceptar_CallBack(self, s):
        self.lblmovie.hide()
        self.btnAceptar.show()
        if isinstance(s, Exception):
            QMessageBox.information(self, "¡Error!", str(s))
            return
        if (s.id is None):  # If returns None, API is online, but mongodb isnt
            QMessageBox.warning(self, "¡Error!", "No se pudo iniciar sesion")
            return
        if (s.id == ""):  # If returns an empty string, credentials are bad
            QMessageBox.warning(self, "¡Error!",
                                "Usuario y/o contraseña incorrectos")
            return
        if (s.id != "" and s.enabled
                == False):  # If Enabled is false, then cannot login
            QMessageBox.warning(self, "¡Advertencia!",
                                "Usuario no tiene permitido iniciar sesion")
            return
        self.txtUsuario.setText("")
        self.txtPassword.setText("")
        self.btnAceptar.clicked.disconnect(self.btnAceptar_Click)
        self.btnExit.clicked.disconnect(self.exit)
        self.signals.login.emit(s)
        self.close()

    def mousePressEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.dragPos = event.globalPos()
            event.accept()

    def mouseMoveEvent(self, event):
        if event.buttons() == Qt.LeftButton:
            self.move(self.pos() + event.globalPos() - self.dragPos)
            self.dragPos = event.globalPos()
            event.accept()

    def retranslateUi(self, Login):
        _translate = QtCore.QCoreApplication.translate
        Login.setWindowTitle(_translate("Login", "Sistema SCADA"))
        self.lblForgottenPass.setText(
            _translate("Login", "¿Olvidaste tu contraseña?"))
        self.btnAceptar.setText(_translate("Login", "Iniciar Sesión"))
        self.label_4.setText(_translate("Login", "Iniciar Sesión"))
        self.label_5.setText(_translate("Login", "Credenciales"))
        self.label_2.setText(_translate("Login", "SCADA"))
Example #25
0
    def __init__(
        self,
        workspace_name,
        workspace_fs,
        is_shared,
        is_creator,
        files=None,
        reencryption_needs=None,
        timestamped=False,
    ):
        super().__init__()
        self.setupUi(self)
        self.is_creator = is_creator
        self.workspace_name = workspace_name
        self.workspace_fs = workspace_fs
        self.reencryption_needs = reencryption_needs
        self.timestamped = timestamped
        self.is_shared = is_shared
        self.reencrypting = None
        self.setCursor(QCursor(Qt.PointingHandCursor))
        self.widget_empty.layout().addWidget(EmptyWorkspaceWidget())
        self.setContextMenuPolicy(Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.show_context_menu)
        files = files or []

        if not len(files):
            self.widget_empty.show()
            self.widget_files.hide()
        else:
            for i, f in enumerate(files, 1):
                if i > 4:
                    break
                label = getattr(self, "file{}_name".format(i))
                label.setText(f)
            self.widget_files.show()
            self.widget_empty.hide()

        if self.timestamped:
            self.widget_title.setStyleSheet(
                "background-color: #E3E3E3; border-top-left-radius: 8px; border-top-right-radius: 8px;"
            )
            self.widget_actions.setStyleSheet(
                "background-color: #E3E3E3; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;"
            )
            self.setStyleSheet(
                "background-color: #E3E3E3; border-radius: 8px;")
            self.button_reencrypt.hide()
            self.button_remount_ts.hide()
            self.button_share.hide()
            self.button_rename.hide()
            self.label_shared.hide()
            self.label_owner.hide()
        else:
            self.widget_title.setStyleSheet(
                "background-color: #FFFFFF; border-top-left-radius: 8px; border-top-right-radius: 8px;"
            )
            self.widget_actions.setStyleSheet(
                "background-color: #FFFFFF; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;"
            )
            self.setStyleSheet(
                "background-color: #FFFFFF; border-radius: 8px;")
            self.button_delete.hide()

        effect = QGraphicsDropShadowEffect(self)
        effect.setColor(QColor(0x99, 0x99, 0x99))
        effect.setBlurRadius(10)
        effect.setXOffset(2)
        effect.setYOffset(2)
        self.setGraphicsEffect(effect)
        if not self.is_creator:
            self.button_reencrypt.hide()
        self.label_reencrypting.hide()
        self.button_share.clicked.connect(self.button_share_clicked)
        self.button_share.apply_style()
        self.button_reencrypt.clicked.connect(self.button_reencrypt_clicked)
        self.button_reencrypt.apply_style()
        self.button_delete.clicked.connect(self.button_delete_clicked)
        self.button_delete.apply_style()
        self.button_rename.clicked.connect(self.button_rename_clicked)
        self.button_rename.apply_style()
        self.button_remount_ts.clicked.connect(self.button_remount_ts_clicked)
        self.button_remount_ts.apply_style()
        self.button_open.clicked.connect(self.button_open_workspace_clicked)
        self.button_open.apply_style()
        self.label_owner.apply_style()
        self.label_shared.apply_style()
        self.label_reencrypting.apply_style()
        if not self.is_creator:
            self.label_owner.hide()
        if not self.is_shared:
            self.label_shared.hide()
        self.reload_workspace_name(self.workspace_name)
Example #26
0
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.configOptions, self.checkBoxList, self.configBool = {}, {}, None
        # Check for root privileges
        if geteuid() != 0:
            msg = ("{} is not root. You need to run with root privileges\n"
                   "Please use kdesudo, gksu or sudo/sux.").format(getuser())
            QMessageBox.critical(self, __doc__ + "- Error", msg)
            sys.exit(1)
        else:
            msg = "This tool is running with root privileges."
            QMessageBox.warning(self, __doc__ + "- Warning", msg)
        # title, icon and sizes
        self.setWindowTitle(__doc__)
        self.setMinimumSize(400, 400)
        self.setMaximumSize(2048, 2048)
        self.resize(600, 600)
        self.setWindowIcon(QIcon.fromTheme("preferences-system"))
        self.menuBar().addMenu("&File").addAction("Exit", exit)
        QShortcut("Ctrl+q", self, activated=lambda: self.close())
        # main group
        main_group = QGroupBox("Module configuration")
        self.setCentralWidget(main_group)
        self.layout = QVBoxLayout(main_group)
        # scrollarea widgets
        self.scrollArea, self.window = QScrollArea(), QWidget()
        self.layout.addWidget(self.scrollArea)
        self.vbox = QVBoxLayout(self.window)
        # Graphic effect
        glow = QGraphicsDropShadowEffect(self)
        glow.setOffset(0)
        glow.setBlurRadius(99)
        glow.setColor(QColor(99, 255, 255))
        self.scrollArea.setGraphicsEffect(glow)
        glow.setEnabled(True)
        # config loading stuff
        self.findConfig(CONFIG_DIR)
        for eachOption in tuple(self.configOptions.keys()):

            self.readConfig(eachOption, self.configOptions)
            self.subLayout = QHBoxLayout()

            self.checkBoxName = "checkBox_" + eachOption
            checkBoxList = QCheckBox(self.checkBoxName, self)
            self.checkBoxList[self.checkBoxName] = checkBoxList
            checkBoxList.setObjectName(self.checkBoxName)
            checkBoxList.setText("Enable module {}".format(eachOption))

            if self.tooltip is not '':
                checkBoxList.setToolTip(self.tooltip)
            else:
                tooltip = "Configuration settings for {}".format(eachOption)
                checkBoxList.setToolTip(tooltip)

            if self.configBool:
                checkBoxList.setChecked(True)

            self.subLayout.addWidget(checkBoxList)
            self.vbox.addLayout(self.subLayout)
        self.scrollArea.setWidget(self.window)

        # Bottom Buttons Bar
        self.pushButtonSleep = QPushButton("Sleep")
        self.pushButtonSleep.setToolTip("Trigger Suspend to RAM aka Sleep")
        self.pushButtonSleep.clicked.connect(self.sleep)
        self.pushButtonHibernate = QPushButton("Hibernate")
        self.pushButtonHibernate.setToolTip("Trigger Suspend to Disk Hibernate")
        self.pushButtonHibernate.clicked.connect(self.hibernate)
        self.buttonBox = QDialogButtonBox()
        self.buttonBox.setStandardButtons(
            QDialogButtonBox.Ok | QDialogButtonBox.Close |
            QDialogButtonBox.Help)
        self.buttonBox.addButton(self.pushButtonHibernate,
                                 QDialogButtonBox.ActionRole)
        self.buttonBox.addButton(self.pushButtonSleep,
                                 QDialogButtonBox.ActionRole)
        self.layout.addWidget(self.buttonBox)
        self.buttonBox.rejected.connect(exit)
        self.buttonBox.accepted.connect(self.writeConfig)
        self.buttonBox.helpRequested.connect(lambda: open_new_tab(WEBPAGE_URL))
Example #27
0
def set_shadow_effect(widget):
    effect = QGraphicsDropShadowEffect()
    effect.setOffset(1, 1)
    effect.setBlurRadius(35)
    effect.setColor(Qt.darkGray)
    widget.setGraphicsEffect(effect)
Example #28
0
    def __init__(self,
                 title,
                 message,
                 item,
                 *args,
                 ntype=0,
                 callback=None,
                 **kwargs):
        super(NotificationItem, self).__init__(*args, **kwargs)
        self.item = item
        self.callback = callback
        layout = QHBoxLayout(self, spacing=0)
        layout.setContentsMargins(0, 0, 0, 0)
        self.bgWidget = QWidget(self)  # 背景控件, 用于支持动画效果
        layout.addWidget(self.bgWidget)

        layout = QGridLayout(self.bgWidget)
        layout.setHorizontalSpacing(15)
        layout.setVerticalSpacing(10)

        # 标题左边图标
        layout.addWidget(QLabel(self, pixmap=NotificationIcon.icon(ntype)), 0,
                         0)

        # 标题
        self.labelTitle = QLabel(title, self)
        font = self.labelTitle.font()
        font.setBold(True)
        font.setPixelSize(22)
        self.labelTitle.setFont(font)

        # 关闭按钮
        self.labelClose = QLabel(self,
                                 cursor=Qt.PointingHandCursor,
                                 pixmap=NotificationIcon.icon(
                                     NotificationIcon.Close))

        # 消息内容
        self.labelMessage = QLabel(message,
                                   self,
                                   cursor=Qt.PointingHandCursor,
                                   wordWrap=True,
                                   alignment=Qt.AlignLeft | Qt.AlignTop)
        font = self.labelMessage.font()
        font.setPixelSize(20)
        self.labelMessage.setFont(font)
        self.labelMessage.adjustSize()

        # 添加到布局
        layout.addWidget(self.labelTitle, 0, 1)
        layout.addItem(
            QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum), 0,
            2)
        layout.addWidget(self.labelClose, 0, 3)
        layout.addWidget(self.labelMessage, 1, 1, 1, 2)

        # 边框阴影
        effect = QGraphicsDropShadowEffect(self)
        effect.setBlurRadius(12)
        effect.setColor(QColor(0, 0, 0, 25))
        effect.setOffset(0, 2)
        self.setGraphicsEffect(effect)

        self.adjustSize()

        # 5秒自动关闭
        self._timer = QTimer(self, timeout=self.doClose)
        self._timer.setSingleShot(True)  # 只触发一次
        self._timer.start(5000)
Example #29
0
class QtNode(QGraphicsWidget):

    def __init__(self, node, view):
        super(QtNode, self).__init__()

        self._spacingConstant = 5.0
        self._roundness = 3

        self._labelColor = QColor(255, 255, 255)
        self._label = QGraphicsSimpleTextItem(self)
        self._label.setBrush(self._labelColor)
        self._label.setText(node.name)

        self._selectedColor = QColor(255, 255, 255)
        self._shapePen = QPen(Qt.NoPen)
        self._shapePen.setColor(self._selectedColor)
        self._shapePen.setWidthF(1.5)

        self._brush = QBrush(QColor(*COLOUR_THEMES[node.node_type]))

        self._dropShadowEffect = QGraphicsDropShadowEffect()
        self.setGraphicsEffect(self._dropShadowEffect)

        self._dropShadowEffect.setOffset(0.0, 10.0)
        self._dropShadowEffect.setBlurRadius(8.0)
        self._dropShadowEffect.setColor(QColor(0, 0, 0, 50))

        self.setFlag(QGraphicsItem.ItemIsMovable)
        self.setFlag(QGraphicsItem.ItemIsSelectable)
        self.setAcceptHoverEvents(True)

        self.setToolTip(node.tooltip)

        self._name = node.name
        self._node = node
        self._view = weakref.ref(view)

        self._busy = False
        self._socketRows = OrderedDict()

        # Build IO pin socket rows
        for pin_name in node.pin_order:
            if pin_name in node.inputs:
                pin = node.inputs[pin_name]

            else:
                pin = node.outputs[pin_name]

            socket_row = SocketRow(self, pin)
            self._socketRows[pin_name] = socket_row

        self.updateLayout()

    def node(self):
        return self._node

    def view(self):
        return self._view()

    def name(self):
        return self._name

    def setName(self, name):
        self._name = name
        self._label.setText(name)
        self.updateLayout()

    def labelColor(self):
        return self._labelColor

    def onDeleted(self):
        if self.isSelected():
            self.setSelected(False)

        for socket_row in self._socketRows.values():
            socket_row.onDeleted()

        self._socketRows.clear()

    def hoverEnterEvent(self, event):
        self.view().guiOnHoverEnter(self)

    def hoverLeaveEvent(self, event):
        self.view().guiOnHoverExit(self)

    def itemChange(self, change, value):
        if change == QGraphicsItem.ItemPositionHasChanged:
            for socket_row in self._socketRows.values():
                socket_row.socket().updateConnectionPositions()

            # Move node
            if not self._busy:
                self._busy = True

                self.view().guiOnMoved(self)
                self._busy = False

        elif change == QGraphicsItem.ItemSelectedHasChanged:
            self.onSelected()

        return QGraphicsItem.itemChange(self, change, value)

    def contextMenuEvent(self, event):
        self.view().guiOnNodeRightClick(self, event)

    def onSelected(self):
        if self.isSelected():
            self._shapePen.setStyle(Qt.SolidLine)
            self.view().guiOnNodeSelected(self)

        else:
            self._shapePen.setStyle(Qt.NoPen)
            self.view().guiOnNodeDeselected(self)

    def paint(self, painter, option, widget):
        shape = QPainterPath()
        shape.addRoundedRect(self.rect(), self._roundness, self._roundness)

        painter.setPen(self._shapePen)
        painter.setBrush(self._brush)
        painter.drawPath(shape)

    def setPos(self, *pos):
        if len(pos) == 1:
            point = QPointF(pos[0])

        else:
            point = QPointF(*pos)

        self._lastPos = point

        QGraphicsWidget.setPos(self, point)

    def mouseDoubleClickEvent(self, event):
        pass

    def mousePressEvent(self, event):
        if event.button() == Qt.RightButton:
            pass

        else:
            QGraphicsWidget.mousePressEvent(self, event)

    def mouseReleaseEvent(self, event):
        self.view().guiOnFinishedMove()

        QGraphicsWidget.mouseReleaseEvent(self, event)

    def mouseMoveEvent(self, event):
        QGraphicsWidget.mouseMoveEvent(self, event)

    def dragMoveEvent(self, *args, **kwargs):
        pass

    def getSocketRow(self, name):
        return self._socketRows[name]

    def refreshSocketRows(self):
        for socket_row in self._socketRows.values():
            socket_row.refresh()

    def updateLayout(self):
        label_width = self._label.boundingRect().width()
        width = label_width
        y_pos = self._label.boundingRect().bottom() + self._spacingConstant

        for socket_row in self._socketRows.values():
            if socket_row.isVisible():
                socket_row.updateLayout()

                socket_row.setPos(self._spacingConstant, y_pos)
                height = socket_row.boundingRect().height()

                y_pos += height

                attributeWidth = socket_row.boundingRect().width()
                if attributeWidth > width:
                    width = attributeWidth

        for socket_row in self._socketRows.values():
            if socket_row.isVisible():
                hook = socket_row.socket()
                if hook.isOutput():
                    hook.setPos(width - hook.boundingRect().width(), hook.pos().y())

        width = self._spacingConstant + width + self._spacingConstant
        self._label.setPos((width - label_width) / 2.0, self._spacingConstant)

        self.resize(width, y_pos + self._spacingConstant)
        self.update()
Example #30
0
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.configOptions, self.checkBoxList, self.configBool = {}, {}, None
        # Check for root privileges
        if geteuid() != 0:
            msg = ("{} is not root. You need to run with root priviliges\n"
                   "Please use kdesudo, gksu or sudo/sux.").format(getuser())
            QMessageBox.critical(self, __doc__ + "- Error", msg)
            sys.exit(1)
        else:
            msg = "This tool is running with root priviliges."
            QMessageBox.warning(self, __doc__ + "- Warning", msg)
        # title, icon and sizes
        self.setWindowTitle(__doc__)
        self.setMinimumSize(400, 400)
        self.setMaximumSize(2048, 2048)
        self.resize(600, 600)
        self.setWindowIcon(QIcon.fromTheme("preferences-system"))
        self.menuBar().addMenu("&File").addAction("Exit", exit)
        QShortcut("Ctrl+q", self, activated=lambda: self.close())
        # main group
        main_group = QGroupBox("Module configuration")
        self.setCentralWidget(main_group)
        self.layout = QVBoxLayout(main_group)
        # scrollarea widgets
        self.scrollArea, self.window = QScrollArea(), QWidget()
        self.layout.addWidget(self.scrollArea)
        self.vbox = QVBoxLayout(self.window)
        # Graphic effect
        glow = QGraphicsDropShadowEffect(self)
        glow.setOffset(0)
        glow.setBlurRadius(99)
        glow.setColor(QColor(99, 255, 255))
        self.scrollArea.setGraphicsEffect(glow)
        glow.setEnabled(True)
        # config loading stuff
        self.findConfig(CONFIG_DIR)
        for eachOption in tuple(self.configOptions.keys()):

            self.readConfig(eachOption, self.configOptions)
            self.subLayout = QHBoxLayout()

            self.checkBoxName = "checkBox_" + eachOption
            checkBoxList = QCheckBox(self.checkBoxName, self)
            self.checkBoxList[self.checkBoxName] = checkBoxList
            checkBoxList.setObjectName(self.checkBoxName)
            checkBoxList.setText("Enable module {}".format(eachOption))

            if self.tooltip is not '':
                checkBoxList.setToolTip(self.tooltip)
            else:
                tooltip = "Configuration settings for {}".format(eachOption)
                checkBoxList.setToolTip(tooltip)

            if self.configBool:
                checkBoxList.setChecked(True)

            self.subLayout.addWidget(checkBoxList)
            self.vbox.addLayout(self.subLayout)
        self.scrollArea.setWidget(self.window)

        # Bottom Buttons Bar
        self.pushButtonSleep = QPushButton("Sleep")
        self.pushButtonSleep.setToolTip("Trigger Suspend to RAM aka Sleep")
        self.pushButtonSleep.clicked.connect(self.sleep)
        self.pushButtonHibernate = QPushButton("Hibernate")
        self.pushButtonHibernate.setToolTip("Trigger Suspend to Disk Hibernate")
        self.pushButtonHibernate.clicked.connect(self.hibernate)
        self.buttonBox = QDialogButtonBox()
        self.buttonBox.setStandardButtons(
            QDialogButtonBox.Ok | QDialogButtonBox.Close |
            QDialogButtonBox.Help)
        self.buttonBox.addButton(self.pushButtonHibernate,
                                 QDialogButtonBox.ActionRole)
        self.buttonBox.addButton(self.pushButtonSleep,
                                 QDialogButtonBox.ActionRole)
        self.layout.addWidget(self.buttonBox)
        self.buttonBox.rejected.connect(exit)
        self.buttonBox.accepted.connect(self.writeConfig)
        self.buttonBox.helpRequested.connect(lambda: open_new_tab(WEBPAGE_URL))
Example #31
0
class MyWin(QWidget):
    height = 600
    width = 1000

    def __init__(self):
        super(MyWin, self).__init__()
        self.initGUI()
        self.searchterms = []
        self.setWindowTitle('Google')
        self.setWindowIcon(QIcon('googleicon.png'))
        self.setGeometry(40, 40, self.width, self.height)
        self.setFixedWidth(950)
        self.setFixedHeight(550)
        self.show()

    def initGUI(self):

        # Widgets
        self.copy = QLabel(self)
        self.search = QLineEdit(self)
        self.search.setFixedWidth(450)

        btn0 = QPushButton("Google Search")
        btn1 = QPushButton("I'm feeling Lucky")
        btn0.clicked.connect(self.newQLabel)
        btn1.clicked.connect(self.sorry)
        btn0.setFont(QFont('Arial', 13, QFont.Bold))
        btn1.setFont(QFont('Arial', 13, QFont.Bold))
        btn0.setStyleSheet("""
            QPushButton {
                background-color: #F1F1F1;
                color: #757575;
                margin-left: 310px;
                padding-left: 15px;
                padding-right: 15px;
                padding-top: 10px;
                padding-bottom: 10px;
                margin-top: 20px;
                margin-bottom: 100px;
                border: none;
            }
            QPushButton:hover {
            color: black;
            border: 1px solid darkgrey;
            }
        """)

        btn1.setStyleSheet("""
            QPushButton {
                background-color: #F1F1F1;
                color: #757575;
                margin-right: 310px;
                font-style: Arial Bold;
                padding-left: 15px;
                padding-right: 15px;
                padding-top: 10px;
                padding-bottom: 10px;
                margin-top: 20px;
                margin-bottom: 100px;
                border: none;
            }
            QPushButton:hover {
            color: black;
            border: 1px solid darkgrey;
            }
        """)

        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(50)
        self.search.setGraphicsEffect(self.shadow)

        self.search.setStyleSheet("""
            QLineEdit {
            border: 1px solid #C9C9C9;
            padding: 12px;
            font-size: 15px;
            }
        """)
        self.image = QLabel(self)
        pixmap = QPixmap('googlelogo.png')
        pixmap = pixmap.scaledToWidth(300)
        self.image.setStyleSheet("""
            QLabel {
            padding-bottom: 30px;
            qproperty-alignment: AlignCenter;
            }
        """)
        self.image.setPixmap(pixmap)

        # Layout
        layout = QVBoxLayout()
        layout.addWidget(self.image, alignment=Qt.AlignBottom)
        layout.addWidget(self.search, alignment=Qt.AlignJustify)
        buttonLayout = QHBoxLayout()
        buttonLayout.addWidget(btn0, alignment=Qt.AlignLeft)
        buttonLayout.addWidget(btn1, alignment=Qt.AlignRight)
        layout.addLayout(buttonLayout)
        self.setLayout(layout)
        self.show()

    def newQLabel(self):
        newlabel = QLabel(self.search.text(), self)
        newlabel.move(randint(30, 920), randint(30, 520))
        self.searchterms.append(newlabel)
        newlabel.setMaximumWidth(
            100)  # I could not get this to work... Some Queries get cut off.
        newlabel.setStyleSheet("""
            QLabel {
                font-size: 15px;
            }
            """)
        newlabel.show()
        self.search.clear()

    def keyPressEvent(self, event):
        key = event.key()
        if key == Qt.Key_Return:
            self.newQLabel()

    def sorry(self):
        QMessageBox.about(
            self, "Sorry!",
            "Service currently not available. \nWe are working hard on getting it fixed. \nSorry for any inconvenience."
        )
class MainWindow(QMainWindow):

    """Voice Changer main window."""

    def __init__(self, parent=None):
        super(MainWindow, self).__init__()
        self.statusBar().showMessage("Move Dial to Deform Microphone Voice !.")
        self.setWindowTitle(__doc__)
        self.setMinimumSize(240, 240)
        self.setMaximumSize(480, 480)
        self.resize(self.minimumSize())
        self.setWindowIcon(QIcon.fromTheme("audio-input-microphone"))
        self.tray = QSystemTrayIcon(self)
        self.center()
        QShortcut("Ctrl+q", self, activated=lambda: self.close())
        self.menuBar().addMenu("&File").addAction("Quit", lambda: exit())
        self.menuBar().addMenu("Sound").addAction(
            "STOP !", lambda: call('killall rec', shell=True))
        windowMenu = self.menuBar().addMenu("&Window")
        windowMenu.addAction("Hide", lambda: self.hide())
        windowMenu.addAction("Minimize", lambda: self.showMinimized())
        windowMenu.addAction("Maximize", lambda: self.showMaximized())
        windowMenu.addAction("Restore", lambda: self.showNormal())
        windowMenu.addAction("FullScreen", lambda: self.showFullScreen())
        windowMenu.addAction("Center", lambda: self.center())
        windowMenu.addAction("Top-Left", lambda: self.move(0, 0))
        windowMenu.addAction("To Mouse", lambda: self.move_to_mouse_position())
        # widgets
        group0 = QGroupBox("Voice Deformation")
        self.setCentralWidget(group0)
        self.process = QProcess(self)
        self.process.error.connect(
            lambda: self.statusBar().showMessage("Info: Process Killed", 5000))
        self.control = QDial()
        self.control.setRange(-10, 20)
        self.control.setSingleStep(5)
        self.control.setValue(0)
        self.control.setCursor(QCursor(Qt.OpenHandCursor))
        self.control.sliderPressed.connect(
            lambda: self.control.setCursor(QCursor(Qt.ClosedHandCursor)))
        self.control.sliderReleased.connect(
            lambda: self.control.setCursor(QCursor(Qt.OpenHandCursor)))
        self.control.valueChanged.connect(
            lambda: self.control.setToolTip(f"<b>{self.control.value()}"))
        self.control.valueChanged.connect(
            lambda: self.statusBar().showMessage(
                f"Voice deformation: {self.control.value()}", 5000))
        self.control.valueChanged.connect(self.run)
        self.control.valueChanged.connect(lambda: self.process.kill())
        # Graphic effect
        self.glow = QGraphicsDropShadowEffect(self)
        self.glow.setOffset(0)
        self.glow.setBlurRadius(99)
        self.glow.setColor(QColor(99, 255, 255))
        self.control.setGraphicsEffect(self.glow)
        self.glow.setEnabled(False)
        # Timer to start
        self.slider_timer = QTimer(self)
        self.slider_timer.setSingleShot(True)
        self.slider_timer.timeout.connect(self.on_slider_timer_timeout)
        # an icon and set focus
        QLabel(self.control).setPixmap(
            QIcon.fromTheme("audio-input-microphone").pixmap(32))
        self.control.setFocus()
        QVBoxLayout(group0).addWidget(self.control)
        self.menu = QMenu(__doc__)
        self.menu.addAction(__doc__).setDisabled(True)
        self.menu.setIcon(self.windowIcon())
        self.menu.addSeparator()
        self.menu.addAction(
            "Show / Hide",
            lambda: self.hide() if self.isVisible() else self.showNormal())
        self.menu.addAction("STOP !", lambda: call('killall rec', shell=True))
        self.menu.addSeparator()
        self.menu.addAction("Quit", lambda: exit())
        self.tray.setContextMenu(self.menu)
        self.make_trayicon()

    def run(self):
        """Run/Stop the QTimer."""
        if self.slider_timer.isActive():
            self.slider_timer.stop()
        self.glow.setEnabled(True)
        call('killall rec ; killall play', shell=True)
        self.slider_timer.start(3000)

    def on_slider_timer_timeout(self):
        """Run subprocess to deform voice."""
        self.glow.setEnabled(False)
        value = int(self.control.value()) * 100
        command = f'play -q -V0 "|rec -q -V0 -n -d -R riaa bend pitch {value} "'
        print(f"Voice Deformation Value: {value}")
        print(f"Voice Deformation Command: {command}")
        self.process.start(command)
        if self.isVisible():
            self.statusBar().showMessage("Minimizing to System TrayIcon", 3000)
            print("Minimizing Main Window to System TrayIcon now...")
            sleep(3)
            self.hide()

    def center(self):
        """Center Window on the Current Screen,with Multi-Monitor support."""
        window_geometry = self.frameGeometry()
        mousepointer_position = QApplication.desktop().cursor().pos()
        screen = QApplication.desktop().screenNumber(mousepointer_position)
        centerPoint = QApplication.desktop().screenGeometry(screen).center()
        window_geometry.moveCenter(centerPoint)
        self.move(window_geometry.topLeft())

    def move_to_mouse_position(self):
        """Center the Window on the Current Mouse position."""
        window_geometry = self.frameGeometry()
        window_geometry.moveCenter(QApplication.desktop().cursor().pos())
        self.move(window_geometry.topLeft())

    def make_trayicon(self):
        """Make a Tray Icon."""
        if self.windowIcon() and __doc__:
            self.tray.setIcon(self.windowIcon())
            self.tray.setToolTip(__doc__)
            self.tray.activated.connect(
                lambda: self.hide() if self.isVisible()
                else self.showNormal())
            return self.tray.show()
Example #33
0
    def __init__(self, core, jobs_ctx, event_bus, **kwargs):
        super().__init__(**kwargs)
        self.setupUi(self)

        self.jobs_ctx = jobs_ctx
        self.core = core
        self.event_bus = event_bus

        self.menu = MenuWidget(parent=self)
        self.widget_menu.layout().addWidget(self.menu)

        for e in self.NOTIFICATION_EVENTS:
            self.event_bus.connect(e, self.handle_event)

        self.menu.organization = self.core.device.organization_addr.organization_id
        self.menu.username = self.core.device.user_id
        self.menu.device = self.core.device.device_name
        self.menu.organization_url = str(self.core.device.organization_addr)

        self.new_notification.connect(self.on_new_notification)
        self.menu.files_clicked.connect(self.show_mount_widget)
        self.menu.users_clicked.connect(self.show_users_widget)
        self.menu.devices_clicked.connect(self.show_devices_widget)
        self.menu.logout_clicked.connect(self.logout_requested.emit)
        self.connection_state_changed.connect(
            self._on_connection_state_changed)

        self.widget_title2.hide()
        self.widget_title3.hide()
        self.title2_icon.apply_style()
        self.title3_icon.apply_style()

        effect = QGraphicsDropShadowEffect(self)
        effect.setColor(QColor(100, 100, 100))
        effect.setBlurRadius(4)
        effect.setXOffset(-2)
        effect.setYOffset(2)
        self.widget_notif.setGraphicsEffect(effect)

        self.mount_widget = MountWidget(self.core,
                                        self.jobs_ctx,
                                        self.event_bus,
                                        parent=self)
        self.widget_central.layout().insertWidget(0, self.mount_widget)
        self.mount_widget.folder_changed.connect(self._on_folder_changed)

        self.users_widget = UsersWidget(self.core,
                                        self.jobs_ctx,
                                        self.event_bus,
                                        parent=self)
        self.widget_central.layout().insertWidget(0, self.users_widget)

        self.devices_widget = DevicesWidget(self.core,
                                            self.jobs_ctx,
                                            self.event_bus,
                                            parent=self)
        self.widget_central.layout().insertWidget(0, self.devices_widget)

        self._on_connection_state_changed(self.core.backend_conn.status,
                                          self.core.backend_conn.status_exc)
        self.show_mount_widget()
class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui = Ui_MainWindow()
        self.setGeometry(200, 100, 0, 0)
        self.ui.setupUi(self)
        self.functions = UIFunctions(self)

        ## REMOVE ==> STANDARD TITLE BAR
        self.functions.removeTileBare()

        self.ui.frame_top.mouseDoubleClickEvent = self.functions.dobleClickMaximizeRestore
        self.mousePressEvent = self.functions.mousePressEvent
        self.ui.frame_top.mouseMoveEvent = self.functions.moveWindow

        ## ==> CREATE MENUS
        ########################################################################

        ## ==> START PAGE in Stacked Widget
        self.ui.stackedWidget.setCurrentWidget(self.ui.page_home)
        self.functions.labelPage("Home")

        ## Stacked Widget Switching Pages
        self.ui.home_btn.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_home))
        self.ui.home_btn.clicked.connect(
            lambda: self.functions.labelPage("Home"))

        self.ui.about_btn.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_about))
        self.ui.about_btn.clicked.connect(
            lambda: self.functions.labelPage("About"))

        self.ui.sorting_btn.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_sorting
                                                           ))
        self.ui.sorting_btn.clicked.connect(
            lambda: self.functions.labelPage("Sorting"))

        self.ui.tree_btn.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_tree))
        self.ui.tree_btn.clicked.connect(
            lambda: self.functions.labelPage("Tree"))

        self.ui.linkedlist_btn.clicked.connect(
            lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.
                                                           page_linkedlist))
        self.ui.linkedlist_btn.clicked.connect(
            lambda: self.functions.labelPage("LinkedList"))

        ## ==> TOGGLE MENU
        self.ui.btn_toggle.clicked.connect(
            lambda: self.functions.toggleMenu(50, 30, "frame_left_menu"))

        ## SHOW ==> DROP SHADOW
        self.shadow = QGraphicsDropShadowEffect(self)
        self.shadow.setBlurRadius(17)
        self.shadow.setXOffset(0)
        self.shadow.setYOffset(0)
        self.shadow.setColor(QColor(0, 0, 0, 150))
        self.ui.frame_main.setGraphicsEffect(self.shadow)

        # CLOSE WINDOW
        self.ui.btn_close.clicked.connect(lambda: self.close())

        ## ==> MAXIMIZE/RESTORE
        self.ui.btn_maximize_restore.clicked.connect(
            lambda: self.functions.maximize_restore())

        # MINIMIZE
        self.ui.btn_minimize.clicked.connect(lambda: self.showMinimized())

        ## ==> RESIZE WINDOW
        self.sizegrip = QSizeGrip(self.ui.frame_size_grip)
Example #35
0
 def __init__(self, title, *args, **kwargs):
     super(Title, self).__init__(title, *args, **kwargs)
     shadow = QGraphicsDropShadowEffect()
     shadow.setBlurRadius(8)
     shadow.setOffset(2.5, 2.5)
     self.setGraphicsEffect(shadow)