def get_shadow(): """ Returns shadow effect. """ shadow = QGraphicsDropShadowEffect() shadow.setBlurRadius(10) shadow.setXOffset(0) shadow.setYOffset(0) return shadow
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)
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)
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)
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("删除")]
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)
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)
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
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)
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
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()
def shadow(self): shadow = QGraphicsDropShadowEffect() shadow.setBlurRadius(self.shadowSize) shadow.setOffset(self.shadowOffset) self.text.setGraphicsEffect(shadow)
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()
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))
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
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)
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()
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)
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)
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)
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)
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 __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()
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"))
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)
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))
def set_shadow_effect(widget): effect = QGraphicsDropShadowEffect() effect.setOffset(1, 1) effect.setBlurRadius(35) effect.setColor(Qt.darkGray) widget.setGraphicsEffect(effect)
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)
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()
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))
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()
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)
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)