有没有办法通过单击散景来保存 HoverTool 信息?

时间:2021-03-16 14:57:06

标签: python-3.x hover bokeh

我正在做一个在圆圈之间画线的项目,现在用户可以通过将鼠标悬停在圆圈上来查看圆圈之间的线条。为便于使用,我希望用户能够在悬停在圆圈上时以及单击圆圈然后远离它时看到线条。然后当用户点击空白处时,线条再次消失。

我的代码主要基于 Bokeh documentation 中的以下代码:

[1615850954.308][INFO]: Starting ChromeDriver 91.0.4448.0 (2cfe0f5060e82295490499b72a9e2891a9353b34-refs/heads/master@{#862992}) on port 54905
[1615850954.308][INFO]: Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
[1615850955.310][INFO]: [767613b2bc316b8fedd00e8a0b17a7f9] COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "browserName": "chrome",
         "goog:chromeOptions": {
            "args": [ "--headless", "--no-sandbox", "--disable-dev-shm-usage", "--disable-gpu", "--window-size=1024x768", "--user-data-dir=/home/py_test/logs/user", "--enable-logging", "--single-process", "--log-level=3", "--start-maximized", "--disable-extensions", "--remote-debugging-port=54905" ],
            "binary": "/home/py_test/exec/chrome/chrome-linux/chrome",
            "extensions": [  ]
         },
         "platformName": "any"
      },
      "firstMatch": [ {

      } ]
   },
   "desiredCapabilities": {
      "browserName": "chrome",
      "goog:chromeOptions": {
         "args": [ "--headless", "--no-sandbox", "--disable-dev-shm-usage", "--disable-gpu", "--window-size=1024x768", "--user-data-dir=/home/py_test/logs/user", "--enable-logging", "--single-process", "--log-level=3", "--start-maximized", "--disable-extensions", "--remote-debugging-port=54905" ],
         "binary": "/home/py_test/exec/chrome/chrome-linux/chrome",
         "extensions": [  ]
      },
      "platform": "ANY",
      "version": ""
   }
}
[1615850955.311][INFO]: Populating Preferences file: {
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "check_default_browser": false
   },
   "distribution": {
      "import_bookmarks": false,
      "import_history": false,
      "import_search_engine": false,
      "make_chrome_default_for_user": false,
      "skip_first_run_ui": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "profile": {
      "content_settings": {
         "pattern_pairs": {
            "https://*,*": {
               "media-stream": {
                  "audio": "Default",
                  "video": "Default"
               }
            }
         }
      },
      "default_content_setting_values": {
         "geolocation": 1
      },
      "default_content_settings": {
         "geolocation": 1,
         "mouselock": 1,
         "notifications": 1,
         "popups": 1,
         "ppapi-broker": 1
      },
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "translate": {
      "enabled": false
   }
}
[1615850955.311][INFO]: Populating Local State file: {
   "background_mode": {
      "enabled": false
   },
   "ssl": {
      "rev_checking": {
         "enabled": false
      }
   }
}
[1615850955.311][INFO]: Launching chrome: /home/py_test/exec/chrome/chrome-linux/chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-gpu --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --enable-automation --enable-blink-features=ShadowDOMV0 --enable-logging --headless --log-level=3 --no-first-run --no-sandbox --no-service-autorun --password-store=basic --remote-debugging-port=54905 --single-process --start-maximized --test-type=webdriver --use-mock-keychain --user-data-dir=/home/py_test/logs/user --window-size=1024x768
[1615850956.341][INFO]: [767613b2bc316b8fedd00e8a0b17a7f9] RESPONSE InitSession ERROR unknown error: Chrome failed to start: exited abnormally.
  (chrome not reachable)
  (The process started from chrome location /home/py_test/exec/chrome/chrome-linux/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

提前致谢。

1 个答案:

答案 0 :(得分:0)

我建议不要以复杂的方式更新数据,而是建议只添加一次 segment 渲染器,然后添加一个 TapTool 和一个回调,该回调只是切换段可见性:

callback = CustomJS(args=dict(sr=sr)}, code="""
sr.visible = !sr.visible
""")