мне удалось отключить возможность отделяться и перетаскивать доки переопределения методов класса Dock.
Перемещение док-станции переводит его в другое место. Поэтому я перевернул все обработчики событий «drag» с помощью методов, которые ничего не делают (т. Е. No-op).
Двойной щелчок на ярлыке дока может привести к отсоединению док-станции. Таким образом, я перепробовал обработчик событий двойного щелчка на доке с помощью no-op.
Замените Dock MyDock в своем коде. UPDATE: я добавил код, чтобы переопределить методы перетаскивания для DockArea, потому что я все еще мог перемещать DockAreas.
Вот код:
##
# This class is used to eliminate a standard Dock class' ability to detach and
# move (i.e. dragging this Dock will have no effect)
#
class MyDock(Dock):
def __init__(self, name, area=None, size=(10, 10), widget=None, hideTitle=False, autoOrientation=True):
# Initialize the baseclass
#
Dock.__init__(self, name, area, size, widget, hideTitle, autoOrientation)
# Override the label's double click event. Normally double clicking
# the dock's label will cause it to detach into it's own window.
#
self.label.mouseDoubleClickEvent=self.noopEvent
def dragEventEnter(self, ev):
pass
def dragMoveEvent(self, ev):
pass
def dragLeaveEvent(self, ev):
pass
def dragDropEvent(self, ev):
pass
def noopEvent(self,ev):
pass
class MyDockArea(DockArea):
def dragEventEnter(self, ev):
pass
def dragMoveEvent(self, ev):
pass
def dragLeaveEvent(self, ev):
pass
def dragDropEvent(self, ev):
pas