コード例 #1
0
 def _onMouseMoveX(self, menu: QtWidgets.QMenu, event: QtGui.QMouseEvent,
                   button: QtWidgets.QToolButton):
     hover = self.childAt(self.mapFromGlobal(QtGui.QCursor.pos()))
     if isinstance(hover, QtWidgets.QToolButton) and hover != button:
         menu.close()
         hover.showMenu()
     else:
         return QtWidgets.QMenu.mouseMoveEvent(menu, event)
コード例 #2
0
 def _onMouseMove(menu: QtWidgets.QMenu, event: QtGui.QMouseEvent):
     button = menu.property("__button")
     toolbar = button.parentWidget()
     hover = toolbar.childAt(toolbar.mapFromGlobal(QtGui.QCursor.pos()))
     if isinstance(hover, QtWidgets.QToolButton) and hover != button:
         menu.close()
         hover.showMenu()
     else:
         return QtWidgets.QMenu.mouseMoveEvent(menu, event)
コード例 #3
0
class TextInput():

    def __init__(self, suggestion='', input_valid_callback = None):

        self.input_valid_callback = input_valid_callback

        self.menu = QMenu()

        self.lb = QWidgetAction(None)

        self.widget = QWidget(None)
        self.layout = QHBoxLayout()
        self.button = QPushButton()
        self.button.setText("Ok")
        self.le = QLineEdit()

        self.layout.addWidget(self.le)
        self.layout.addWidget(self.button)
        self.widget.setLayout(self.layout)

        self.button.pressed.connect(self.done)

        self.le.textEdited.connect(self.check_input)
        self.eventFilter = EnterKeyPressFilter()
        self.eventFilter.callback = self.done
        self.le.installEventFilter(self.eventFilter)

        self.lb.setDefaultWidget(self.widget)

        self.menu.addAction(self.lb)

        self.le.setText(suggestion)
        self.le.setFocus()
        self.le.selectAll()

        self.result = None

    def show(self, pos):
        self.menu.exec_(pos)
        return self.result

    def done(self):
        self.result = self.le.text()
        self.menu.close()

    def check_input(self):
        if self.input_valid_callback is not None:
            result = self.input_valid_callback(self.le.text())
            if result:
                self.le.setStyleSheet('')
            else:
                self.le.setStyleSheet('background: pink')



        return None
コード例 #4
0
ファイル: dock.py プロジェクト: University-Collab/zephyrus
 def contextMenuEvent(self, event):
     contextMenu = QMenu(self)
     deleteFile = contextMenu.addAction("Delete File")
     action = contextMenu.exec_(self.mapToGlobal(event.pos()))
     if action == deleteFile:
         alert = QMessageBox()
         alert.setWindowTitle("Action Dialog")
         alert.setText("Are you sure you want to delete this file?")
         alert.setStandardButtons(QMessageBox.No | QMessageBox.Yes)
         alert.setDefaultButton(QMessageBox.No)
         response = alert.exec_()
         if response == QMessageBox.No:
             contextMenu.close()
         else:
             file_name = self.model.filePath(
                 self.index_).split("storage/")[1]
             os.remove(self.model.filePath(self.index_))
             os.remove(
                 self.model.filePath(self.index_).split("/storage")[0] +
                 "/meta/" + file_name + "_metadata.json")
             contextMenu.close()