有没有办法在 pyqtgraph 中锁定停靠点,以便用户无法移动它们?
我正在使用一个小触摸屏来显示具有多个停靠点的 pyqtgraph 应用程序。用户很容易意外移动扩展坞。当发生这种情况时,屏幕由于尺寸而变得无法使用。我想阻止用户移动码头。
但是,用户仍然必须能够在停靠点之间进行选择(即将它们视为选项卡小部件)。
为了清楚起见,我想防止码头被分离,我想防止码头被毒品带到新的位置。
谢谢,克里斯
我设法通过覆盖 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