pyqtgraph锁坞布局

2024-05-19 02:55:16 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以在pyqtgraph中锁定dock,以便用户无法移动它们?在

我用一个小触摸屏来显示一个带有多个停靠点的pyqtgraph应用程序。用户很容易不小心移动了一个基座。当这种情况发生时,屏幕会因为尺寸而变得不可用。我想阻止用户移动码头。在

但是,用户仍然必须能够在停靠点之间进行选择(即,将它们视为选项卡小部件)。在

我只是想说清楚,我要防止一个码头被分离,我要防止码头成为毒品到一个新的地点。在

谢谢, 克里斯


Tags: 方法用户应用程序屏幕部件尺寸情况选项卡
1条回答
网友
1楼 · 发布于 2024-05-19 02:55:16

通过重写Dock类的方法,我成功地禁用了分离和拖动Dock的功能。在

拖动驳接会将其移动到另一个位置。所以我用什么都不做的方法重写了所有的“drag”事件处理程序(即无操作)。在

双击驳接标签将导致驳接分离。所以,我用no-op重写了dock标签的双击事件处理程序

在代码中用MyDock替换Dock。更新:我添加了代码来覆盖DockArea的drag方法,因为我仍然可以移动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

相关问题 更多 >

    热门问题