婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異

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

熱門(mén)標(biāo)簽:正安縣地圖標(biāo)注app 螳螂科技外呼系統(tǒng)怎么用 電銷(xiāo)機(jī)器人系統(tǒng)廠家鄭州 舉辦過(guò)冬奧會(huì)的城市地圖標(biāo)注 遼寧智能外呼系統(tǒng)需要多少錢(qián) 400電話申請(qǐng)資格 qt百度地圖標(biāo)注 阿里電話機(jī)器人對(duì)話 地圖地圖標(biāo)注有嘆號(hào)

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

工具欄的三種模式

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

工具欄模式切換

通過(guò)類(lèi)似語(yǔ)句plt.rcParams['toolbar'] = 'None'可控制工具欄的模式。
需要注意的是plt.rcParams['toolbar'] = 'None'應(yīng)當(dāng)放置在圖像實(shí)例化之前。

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

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

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

工具欄模式切換原理

和工具欄相關(guān)的模塊有:

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

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

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

默認(rèn)模式(toolbar2)原理

與該模式相關(guān)的重要定義有:

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

案例:驗(yàn)證默認(rèn)模式工具欄布局

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')]

根據(jù)源碼可知,列表中每個(gè)元組為工具項(xiàng)定義,元組的四個(gè)元素分別表示按鈕名稱、按鈕提示文本、按鈕圖像、按鈕對(duì)應(yīng)方法。

# 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)原理

與該模式相關(guān)的重要定義有:

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

案例:驗(yàn)證工具欄管理器模式工具欄布局

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>)]}

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

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

標(biāo)簽:濟(jì)源 興安盟 信陽(yáng) 昭通 淘寶好評(píng)回訪 隨州 合肥 阜新

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異》,本文關(guān)鍵詞  pytho,matplotlib,工具欄,源碼,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美高清hd18日本| 久久综合久久综合久久| 在线电影欧美成精品| 亚洲综合在线第一页| 91丨porny丨在线| 亚洲精品日韩综合观看成人91| 成人av免费观看| 欧美韩国日本综合| 成人av网在线| 国产精品久久久久影院亚瑟| av不卡一区二区三区| 亚洲一区二区高清| 欧美一区二区美女| 国产精品一区二区在线播放| 国产精品理论在线观看| 91蜜桃传媒精品久久久一区二区| 一区二区三区国产| 在线观看精品一区| 久久激五月天综合精品| 国产婷婷一区二区| 色天使久久综合网天天| 久久99久久99| 亚洲免费观看高清完整版在线| 欧美性欧美巨大黑白大战| 久久精品av麻豆的观看方式| 国产精品情趣视频| 欧美三级视频在线播放| 国产精品资源在线看| 一区二区三区在线视频免费观看| 91精品在线观看入口| 成人动漫视频在线| 久久福利资源站| 亚洲精品自拍动漫在线| 精品久久人人做人人爽| 欧美一区二区视频网站| 日韩精品乱码av一区二区| 久久女同互慰一区二区三区| 99国内精品久久| 欧美a级一区二区| 国产精品伦一区二区三级视频| 欧美精品在欧美一区二区少妇| 国产传媒一区在线| 日日骚欧美日韩| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 免费一级欧美片在线观看| 国产精品免费视频网站| 欧美日韩性生活| 成人综合在线视频| 久久精品理论片| 亚洲大型综合色站| 一区二区三区免费在线观看| 国产亚洲精品aa午夜观看| 欧美日韩一区二区三区四区| 成人高清视频免费观看| 国产伦精一区二区三区| 日韩不卡手机在线v区| 日本不卡123| 亚洲精品国久久99热| 亚洲欧美在线视频观看| 久久美女艺术照精彩视频福利播放| 91久久精品网| 成人福利视频网站| 成人精品视频一区二区三区| 美日韩黄色大片| 久久国产婷婷国产香蕉| 麻豆国产欧美日韩综合精品二区 | 国产精品久久久久久久裸模| 久久新电视剧免费观看| 久久欧美一区二区| 国产欧美精品一区aⅴ影院| 精品久久久久久久人人人人传媒 | 午夜久久福利影院| 亚洲自拍偷拍欧美| 亚洲第一福利一区| 日韩av电影一区| 男女激情视频一区| 韩国女主播一区| 成人精品免费看| 国产91色综合久久免费分享| 国产成人夜色高潮福利影视| 奇米888四色在线精品| 日本美女一区二区三区| 日韩av在线发布| 狠狠色丁香婷婷综合| 国产精品一线二线三线精华| 国产乱码精品一区二区三区忘忧草 | 亚洲风情在线资源站| 国产精品视频麻豆| 18成人在线视频| 亚洲精品成人少妇| 蜜桃精品视频在线观看| 成人一级片网址| 欧美日韩一卡二卡三卡| 精品国产伦一区二区三区观看体验| 欧美成人官网二区| 亚洲男人天堂一区| 美女一区二区在线观看| 国产精品一区二区你懂的| 色偷偷成人一区二区三区91| 欧美人xxxx| 国产精品欧美一级免费| 麻豆精品新av中文字幕| 成人国产一区二区三区精品| 欧美性极品少妇| 国产欧美一区在线| 日韩不卡免费视频| 在线免费av一区| 国产欧美一区二区精品忘忧草| 午夜一区二区三区在线观看| 国产成人在线影院| 欧美一级日韩不卡播放免费| 亚洲人精品一区| 国产成人精品免费在线| 日韩三级视频中文字幕| 日韩av午夜在线观看| 色呦呦日韩精品| 亚洲国产精品精华液ab| 久久99国产精品麻豆| 欧美二区三区91| 亚洲欧美日韩系列| 成人午夜视频在线| 7777精品伊人久久久大香线蕉| 亚洲综合色区另类av| 国产成人丝袜美腿| 久久无码av三级| 奇米一区二区三区av| 欧美亚洲动漫制服丝袜| 亚洲精品成人少妇| av亚洲精华国产精华| 久久久精品免费免费| 国产美女av一区二区三区| 56国语精品自产拍在线观看| 中文字幕一区日韩精品欧美| 成a人片亚洲日本久久| 欧美国产激情一区二区三区蜜月| 午夜精品久久一牛影视| 在线观看91av| 日韩在线观看一区二区| 日韩一区二区三区av| 麻豆精品一二三| 久久久久久久综合| 成人夜色视频网站在线观看| 中文字幕精品一区二区精品绿巨人| 高清免费成人av| 亚洲欧洲一区二区三区| 在线视频一区二区三区| 亚洲国产乱码最新视频| 国产欧美久久久精品影院| 91论坛在线播放| 一区二区久久久久久| 91精品国产综合久久香蕉麻豆| 免费成人结看片| 久久久三级国产网站| 成人性生交大片免费看视频在线| 国产精品热久久久久夜色精品三区 | 激情六月婷婷久久| 久久久久国产精品免费免费搜索| 国产91综合网| 国产精品成人午夜| 欧美日韩久久一区| 日韩av一区二区三区四区| 欧美精品一区二区高清在线观看 | 欧美三级视频在线观看| 日韩高清欧美激情| 久久综合国产精品| 99久久精品久久久久久清纯| 亚洲成人免费观看| 国产香蕉久久精品综合网| 91香蕉视频mp4| 午夜精品国产更新| 久久久久久毛片| 在线中文字幕一区二区| 国产资源在线一区| 亚洲高清一区二区三区| 国产欧美一区二区精品性色超碰| 在线亚洲一区观看| 国产成人一级电影| 日韩黄色一级片| 欧美美女直播网站| 中文字幕电影一区| 欧美综合一区二区| 国产成人免费在线视频| 午夜视频在线观看一区二区三区| 久久青草欧美一区二区三区| 精品视频在线视频| 成人午夜免费视频| 日本欧美在线观看| 中文字幕一区二区视频| 久久一区二区视频| 日韩一区二区麻豆国产| 色综合久久久久综合体| 国产91综合网| 国产黄色精品视频| 麻豆中文一区二区| 亚洲最新视频在线播放| 国产精品久久福利| 欧美激情综合五月色丁香小说| 欧美精品一区二区三区在线播放| 欧美日韩在线不卡| 欧美自拍丝袜亚洲|