亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > pytho matplotlib工具欄源碼探析一之禁用工具欄、默認工具欄和工具欄管理器三種模式的差異

pytho matplotlib工具欄源碼探析一之禁用工具欄、默認工具欄和工具欄管理器三種模式的差異

熱門標簽:正安縣地圖標注app 螳螂科技外呼系統怎么用 電銷機器人系統廠家鄭州 舉辦過冬奧會的城市地圖標注 遼寧智能外呼系統需要多少錢 400電話申請資格 qt百度地圖標注 阿里電話機器人對話 地圖地圖標注有嘆號

使用matplotlib繪圖時,在彈出的窗口中默認是有工具欄的,那么這些工具欄是如何定義的呢?

工具欄的三種模式

matplotlib的基礎配置由運行時參數(rcParams)控制,導入matplotlib時,加載matplotlibrc文件生成默認運行時參數。
查看matplotlibrc文件可知#toolbar: toolbar2 # {None, toolbar2, toolmanager},即工具欄有三種模式Nonetoolbar2toolmanager,其中默認模式為toolbar2

工具欄模式切換

通過類似語句plt.rcParams['toolbar'] = 'None'可控制工具欄的模式。
需要注意的是plt.rcParams['toolbar'] = 'None'應當放置在圖像實例化之前。

None模式:禁用工具欄。
plt.rcParams['toolbar'] = 'None'

toolbar2模式:默認工具欄布局。
plt.rcParams['toolbar'] = 'toolbar2'

toolmanager模式:工具欄布局模式與toolbar2模式稍有不同。
plt.rcParams['toolbar'] = 'toolmanager'

工具欄模式切換原理

和工具欄相關的模塊有:

  • matplotlib.backend_bases
  • matplotlib.backend_managers
  • matplotlib.backend_tools
  • matplotlib.backends

工具欄最終依靠后端實現,不同的后端具體實現會有一些差異,我選擇的后端是Pyqt5,通過查看模塊matplotlib.backends.backend_qt5源碼可知,matplotlib在利用后端生成窗口時根據rcParams['toolbar']的值選擇不同的工具欄構造方式。

def _get_toolbar(self, canvas, parent):
  # must be inited after the window, drawingArea and figure
  # attrs are set
  if matplotlib.rcParams['toolbar'] == 'toolbar2':
    toolbar = NavigationToolbar2QT(canvas, parent, True)
  elif matplotlib.rcParams['toolbar'] == 'toolmanager':
    toolbar = ToolbarQt(self.toolmanager, self.window)
  else:
    toolbar = None
  return toolbar

默認模式(toolbar2)原理

與該模式相關的重要定義有:

  • matplotlib.backend_bases.NavigationToolbar2(canvas)類:默認的toolbar2模式工具欄的基類,后端需要通過canvas對象處理工具欄按鈕事件、覆蓋構造方法初始化工具欄、覆蓋save_figure()等方法。
  • matplotlib.backends.backend_qt5.NavigationToolbar2QT(NavigationToolbar2, QtWidgets.QToolBar)類:定義了QT后端默認模式工具欄的具體實現。
  • matplotlib.backend_bases.FigureCanvasBase類:canvas對象的基類,通過toolbar屬性與工具欄進行連接。
  • matplotlib.backend_bases.NavigationToolbar2(canvas).toolitems屬性:定義了默認模式工具欄工具項列表。

案例:驗證默認模式工具欄布局

import matplotlib.pyplot as plt

fig=plt.gcf()
toolbar = fig.canvas.manager.toolbar
print(toolbar.toolitems)

輸出:

[('Home', 'Reset original view', 'home', 'home'),
 ('Back', 'Back to previous view', 'back', 'back'),
 ('Forward', 'Forward to next view', 'forward', 'forward'),
 (None, None, None, None),
 ('Pan', 'Left button pans, Right button zooms\nx/y fixes axis, CTRL fixes aspect', 'move', 'pan'),
 ('Zoom', 'Zoom to rectangle\nx/y fixes axis, CTRL fixes aspect', 'zoom_to_rect', 'zoom'),
 ('Subplots', 'Configure subplots', 'subplots', 'configure_subplots'),
 ('Customize', 'Edit axis, curve and image parameters', 'qt4_editor_options', 'edit_parameters'),
 (None, None, None, None),
 ('Save', 'Save the figure', 'filesave', 'save_figure')]

根據源碼可知,列表中每個元組為工具項定義,元組的四個元素分別表示按鈕名稱、按鈕提示文本、按鈕圖像、按鈕對應方法。

# list of toolitems to add to the toolbar, format is:
# (
#  text, # the text of the button (often not visible to users)
#  tooltip_text, # the tooltip shown on hover (where possible)
#  image_file, # name of the image for the button (without the extension)
#  name_of_method, # name of the method in NavigationToolbar2 to call
# )

工具欄管理器模式(toolmanager)原理

與該模式相關的重要定義有:

  • matplotlib.backend_bases.ToolContainerBase(toolmanager)類:工具欄容器的基類,定義了工具欄編輯的方法。構造函數參數為toolmanager,表示工具欄容器容納的工具欄。
  • matplotlib.backend_managers.ToolManager(figure=None)類:管理用戶觸發工具欄工具項按鈕而產生的動作。
  • matplotlib.backend_tools.ToolBase類:所有工具欄工具項的基類,所有工具項均由matplotlib.backend_managers.ToolManager實例化。
  • matplotlib.backend_tools.default_tools變量:字典類型,實例化基于matplotlib.backend_tools.ToolBase類定義的內置工具項。
  • matplotlib.backend_tools.default_toolbar_tools變量:嵌套列表,以類似格式[[分組1, [工具1, 工具2 ...]], [分組2, [...]]]定義工具欄布局。
  • matplotlib.backend_tools.add_tools_to_container函數:設置toolbarmanager模式默認工具欄。

案例:驗證工具欄管理器模式工具欄布局

import matplotlib.pyplot as plt

plt.rcParams['toolbar'] = 'toolmanager'
fig=plt.gcf()
toolbar= fig.canvas.manager.toolbar
print(toolbar._toolitems)

輸出:

{'home': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EABBC1F8>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC510>)],
 'back': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE86678>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC598>)],
 'forward': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE8B4C8>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC620>)],
 'pan': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE8BAF8>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC6A8>)],
 'zoom': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93DC8>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC7B8>)],
 'subplots': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93438>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC8C8>)],
 'save': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93678>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC950>)],
 'help': [(PyQt5.QtWidgets.QToolButton object at 0x00000289EAE93A68>, function ToolbarQt.add_toolitem.locals>.handler at 0x00000289EB0BC9D8>)]}

到此這篇關于pytho matplotlib工具欄源碼探析一之禁用工具欄、默認工具欄和工具欄管理器三種模式的差異的文章就介紹到這了,更多相關pytho matplotlib工具欄內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python matplotlib工具欄源碼探析二之添加、刪除內置工具項的案例
  • python matplotlib工具欄源碼探析三之添加、刪除自定義工具項的案例詳解
  • 詳解python安裝matplotlib庫三種失敗情況
  • Python matplotlib讀取excel數據并用for循環畫多個子圖subplot操作

標簽:濟源 興安盟 信陽 昭通 淘寶好評回訪 隨州 合肥 阜新

巨人網絡通訊聲明:本文標題《pytho matplotlib工具欄源碼探析一之禁用工具欄、默認工具欄和工具欄管理器三種模式的差異》,本文關鍵詞  pytho,matplotlib,工具欄,源碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytho matplotlib工具欄源碼探析一之禁用工具欄、默認工具欄和工具欄管理器三種模式的差異》相關的同類信息!
  • 本頁收集關于pytho matplotlib工具欄源碼探析一之禁用工具欄、默認工具欄和工具欄管理器三種模式的差異的相關信息資訊供網民參考!
  • 推薦文章
    香蕉视频一级| 精品美女| 国产精品1024永久免费视频| 一级片片| 一级毛片视频免费| 欧美1卡一卡二卡三新区| 青青久久网| 天天色色色| 亚洲精品久久玖玖玖玖| 国产精品免费精品自在线观看| 麻豆系列 在线视频| 日本在线不卡免费视频一区| 毛片电影网| 久久久久久久免费视频| 日韩在线观看视频网站| 久久久成人影院| 国产极品精频在线观看| 国产一区二区精品久久| 午夜久久网| 国产91精品一区| 天堂网中文在线| 国产精品123| 日日日夜夜操| 国产伦精品一区三区视频| 亚洲第一页色| 国产麻豆精品hdvideoss| 国产麻豆精品hdvideoss| 九九九国产| 亚洲爆爽| 欧美大片a一级毛片视频| 国产一区免费在线观看| 一级毛片视频免费| 国产91精品露脸国语对白| 日韩免费在线观看视频| 中文字幕97| 欧美大片毛片aaa免费看| 成人在免费观看视频国产| 久久久成人影院| 黄色福利片| 日韩在线观看免费| 精品国产香蕉在线播出| 日韩一级黄色大片| 美国一区二区三区| 二级特黄绝大片免费视频大片| 国产视频一区二区在线观看| 高清一级片| 欧美另类videosbestsex视频| 亚洲第一页色| 免费国产一级特黄aa大片在线| 精品国产三级a∨在线观看| 99久久精品费精品国产一区二区| 青青青草影院| 国产精品1024永久免费视频| 国产一区二区精品尤物| 国产欧美精品午夜在线播放| 韩国三级视频网站| 毛片电影网| 你懂的国产精品| 精品在线观看一区| 精品视频一区二区三区| 欧美α片无限看在线观看免费| 深夜做爰性大片中文| 成人a级高清视频在线观看| 黄视频网站在线观看| 国产精品123| 国产视频在线免费观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 高清一级片| 国产91丝袜高跟系列| 免费国产一级特黄aa大片在线| 黄视频网站在线观看| 国产亚洲免费观看| 国产伦久视频免费观看视频| 亚洲精品中文一区不卡| 亚洲第一页色| 青青久久网| 国产亚洲免费观看| 国产伦久视频免费观看视频| 精品美女| 99色播| 天堂网中文在线| 黄色免费网站在线| 日韩男人天堂| 天堂网中文在线| 日韩在线观看视频黄| a级毛片免费全部播放| 国产91精品露脸国语对白| 深夜做爰性大片中文| 欧美激情在线精品video| 日韩男人天堂| 午夜久久网| 韩国三级视频在线观看| 欧美一级视频免费| 四虎影视久久久| 香蕉视频一级| 精品国产一级毛片| 亚洲天堂免费观看| 日本伦理片网站| 亚洲 国产精品 日韩| 精品国产一级毛片| 国产a视频| 日本在线不卡免费视频一区| 黄色福利片| 天天做日日干| 99久久精品国产免费| 国产高清在线精品一区二区| 国产一区二区精品| 精品视频在线观看视频免费视频| 精品国产香蕉在线播出| 日韩男人天堂| 久久精品道一区二区三区| 日本伦理黄色大片在线观看网站| 国产91丝袜高跟系列| 久久久成人影院| 精品视频一区二区三区| 香蕉视频久久| 久久国产精品只做精品| 成人影视在线观看| 四虎影视久久久| 日日日夜夜操| 国产不卡在线看| 在线观看成人网| 国产网站麻豆精品视频| 免费的黄色小视频| 一本高清在线| 国产高清视频免费| 午夜精品国产自在现线拍| 欧美日本韩国| 成人高清护士在线播放| 日韩男人天堂| 国产麻豆精品hdvideoss| 一级女性大黄生活片免费| 精品在线观看一区| 香蕉视频久久| 一本高清在线| 色综合久久手机在线| 欧美一级视频免费| 精品国产香蕉在线播出| 欧美激情一区二区三区中文字幕| 国产一区二区精品| 99色视频在线观看| 99色播| 99久久精品国产国产毛片| 国产国语对白一级毛片| 青青久久国产成人免费网站| 日日日夜夜操| 日韩专区一区| 国产一区免费在线观看| 欧美国产日韩久久久| 日本免费乱人伦在线观看| 色综合久久天天综合观看| 国产精品自拍亚洲| 精品国产亚洲人成在线| 黄视频网站在线观看| 国产成人精品综合在线| 久久精品道一区二区三区| 精品久久久久久中文字幕一区| 日本在线www| 亚久久伊人精品青青草原2020| 九九精品影院| 欧美爱色| 97视频免费在线| 精品视频免费看| 国产精品自拍亚洲| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 高清一级做a爱过程不卡视频| 99热精品一区| 黄色福利片| 日本伦理黄色大片在线观看网站| 成人a大片高清在线观看| 欧美α片无限看在线观看免费| 日日夜夜婷婷| 亚欧视频在线| 欧美激情一区二区三区中文字幕| 精品视频在线看| 午夜久久网| 成人a大片高清在线观看| 亚洲 男人 天堂| 夜夜操天天爽| 国产精品1024永久免费视频| 一级片片| 99久久网站| 九九免费精品视频| 国产视频一区二区在线观看| 成人a大片高清在线观看| 97视频免费在线| 日本特黄一级| 可以免费看污视频的网站| 亚欧成人毛片一区二区三区四区 | 国产成a人片在线观看视频| 欧美激情在线精品video| 日韩专区一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人免费观看网欧美片| 精品国产香蕉在线播出| 日韩中文字幕在线亚洲一区 | 欧美大片a一级毛片视频| 日韩一级精品视频在线观看| 日韩专区一区| 成人免费网站视频ww|