def internalSetContents(self, widget, useContentsGeometry=True): if self.contents != None: if self.contents.parentWidget() == self: self.contents.setParent(None) self.layout.removeWidget(self.sizeGrip) self.layout.removeWidget(self.contents) self.layout.removeWidget(self.titleBar) self.contents.removeEventFilter(self) self.contents.windowTitleChanged.disconnect(self.setWindowTitle) self.contents.windowIconChanged.disconnect(self.onIconChange) self.contents = widget if self.contents != None: self.contents.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) if self.contents.testAttribute(QtCore.Qt.WA_QuitOnClose): self.contents.setAttribute(QtCore.Qt.WA_QuitOnClose, False) self.setAttribute(QtCore.Qt.WA_QuitOnClose) self.setAttribute( QtCore.Qt.WA_DeleteOnClose, self.contents.testAttribute(QtCore.Qt.WA_DeleteOnClose)) self.setWindowTitle(self.contents.windowTitle()) self.setWindowIcon(self.contents.windowIcon()) self.contents.installEventFilter(self) self.contents.windowTitleChanged.connect(self.setWindowTitle) self.contents.windowIconChanged.connect(self.onIconChange) if useContentsGeometry: self.contents.show() self.setGeometry(self.contents.geometry()) self.contents.setParent(self) else: self.contents.setParent(self) self.contents.show() self.updateWindowFlags() self.ensureTitleBar() self.layout.addWidget(self.titleBar) self.layout.addWidget(self.contents) if self.sizeGrip == None: self.sizeGrip = QSizeGrip(self) self.sizeGrip.setMaximumHeight(2) import sys if sys.platform == 'darwin': self.layout.addWidget(self.sizeGrip, 2) # osx else: self.layout.addWidget(self.sizeGrip, 2, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight) # window self.contentsChanged.emit(self.contents)
def __init__(self, parent): QSizeGrip.__init__(self, parent) self.__corner = Qt.BottomRightCorner self.resize(self.sizeHint()) self.__updatePos()
def uiDefinitions(self): # Remove Title Bar self.setWindowFlag(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # Set Drop Shadow Window self.shadow = QGraphicsDropShadowEffect(self) self.shadow.setBlurRadius(20) self.shadow.setXOffset(0) self.shadow.setYOffset(0) self.shadow.setColor(QColor(0, 0, 0, 100)) # Apply Drop Shadow Frame self.ui.frame_background.setGraphicsEffect(self.shadow) # Maximize / Restore self.ui.btn_maximize.clicked.connect(lambda: self.maximize_restore()) # Minimize self.ui.btn_minimize.clicked.connect(lambda: self.showMinimized()) # Close self.ui.btn_close.clicked.connect(lambda: self.close()) # Create size grip to resize window self.sizegrip = QSizeGrip(self.ui.frame_grip) self.sizegrip.setStyleSheet( "QSizeGrip { width: 10px; height: 10px; margin: 5px } QSizeGrip:hover { background-color: rgb(50, 42, 94) }" )
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.config = Config() self.setWindowFlag(QtCore.Qt.FramelessWindowHint) self.tabWidget = QTabWidget() self._mainLayout = QVBoxLayout() self._topBar = QHBoxLayout() self.windowCloseButton = QPushButton() self.windowCloseButton.setText("X") self.windowCloseButton.setFixedWidth(25) self.windowCloseButton.setFixedHeight(25) self.windowCloseButton.clicked.connect(lambda: self.close()) self._windowMoveLine = QFrame() self._windowMoveLine.setFrameShadow(QFrame.Plain) self._windowMoveLine.setStyleSheet("background: black;") self._windowMoveLine.setFrameShape(QFrame.HLine) self._windowMoveLine.setMinimumSize(10, 10) self._topBar.addWidget(self._windowMoveLine) self._topBar.addWidget((self.windowCloseButton)) self._mainLayout.addLayout(self._topBar) self._mainLayout.addWidget(self.tabWidget) self.setLayout(self._mainLayout) self._windowMoveLine.mousePressEvent = self.windowBarMove self._windowMoveLine.mouseMoveEvent = self.windowBarMove try: self.config = pickle.load(open('config.pkl', 'rb')) except: print("error opening Config File") self.isRoboKittyConnected = False self.areMotorsEnabled = False self.RearRightShoulder = None # type:AX12A self.RearRightFemur = None # type:AX12A self.RearRightLeg = None # type:AX12A self.RearLeftShoulder = None # type:AX12A self.RearLeftFemur = None # type:AX12A self.RearLeftLeg = None # type:AX12A self.FrontLeftShoulder = None # type:AX12A self.FrontLeftFemur = None # type:AX12A self.FrontLeftLeg = None # type:AX12A self.FrontRightShoulder = None # type:AX12A self.FrontRightFemur = None # type:AX12A self.FrontRightLeg = None # type:AX12A self.ax12aInstances = [] AX12A.debugEnabled = False sizeGrip = QSizeGrip(self) sizeGrip.setVisible(True) self._mainLayout.addWidget( sizeGrip, 0, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight) self.setupUi(self.tabWidget) self.tabWidget.setCurrentIndex(1) self.init()
def setupUi(self, MainWindow): Ui_MainWindow.setupUi(self, MainWindow) ## REMOVE TITLE BAR self.setWindowFlag(QtCore.Qt.FramelessWindowHint) # self.setAttribute(QtCore.Qt.WA_TranslucentBackground) ## 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.frame_main.setGraphicsEffect(self.shadow) # # ==> RESIZE WINDOW self.sizegrip = QSizeGrip(self.frame_size_grip) self.sizegrip.setStyleSheet( "width: 20px; height: 20px; margin 0px; padding: 0px;") ### ==> MINIMIZE self.btn_minimize.clicked.connect(lambda: self.showMinimized()) ## ==> MAXIMIZE/RESTORE self.btn_maximize_restore.clicked.connect( lambda: self.maximize_restore()) ## SHOW ==> CLOSE APPLICATION self.btn_close.clicked.connect(lambda: self.close()) ## TAB ==> tabs button click events self.pushButton_home.clicked.connect(lambda: self.switch_tab("home")) self.pushButton_crawler.clicked.connect( lambda: self.switch_tab("crawler")) self.pushButton_comments.clicked.connect( lambda: self.switch_tab("comments")) self.pushButton_commandInjection.clicked.connect( lambda: self.switch_tab("command_injection")) self.pushButton_localFileInclusion.clicked.connect( lambda: self.switch_tab("local_file_inclusion")) self.pushButton_sqlInjection.clicked.connect( lambda: self.switch_tab("sql_injection")) self.pushButton_stored_xssInjection.clicked.connect( lambda: self.switch_tab("xss_injection")) ##Upload file url events self.pushButton_url_file_open.clicked.connect(self.browse_url_file) ##Crawling event self.pushButton_start_crawling.clicked.connect(self.start_crawling) ##log sys.stdout = ConsoleLog(self.plainTextEdit_home_log, "color:rgb(85, 255, 127);") sys.stderr = ConsoleLog(self.plainTextEdit_home_log, "color:rgb(225, 0, 0);")
def __init__(self): super().__init__() self.title = "PyQt5 - Frameless Window" self.left = 500 self.top = 200 self.width = 200 self.height = 200 self.iconName = "_imagens/mouse.ico" self.setWindowTitle(self.title) self.setWindowIcon(QtGui.QIcon(self.iconName)) self.setGeometry(self.left, self.top, self.width, self.height) flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) vbox = QVBoxLayout() sizegrip = QSizeGrip(self) vbox.addWidget(sizegrip) self.setLayout(vbox) self.show()
def __init__(self): super(Ventana, self).__init__() self.app = Ui_MainWindow() self.app.setupUi(self) self.dragPos = QPoint() self.app.btn_exportar.setEnabled(False) self.app.grip = QSizeGrip(self.app.Grip) # ----- Datos ------ self.fila_num = 0 self.fila_value = 0 def moverVentana(event): if event.buttons() == Qt.LeftButton: self.move(self.pos() + event.globalPos() - self.dragPos) self.dragPos = event.globalPos() event.accept() self.app.Ventana.mouseMoveEvent = moverVentana # Botones Ventana. self.app.btn_verde.clicked.connect(lambda: self.ControlWindow()) self.app.btn_amarillo.clicked.connect( lambda: events.minimizarVentana(self)) self.app.btn_rojo.clicked.connect(lambda: events.cerrarVentana(self)) # Botones funcionales self.app.btn_abrir.clicked.connect(lambda: self.getChat()) self.app.btn_exportar.clicked.connect( lambda: events.exportarChat(self.fila_num, self.fila_value)) self.control_ventana = 0
def __init__(self): super().__init__() self.title = "PyQt5 Size Grip" self.top = 200 self.left = 500 self.width = 640 self.height = 480 self.setWindowTitle(self.title) self.setWindowIcon(QtGui.QIcon("icon.png")) self.setGeometry(self.left, self.top, self.width, self.height) flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) vboxlayout = QVBoxLayout() sizegrip = QSizeGrip(self) #sizegrip.setVisible(True) vboxlayout.addWidget(sizegrip) self.setLayout(vboxlayout) self.show()
def __init__(self, controller): super().__init__() self.main_controller = controller # create and setup Window from Ui_MainWindow Model self.setupUi(self) # set startsize and minimum size start_size = QSize(1000, 720) self.dragPos = QtCore.QPoint(300, 25) self.resize(start_size) self.setMinimumSize(start_size) # set flags to the window flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint) self.setWindowFlags(flags) # connenct the buttons self.btn_close.clicked.connect(lambda: self.close()) self.btn_maximise_restore.clicked.connect( lambda: self.main_controller.change_window_format()) self.btn_minimize.clicked.connect(lambda: self.minimize()) self.btn_tgl_menu.clicked.connect(lambda: self.change_sidemenu()) #create function that handles window_drag events def move_window(event): self.main_controller.on_drag_window() if event.buttons() == Qt.LeftButton: self.move(self.pos() + event.globalPos() - self.dragPos) self.dragPos = event.globalPos() event.accept() self.frame_header_top.mouseMoveEvent = move_window #connect frame to sizegrip self.sizegrip = QSizeGrip(self.frame_size_grip) self.sizegrip.setStyleSheet( "width: 20px; height: 20px; margin 0px; padding: 0px;") # SHOW ==> MAIN WINDOW self.show()
def __init__(self, filename, title, parent=None): super(ImagePlayer, self).__init__() #set screen save self.settings = QSettings('settings.ini', QSettings.IniFormat) # set up exit action quitAction = QAction("E&xit", self, shortcut="Ctrl+Q", triggered=self.close) self.addAction(quitAction) self.setContextMenuPolicy(Qt.ActionsContextMenu) # Load the file into a QMovie self.movie = QMovie(filename, QByteArray(), self) #size = self.movie.scaledSize() self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnBottomHint) self.setAttribute(Qt.WA_TranslucentBackground) #self.resize(self.settings.value("size", QSize(size.width, size.height))) self.move(self.settings.value("pos", QPoint(50, 50))) #self.setGeometry(parser.getint('screen_position', 'x'), parser.getint('screen_position', 'y'), size.width(), size.height()) self.setWindowTitle(title) self.movie_screen = QLabel() # Make label fit the gif self.movie_screen.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.movie_screen.setAlignment(Qt.AlignCenter) self.movie_screen.setScaledContents( True) #allow image to scale with label self.setMinimumSize(QSize(200, 150)) #restrict it to a min size self.movie_screen.setStyleSheet(open('style.css').read()) # Create the layout main_layout = QVBoxLayout() sizegrip = QSizeGrip( self) #enable size grip for scaling borderless window main_layout.addWidget(self.movie_screen) main_layout.addWidget(sizegrip, 0, Qt.AlignBottom | Qt.AlignRight) self.setLayout(main_layout) # Add the QMovie object to the label self.movie.setCacheMode(QMovie.CacheAll) self.movie.setSpeed(self.settings.value( "playspeed", 30, type=int)) #set relative playback speed percentage self.movie_screen.setMovie(self.movie) self.movie.start() self.movie.loopCount() self.timer = QTimer(self) self.timer.singleShot(2000, self.GetMap) self.timer.timeout.connect(self.GetMap) self.timer.start(901000) #milliseconds. 1000 is 1 second
def UIaction(self): cetralwidget = QWidget() self.setCentralWidget(cetralwidget) cenlay = QVBoxLayout() cetralwidget.setLayout(cenlay) flags = Qt.WindowFlags(Qt.FramelessWindowHint) self.setWindowFlags(flags) szgrip = QSizeGrip(self) cenlay.addWidget(szgrip)
def sizegrips(self): """adds sizegrips""" self.sizegrip1 = QSizeGrip(self) self.sizegrip1.setVisible(True) self.sizegrip2 = QSizeGrip(self) self.sizegrip2.setVisible(True) self.sizegrip3 = QSizeGrip(self) self.sizegrip3.setVisible(True) self.sizegrip4 = QSizeGrip(self) self.sizegrip4.setVisible(True)
def __init__(self, parent=None): super(ResizableRubberBand, self).__init__(parent) self.draggable = True self.dragging_threshold = 0 self.mousePressPos = None self.mouseMovePos = None self.borderRadius = 5 self.setWindowFlags(Qt.SubWindow) layout = QHBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) self.grip2 = QSizeGrip(self) self.grip2.setFixedSize(15, 15) layout.addWidget(self.grip2, 0, Qt.AlignRight | Qt.AlignBottom) self.band = QRubberBand(QRubberBand.Rectangle, self) self.band.show() self.show()
def uiDefinitions(self): def dobleClickMaximizeRestore(event): # IF DOUBLE CLICK CHANGE STATUS ==> Üst kısıma 2 kere basıldığında tam ekran yapma if event.type() == QtCore.QEvent.MouseButtonDblClick: QtCore.QTimer.singleShot(250, lambda: self.maximize_restore()) ## REMOVE ==> STANDARD TITLE BAR ==> standart ekran boyutu if GLOBAL_TITLE_BAR: self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.ui.frame_label_top_btns.mouseDoubleClickEvent = dobleClickMaximizeRestore else: self.ui.horizontalLayout.setContentsMargins(0, 0, 0, 0) self.ui.frame_label_top_btns.setContentsMargins(8, 0, 0, 5) self.ui.frame_label_top_btns.setMinimumHeight(42) self.ui.frame_icon_top_bar.hide() self.ui.frame_btns_right.hide() self.ui.frame_size_grip.hide() ## SHOW ==> DROP SHADOW ==> gölge düşürme 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) ## ==> RESIZE WINDOW ==>Ana Ekran Boyutlandırma self.sizegrip = QSizeGrip(self.ui.frame_size_grip) self.sizegrip.setStyleSheet( "width: 20px; height: 20px; margin 0px; padding: 0px;") ### ==> MINIMIZE ==> Minumum butonuna basıldığında self.ui.btn_minimize.clicked.connect(lambda: self.showMinimized()) ## ==> MAXIMIZE/RESTORE ==> Maximum butonuna basıldığında self.ui.btn_maximize_restore.clicked.connect( lambda: self.maximize_restore()) ## SHOW ==> CLOSE APPLICATION ==> Kapatma butonuna basıldığında self.ui.btn_close.clicked.connect(lambda: self.close())
def __init__(self, ): super().__init__(parent=None) self._widget = None self._timer = QTimer(self) self._old_pos = None self._widget = None self._size_grip = QSizeGrip(self) self._timer.timeout.connect(self.__on_timeout) # setup window layout self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) self._size_grip.setFixedSize(20, 20) self._layout = QVBoxLayout(self) self._layout.setContentsMargins(0, 0, 0, 0) self._layout.setSpacing(0) self._layout.addWidget(self._size_grip) self._layout.setAlignment(self._size_grip, Qt.AlignBottom | Qt.AlignRight) self.setMouseTracking(True)
def InitWindow(self): self.setWindowIcon(QtGui.QIcon(self.iconName)) self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) vbox = QVBoxLayout() sizegrip = QSizeGrip(self) vbox.addWidget(sizegrip) self.setLayout(vbox) self.show()
def Interface(self): flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) sizegrip = QSizeGrip(self) v_box = QVBoxLayout() v_box.addWidget(sizegrip) self.setLayout(v_box)
def __init__(self, parent=None): super().__init__(parent=parent) self._border_radius = 10 self.label = QLabel('...', self) self._size_grip = QSizeGrip(self) self._size_grip.setFixedWidth(self._border_radius * 2) font = self.font() font.setPointSize(24) self.label.setFont(font) self.label.setAlignment(Qt.AlignBaseline | Qt.AlignVCenter | Qt.AlignHCenter) self.label.setWordWrap(False) self._layout = QHBoxLayout(self) self._layout.setContentsMargins(0, 0, 0, 0) self._layout.setSpacing(0) self._layout.addSpacing(self._border_radius * 2) self._layout.addWidget(self.label) self._layout.addWidget(self._size_grip) self._layout.setAlignment(self._size_grip, Qt.AlignBottom)
def __init__(self, control, screens: list) -> None: super().__init__(flags=Qt.FramelessWindowHint) self.setWindowTitle("My player") self.control = control self.mainWidget = MainWidget(self.control, self, screens) color = QPalette() color.setColor(QPalette.Background, QColor(20, 20, 20)) self.setPalette(color) self.setCentralWidget(self.mainWidget) self.menuBar = self.mainWidget.menus self.setMinimumSize(1000, 800) self.setFocusPolicy(Qt.StrongFocus) self.setMouseTracking(True) self.timer = QTimer() self.timer.setInterval(200) self.timer.timeout.connect(self.getMousePos) self.timer.start() self.move((screens[0].geometry().width() - self.width()) // 2, (screens[0].geometry().height() - self.height()) // 2) self.right = self.left = self.up = self.down = False self.start = QPoint(0, 0) self.gripSize = 10 self.grips = [] self.pressedForMenuBar = False for i in range(4): grip = QSizeGrip(self) grip.setStyleSheet("background-color: transparent") grip.resize(self.gripSize, self.gripSize) self.grips.append(grip)
def createUi(self): self.ui = Ui_MainWindow() self.fontsDB = QFontDatabase() self.ui.setupUi(self) self.move(50, 50) self.setAcceptDrops(True) self.last_font = None # transparent self.setAttribute(Qt.WA_DeleteOnClose, True) self.setAttribute(Qt.WA_TranslucentBackground, True) #self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) self.setStyleSheet("background: transparent; border: none;") self.oldPos = self.pos() seizGrip = QSizeGrip(self) self.ui.sldTrans.setValue(99) self.text_background_color = "#333333" #self.text_background_color = "transparent" self.text_color = "#FFFEEE" # disable observe checkbox on start self.ui.chkObserve.setEnabled(False) self.ui.chkHB.setEnabled(False) self.setAcceptDrops(True) self.ui.textEdit.setAcceptDrops(False) self.ui.cmbTextSamples.currentIndexChanged.connect(self.setSampleText) self.ui.cmbFontSize.currentIndexChanged.connect(self.setFontSize) self.observer.fileChanged.connect(self.setTextFont) self.ui.textEdit.textChanged.connect(self.saveUserText) self.ui.btnPdbExport.clicked.connect(self.exportToPdf) self.ui.sldTrans.valueChanged.connect(self.adjustTransparent) self.ui.chkHB.stateChanged.connect(self.showHbViewBar) #self.ui.textEdit self.resize(self.settings.value("size", QSize(270, 225))) self.move(self.settings.value("pos", QPoint(50, 50))) self.setCustomSampleText() self.refreshTextStyle() try: self.text_font_size = self.settings.value("last_font_size", self.text_font_size) self.last_font = self.settings.value("last_font") if self.last_font: #self.setTextFont(self.last_font, int(self.text_font_size)) pass except: pass
def __init__(self, parent, url, image_size): super().__init__() self.main = parent self.setupUi(self) self.setAcceptDrops(True) self.url = url self.image = QImage(url) self.image_size = image_size self.setBackgroundExists() self.resized.connect(self.synchronize) flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) sizegrip = QSizeGrip(self) sizegrip.setVisible(True) self.gridLayout.addWidget(sizegrip) self.pushButton_close.clicked.connect(self.on_click) self.pushButton_cancel.clicked.connect(self.on_click) self.pushbutton_calibrate.clicked.connect(self.on_click) self.title.installEventFilter(self) self.pressing = False
def __init__(self, parent=None): super().__init__(parent) self.draggable = True self.dragging_threshold = 5 self.mousePressPos = None self.mouseMovePos = None self.parent = parent self.setWindowFlags(Qt.SubWindow) layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) top = QHBoxLayout() top.setContentsMargins(0, 0, 0, 0) top.addWidget( QSizeGrip(self), 0, Qt.AlignLeft | Qt.AlignTop) top.addWidget( HSizeGrip(self), 0, Qt.AlignHCenter | Qt.AlignTop) top.addWidget( QSizeGrip(self), 0, Qt.AlignRight | Qt.AlignTop) layout.addLayout(top) center = QHBoxLayout() center.setContentsMargins(0, 0, 0, 0) center.addWidget( VSizeGrip(self), 0, Qt.AlignLeft | Qt.AlignVCenter) center.addWidget( VSizeGrip(self), 0, Qt.AlignRight | Qt.AlignVCenter) layout.addLayout(center) bottom = QHBoxLayout() bottom.setContentsMargins(0, 0, 0, 0) bottom.addWidget( QSizeGrip(self), 0, Qt.AlignLeft | Qt.AlignBottom) bottom.addWidget( HSizeGrip(self), 0, Qt.AlignHCenter | Qt.AlignBottom) bottom.addWidget( QSizeGrip(self), 0, Qt.AlignRight | Qt.AlignBottom) layout.addLayout(bottom) self.setLayout(layout) self.rubberband = QRubberBand(QRubberBand.Rectangle, self)
def status(self): if self.statused.isChecked() == True: self.statusbar = QStatusBar(self) self.statusbar.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().width(), self.geometry().width(), 20)) self.textEdit.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().y() - self.geometry().getCoords()[1], self.geometry().width(), self.geometry().height() - 42)) font = QFont() font.setPointSize(10) self.statusbar.setFont(font) self.label = QLabel("Row: 0 | Col: 0") self.statusbar.addPermanentWidget(self.label) self.time = QLCDNumber() self.time.setDigitCount(8) self.time.setFrameShadow(QFrame.Sunken) self.time.setFrameShape(QFrame.Panel) self.statusbar.addWidget(self.time) self.setStatusBar(self.statusbar) else: self.textEdit.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().y() - self.geometry().getCoords()[1], self.geometry().width(), self.geometry().height() - 21)) vboxlayout = QVBoxLayout() vboxlayout.setContentsMargins(QtCore.QMargins()) vboxlayout.setSpacing(0) sizegrip = QSizeGrip(self.centralwidget) sizegrip.setVisible(True) vboxlayout.addWidget(sizegrip, 0, Qt.AlignBottom | Qt.AlignRight) self.centralwidget.setLayout(vboxlayout) self.statusbar.hide()
def main(): # excepthook redirect sys._excepthook = sys.excepthook sys.excepthook = exception_hook # creating app app = QApplication(sys.argv) gui = canSnifferGUI() #applying dark theme qtmodern.styles.dark(app) darked_gui = qtmodern.windows.ModernWindow(gui) # adding a grip to the top left corner to make the frameless window resizable layout = QVBoxLayout() sizegrip = QSizeGrip(darked_gui) sizegrip.setMaximumSize(30, 30) layout.addWidget(sizegrip, 50, Qt.AlignBottom | Qt.AlignRight) darked_gui.setLayout(layout) #starting the app darked_gui.show() app.exec_()
def __init__(self, parent): super().__init__(parent) self.setWindowFlag(Qt.SubWindow) sizeGrip = QSizeGrip(self) layout = QVBoxLayout(self) layout.addWidget(sizeGrip, 0, Qt.AlignBottom | Qt.AlignRight) shortcut = QShortcut(QKeySequence("Ctrl+Down"), self) shortcut.activated.connect(self.splitCell) font = self.font() font.setPointSize(config.fontSize) self.setFont(font) self.document().contentsChanged.connect(self.sizeChange)
def __init__(self, parent=None): super(ResizableRubberBand, self).__init__(parent) self.setMinimumSize(30, 30) self.setWindowFlags(Qt.SubWindow) self.layout = QHBoxLayout(self) self.layout.setContentsMargins(0, 0, 0, 0) self.grip1 = QSizeGrip(self) self.layout.addWidget(self.grip1, 0, Qt.AlignRight | Qt.AlignBottom) self.rubberband = QRubberBand(QRubberBand.Rectangle, self) self.rubberband.move(0, 0) self.rubberband.show() self.move_offset = None self.resize(150, 150) self.show()
def InitWindow(self): self.setWindowIcon(QtGui.QIcon("home.png")) self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) # Create a frameless window flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) # Adding size grip for resizing the window vbox = QVBoxLayout() sizegrip = QSizeGrip(self) vbox.addWidget(sizegrip) self.setLayout(vbox) self.show()
def __init__(self): super().__init__() self.title = "PyQt5 Frameless Window" self.left = 500 self.top = 200 self.width = 300 self.height = 250 self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) self.setWindowFlags(flags) vbox = QVBoxLayout() sizegrip = QSizeGrip(self) vbox.addWidget(sizegrip) self.show()
def __init__(self): QMainWindow.__init__(self) self.ui = MainUI() self.ui.setupUi(self) self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowMinimizeButtonHint) self.gripSize = 16 self.grips = [] # Resize window for i in range(4): grip = QSizeGrip(self) grip.setVisible(False) grip.resize(self.gripSize, self.gripSize) self.grips.append(grip) self._btn_clicked_connect() self.show()
def __init__(self, parent=None): super(RoundedWindow, self).__init__(parent) # make the window frameless self.setWindowFlags(QtCore.Qt.FramelessWindowHint) self.setAttribute(QtCore.Qt.WA_TranslucentBackground) self.backgroundColor = hex2QColor("efefef") self.foregroundColor = hex2QColor("333333") self.borderRadius = 5 self.draggable = True self.dragging_threshould = 5 self.__mousePressPos = None self.__mouseMovePos = None layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) layout.addWidget(QSizeGrip(self), 0, QtCore.Qt.AlignBottom | QtCore.Qt.AlignRight) self.setMinimumSize(320, 240)
class MainForm(QDialog): def __init__(self, parent = None): QDialog.__init__(self, parent) # If a Nemu instance is already running, this is as far as we go self.connectToRunning() self.holdOpen = False self.menuItems = [] self.allItems = [] self.favorites = [] self.currentItem = None self.menuFile = os.path.expanduser('~/.nemu/menu') self.favoritesFile = os.path.expanduser('~/.nemu/favorites') # NOTE: If you change this, also update migrate-settings self.settingsFile = os.path.expanduser('~/.nemu/settings') self.initSettings() self.server = QLocalServer() self.server.newConnection.connect(self.handleConnection) QLocalServer.removeServer('nemuSocket') self.server.listen('nemuSocket') self.configDir = os.path.expanduser('~/.nemu') if not os.path.isdir(self.configDir): os.mkdir(self.configDir) self.menuItems = self.loadConfig(self.menuFile, self.menuItems) self.favorites = self.loadConfig(self.favoritesFile, self.favorites) # Don't load directly into self.settings so we can add new default values as needed try: tempSettings = self.loadConfig(self.settingsFile, self.settings) for key, value in tempSettings.items(): self.settings[key] = value except SystemError: print('ERROR: Failed to load settings. You may need to run migrate-settings.') raise # This should never happen, but unfortunately bugs do, so clean up orphaned items. # We need to do this because these items won't show up in the UI, but may interfere with # merges if they duplicate something that is being merged in. self.menuItems[:] = [i for i in self.menuItems if i.parent == None or i.parent in self.menuItems] # Look for broken icon paths needSave = False for i in self.menuItems + self.favorites: if not os.path.exists(i.icon): i.findIcon() needSave = True if needSave: self.saveMenu() for i in self.menuItems: if not hasattr(i, 'imported'): i.imported = False self.setupUI() self.setContextMenuPolicy(Qt.ActionsContextMenu) self.createMenu(self) self.refresh(False) if len(self.menuItems) == 0: self.firstRun() self.show() self.keepaliveTimer = QTimer(self) self.keepaliveTimer.timeout.connect(self.keepalive) self.keepaliveTimer.start(60000) def initSettings(self): self.settings = dict() self.settings['width'] = 400 self.settings['height'] = 400 self.settings['quit'] = False self.settings['imported'] = [] self.settings['iconTheme'] = None def loadConfig(self, filename, default): if os.path.exists(filename): with open(filename, 'rb') as f: data = f.read().replace('PyQt4', 'PyQt5') return cPickle.loads(data) else: return default def setupUI(self): self.resize(self.settings['width'], self.settings['height']) self.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint) #self.setWindowFlags(Qt.X11BypassWindowManagerHint) self.setWindowTitle('Nemu') self.setMouseTracking(True) iconPath = os.path.join(os.path.dirname(__file__), 'images') iconPath = os.path.join(iconPath, 'nemu.png') self.setWindowIcon(IconCache()[iconPath]) self.place() self.buttonListLayout = QVBoxLayout(self) self.setMargins(self.buttonListLayout) self.buttonLayout = QHBoxLayout() self.setMargins(self.buttonLayout) # Settings and Filter box self.filterLayout = QHBoxLayout() self.settingsButton = QPushButton() self.settingsButton.setIcon(QIcon(iconPath)) self.settingsButton.setMinimumHeight(35) self.settingsButton.clicked.connect(self.settingsClicked) self.filterLayout.addWidget(self.settingsButton, 0) self.filterLabel = QLabel("Filter") self.filterLayout.addWidget(self.filterLabel) self.filterBox = QLineEdit() self.filterBox.textChanged.connect(self.refresh) self.filterLayout.addWidget(self.filterBox) self.sizeGrip = QSizeGrip(self) self.sizeGrip.setMinimumSize(QSize(25, 25)) self.filterLayout.addWidget(self.sizeGrip, 0, Qt.AlignRight | Qt.AlignTop) self.buttonListLayout.addLayout(self.filterLayout) # Top buttons and labels self.backButton = QPushButton('Favorites') self.backButton.setMinimumHeight(35) self.backButton.clicked.connect(self.backClicked) self.buttonLayout.addWidget(self.backButton, 1) self.currentLabel = QLabel() self.currentLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.buttonLayout.addWidget(self.currentLabel, 1) self.buttonListLayout.addLayout(self.buttonLayout, 0) # Menu item display self.listSplitter = QSplitter() self.buttonListLayout.addWidget(self.listSplitter, 1) self.leftList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.leftList) self.rightList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.rightList) # Has to be done after adding widgets to the splitter or the size will get reset again if 'splitterState' in self.settings: self.listSplitter.restoreState(self.settings['splitterState']) def setMargins(self, layout, margin = 0): layout.setSpacing(margin) layout.setContentsMargins(margin, margin, margin, margin) def createMenu(self, widget): addFavoriteAction = QAction('Add to Favorites', self) addFavoriteAction.triggered.connect(self.addFavoriteClicked) widget.insertAction(None, addFavoriteAction) addAction = QAction("New...", self) addAction.triggered.connect(self.newClicked) widget.insertAction(None, addAction) editAction = QAction("Edit...", self) editAction.triggered.connect(self.editClicked) widget.insertAction(None, editAction) deleteAction = QAction("Delete", self) deleteAction.triggered.connect(self.deleteClicked) widget.insertAction(None, deleteAction) def hideOrClose(self): if self.settings['quit']: self.close() else: self.hide() def closeEvent(self, event): self.saveSettings() def hideEvent(self, event): self.releaseMouse() self.saveSettings() def mouseMoveEvent(self, event): if self.hasMouse(): self.releaseMouse() def leaveEvent(self, event): # If we set holdOpen, it means that we've opened a dialog, so we shouldn't grab if not self.hasMouse(): self.grabMouse() def mousePressEvent(self, event): if not self.hasMouse(): self.hideOrClose() def hasMouse(self): return self.geometry().contains(QCursor.pos()) def saveSettings(self): self.settings['splitterState'] = self.listSplitter.saveState() self.settings['width'] = self.width() self.settings['height'] = self.height() with open(self.settingsFile, 'wb') as f: cPickle.dump(self.settings, f) def place(self): desktop = qApp.desktop() screenSize = desktop.availableGeometry(QCursor.pos()) self.move(screenSize.x(), screenSize.y() + screenSize.height() - self.height()) def newClicked(self): form = AddForm() self.holdOpen = True form.exec_() self.checkMouse() self.holdOpen = False if form.accepted: item = MenuItem() item.name = form.name item.command = form.command item.working = form.working item.folder = form.folder item.icon = form.icon item.findIcon() clicked = self.getClicked() if clicked: parent = clicked.item.parent elif self.leftList.mouseOver: if self.currentItem != None: parent = self.currentItem.parent else: parent = None else: parent = self.currentItem item.parent = parent self.menuItems.append(item) self.refresh() def editClicked(self): form = AddForm() clicked = self.getClicked() if clicked == None: return item = clicked.item form.name = item.name form.command = item.command form.working = item.working form.folder = item.folder form.icon = item.icon form.populateFields() self.holdOpen = True form.exec_() self.checkMouse() self.holdOpen = False if form.accepted: item.name = form.name item.command = form.command item.working = form.working item.folder = form.folder item.icon = form.icon item.imported = False item.findIcon() self.refresh() def checkMouse(self): if not self.hasMouse(): self.grabMouse() def deleteClicked(self): clicked = self.getClicked() if clicked == None: return self.delete(clicked.item) self.refresh() # Delete item and all of its children so we don't leave around orphaned items def delete(self, item): for i in self.menuItems: if i.parent == item: i.deleted = True if item in self.menuItems: item.deleted = True item.imported = False if item in self.favorites: self.favorites.remove(item) def addFavoriteClicked(self): newFavorite = copy.copy(self.getClicked().item) newFavorite.parent = None self.favorites.append(newFavorite) self.refresh() def getClicked(self): for i in self.allItems: if i.mouseOver: return i def clearMouseOver(self): for i in self.allItems: i.mouseOver = False def clearListMouseOver(self): self.leftList.mouseOver = False self.rightList.mouseOver = False def refresh(self, save = True): self.leftList.clear() self.rightList.clear() self.allItems = [] sortedLeft = [] sortedRight = [] self.updateFilter() if self.currentItem != None: currParent = self.currentItem.parent for i in self.menuItems: if i.parent == currParent and not i.deleted and i.matchedFilter: sortedLeft.append(i) else: for i in self.favorites: sortedLeft.append(i) for i in self.menuItems: if i.parent == self.currentItem and not i.deleted and i.matchedFilter: sortedRight.append(i) sortedLeft.sort(key = lambda x: x.name) sortedLeft.sort(key = lambda x: not x.folder) sortedRight.sort(key = lambda x: x.name) sortedRight.sort(key = lambda x: not x.folder) for i in sortedLeft: self.leftList.add(self.createItem(i)) for i in sortedRight: self.rightList.add(self.createItem(i)) if save: self.saveMenu() def saveMenu(self): # Save the current menu status with open(self.menuFile, 'wb') as f: cPickle.dump(self.menuItems, f) with open(self.favoritesFile, 'wb') as f: cPickle.dump(self.favorites, f) def createItem(self, item): newItem = ListItem(item, self.clearMouseOver) newItem.clicked.connect(self.itemClicked) self.allItems.append(newItem) return newItem def updateFilter(self): filterValue = str(self.filterBox.text()) for i in self.menuItems: i.checkFilter(filterValue) def itemClicked(self): sender = self.sender() if sender.item.folder: self.setCurrentItem(sender.item) self.refresh(False) else: flags = ['f', 'F', 'u', 'U', 'd', 'D', 'n', 'N', 'i', 'k', 'v', 'm'] command = sender.item.command for i in flags: command = command.replace('%' + i, '') # %c needs a proper value in some cases command = command.replace('%c', '"%s"' % sender.item.name) working = sender.item.working if not os.path.isdir(working): working = None # Need to redirect stdout and stderr so if the process writes something it won't fail with open(os.path.devnull, 'w') as devnull: Popen(command + '&', stdout=devnull, stderr=devnull, shell=True, cwd=working) self.hideOrClose() def backClicked(self): if self.currentItem: self.setCurrentItem(self.currentItem.parent) self.refresh(False) def setCurrentItem(self, item): self.currentItem = item if item != None: self.currentLabel.setText(item.name) if item.parent != None: self.backButton.setText(item.parent.name) else: self.backButton.setText('Favorites') else: self.currentLabel.setText('') self.backButton.setText('Favorites') def settingsClicked(self): form = SettingsForm(self) form.quitCheck.setChecked(self.settings['quit']) theme = self.settings.get('iconTheme') if theme: form.themeCombo.setCurrentIndex(form.themeCombo.findText(theme)) self.holdOpen = True form.exec_() self.checkMouse() self.holdOpen = False if form.accepted: self.settings['quit'] = form.quitCheck.isChecked() def firstRun(self): QMessageBox.information(self, 'First Time?', 'Your menu is currently empty. It is recommended that you import an existing menu file.') self.settingsClicked() def connectToRunning(self): self.socket = QLocalSocket() self.socket.connectToServer('nemuSocket') self.socket.waitForConnected(1000) if self.socket.state() == QLocalSocket.ConnectedState: print 'Server found' if self.socket.waitForReadyRead(3000): line = self.socket.readLine() print line else: print self.socket.errorString() sys.exit() else: print 'No server running' def handleConnection(self): import datetime print "Got connection", datetime.datetime.now() connection = self.server.nextPendingConnection() connection.write('connected') del connection self.setCurrentItem(None) self.filterBox.setText('') self.refresh(False) self.show() print "Showed", datetime.datetime.now() return # Call periodically to keep data resident in memory (hopefully) def keepalive(self): if self.isHidden(): self.refresh(False)
def setupUI(self): self.resize(self.settings['width'], self.settings['height']) self.setWindowFlags(Qt.FramelessWindowHint | Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint) #self.setWindowFlags(Qt.X11BypassWindowManagerHint) self.setWindowTitle('Nemu') self.setMouseTracking(True) iconPath = os.path.join(os.path.dirname(__file__), 'images') iconPath = os.path.join(iconPath, 'nemu.png') self.setWindowIcon(IconCache()[iconPath]) self.place() self.buttonListLayout = QVBoxLayout(self) self.setMargins(self.buttonListLayout) self.buttonLayout = QHBoxLayout() self.setMargins(self.buttonLayout) # Settings and Filter box self.filterLayout = QHBoxLayout() self.settingsButton = QPushButton() self.settingsButton.setIcon(QIcon(iconPath)) self.settingsButton.setMinimumHeight(35) self.settingsButton.clicked.connect(self.settingsClicked) self.filterLayout.addWidget(self.settingsButton, 0) self.filterLabel = QLabel("Filter") self.filterLayout.addWidget(self.filterLabel) self.filterBox = QLineEdit() self.filterBox.textChanged.connect(self.refresh) self.filterLayout.addWidget(self.filterBox) self.sizeGrip = QSizeGrip(self) self.sizeGrip.setMinimumSize(QSize(25, 25)) self.filterLayout.addWidget(self.sizeGrip, 0, Qt.AlignRight | Qt.AlignTop) self.buttonListLayout.addLayout(self.filterLayout) # Top buttons and labels self.backButton = QPushButton('Favorites') self.backButton.setMinimumHeight(35) self.backButton.clicked.connect(self.backClicked) self.buttonLayout.addWidget(self.backButton, 1) self.currentLabel = QLabel() self.currentLabel.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) self.buttonLayout.addWidget(self.currentLabel, 1) self.buttonListLayout.addLayout(self.buttonLayout, 0) # Menu item display self.listSplitter = QSplitter() self.buttonListLayout.addWidget(self.listSplitter, 1) self.leftList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.leftList) self.rightList = ListWidget(self.clearListMouseOver) self.listSplitter.addWidget(self.rightList) # Has to be done after adding widgets to the splitter or the size will get reset again if 'splitterState' in self.settings: self.listSplitter.restoreState(self.settings['splitterState'])