1

ユーザーがドックを移動できないように、pyqtgraph でドックをロックする方法はありますか?

小さなタッチスクリーンを使用して、複数のドックを備えた pyqtgraph アプリケーションを表示しています。ユーザーが誤ってドックを移動することは非常に簡単です。そうなると画面が大きくなり使い物にならなくなります。ユーザーがドックを移動できないようにしたいと思います。

ただし、ユーザーはドックを選択できる必要があります (つまり、ドックをタブ ウィジェットのように扱います)。

明確にするために、ドックが切り離されるのを防ぎ、ドックが新しい場所にドラッグされるのを防ぎたいです。

ありがとう、クリス

4

1 に答える 1

0

Dock クラスのメソッドをオーバーライドすることで、ドックを切り離してドラッグする機能を無効にすることができました。

ドックをドラッグすると、別の場所に移動します。そこで、すべての「ドラッグ」イベント ハンドラーを、何もしない (つまり、何もしない) メソッドでオーバーライドしました。

ドックのラベルをダブルクリックすると、ドックが切り離されます。そこで、ドックのラベルのダブルクリック イベント ハンドラーをノーオペレーションでオーバーライドしました。

コード内で Dock を MyDock に置き換えます。更新: DockArea を移動することができたので、DockArea のドラッグ メソッドもオーバーライドするコードを追加しました。

コードは次のとおりです。

##
# 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
于 2014-10-15T18:51:59.837 に答える