Matplotlib 图/图/画布/布局隐藏按钮

2023-12-05

Matplotlib 图/图/画布/布局隐藏按钮。图片应该可以解释问题:我希望绘图的容器为右侧的按钮留出空间。

Buttons hidden

这是一个最小的工作代码示例,其中包含我尝试过的一些注释:

import sys
from PyQt5.QtWidgets import QPushButton, QVBoxLayout, QApplication, QDialog
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt
import random

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(QDialog):
    def __init__(self, parent=None):
        super(Ui_Dialog, self).__init__(parent)
        self.setupUi(self)
        self.setupPlot()

    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        Dialog.setToolTip("")
        Dialog.setStatusTip("")
        Dialog.setWhatsThis("")
        Dialog.setAccessibleName("")
        Dialog.setAccessibleDescription("")
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(320, 50, 81, 241))
        self.buttonBox.setOrientation(QtCore.Qt.Vertical)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        pass

    def setupPlot(self):
        self.figure = plt.figure()
        self.canvas = FigureCanvas(self.figure)
        #self.canvas.resize(self, 5, 5)
        #self.resize(5,5)

        self.toolbar = NavigationToolbar(self.canvas, self)
        layout = QVBoxLayout()
        layout.addWidget(self.toolbar)
        layout.addWidget(self.canvas)
        self.setLayout(layout)
        self.plot()

    def plot(self):
        data = [random.random() for i in range(10)]
        self.figure.clear()

        #plt.figure(num=2, figsize=(3, 3), dpi=80, facecolor='w', edgecolor='k')
        #self.figure.set_size_inches(5, 5, forward=True)

        ax = self.figure.add_subplot(111)

        #self.figure.subplots_adjust(left=1, bottom=1, right=1, top=1, wspace=1, hspace=1)

        ax.plot(data, '*-')
        self.canvas.draw()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    main = Ui_Dialog()
    main.show()

    sys.exit(app.exec_())

您可以将按钮框添加到布局中,而不是将其放置在绝对坐标中,就像对画布和工具栏所做的那样。为此,您可以使用另一个包含画布和工具栏的小部件。该小部件可以放置在QHBoxLayout(); the QDialogButtonBox将在布局中添加到第二个。

enter image description here

import sys
#from PyQt5.QtWidgets import QPushButton, QVBoxLayout, QApplication, QDialog
from PyQt4.QtGui import QPushButton, QVBoxLayout, QApplication, QDialog
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt
import random

#from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt4 import QtCore, QtGui #, QtWidgets

class Ui_Dialog(QDialog):
def __init__(self, parent=None):
    super(Ui_Dialog, self).__init__(parent)
    self.setupUi(self)
    self.setupPlot()

def setupUi(self, Dialog):
    
    Dialog.setObjectName("Dialog")
    Dialog.resize(400, 300)
    self.buttonBox = QtGui.QDialogButtonBox(Dialog)
    self.buttonBox.setOrientation(QtCore.Qt.Vertical)
    self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
    self.buttonBox.setObjectName("buttonBox")

    self.buttonBox.accepted.connect(Dialog.accept)
    self.buttonBox.rejected.connect(Dialog.reject)
    QtCore.QMetaObject.connectSlotsByName(Dialog)
    
    self.setLayout(QtGui.QHBoxLayout())
    self.layout().setContentsMargins(0,0,0,0)
    

def setupPlot(self):
    self.figure = plt.figure()
    self.figure.set_facecolor("none")
    self.canvas = FigureCanvas(self.figure)
    self.canvas.setContentsMargins(0,0,0,0)
    self.widget = QtGui.QWidget()
    self.widget.setContentsMargins(0,0,0,0)

    self.toolbar = NavigationToolbar(self.canvas, self)
    self.toolbar.setContentsMargins(0,0,0,0)
    layout = QVBoxLayout()
    layout.setSpacing(0)
    layout.setContentsMargins(0,0,0,0)
    layout.addWidget(self.toolbar)
    layout.addWidget(self.canvas)
    self.widget.setLayout(layout)
    self.layout().addWidget(self.widget)
    self.layout().addWidget(self.buttonBox)
    self.plot()

def plot(self):
    data = [random.random() for i in range(10)]
    self.figure.clear()
    ax = self.figure.add_subplot(111)
    ax.plot(data, '*-')
    self.canvas.draw()

if __name__ == '__main__':
app = QApplication(sys.argv)
main = Ui_Dialog()
main.show()
sys.exit(app.exec_())

或者,您可以先将工具栏放在QVBoxLayout并在下面放置一个包含画布和按钮框的小部件QHBoxLayout.

enter image description here

import sys
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
import matplotlib.pyplot as plt
import random

from PyQt4 import QtCore, QtGui

class Ui_Dialog(QtGui.QDialog):
def __init__(self, parent=None):
    super(Ui_Dialog, self).__init__(parent)
    self.setupUi(self)

def setupUi(self, Dialog):
    
    Dialog.setObjectName("Dialog")
    Dialog.resize(400, 300)
    self.buttonBox = QtGui.QDialogButtonBox(Dialog)
    self.buttonBox.setOrientation(QtCore.Qt.Vertical)
    self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
    self.buttonBox.setObjectName("buttonBox")

    self.buttonBox.accepted.connect(Dialog.accept)
    self.buttonBox.rejected.connect(Dialog.reject)
    QtCore.QMetaObject.connectSlotsByName(Dialog)
    
    self.setLayout(QtGui.QVBoxLayout())
    self.layout().setContentsMargins(0,0,0,0)
    
    self.figure = plt.figure()
    self.figure.set_facecolor("none")
    self.canvas = FigureCanvas(self.figure)
    self.widget = QtGui.QWidget()

    self.toolbar = NavigationToolbar(self.canvas, self)
    self.layout().addWidget(self.toolbar)
    layout = QtGui.QHBoxLayout()
    layout.addWidget(self.canvas)
    layout.addWidget(self.buttonBox)
    self.widget.setLayout(layout)
    self.layout().addWidget(self.widget)
    
    self.plot()

def plot(self):
    data = [random.random() for i in range(10)]
    self.figure.clear()
    ax = self.figure.add_subplot(111)
    ax.plot(data, '*-')
    self.canvas.draw()

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Ui_Dialog()
main.show()
sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib 图/图/画布/布局隐藏按钮 的相关文章

  • 如何测试顶级窗口是否打开?

    我感觉 Python 编程可能不是我的菜 我创建了一个 tkinter GUI 它使用按钮回调来打开另一个窗口 其他搜索说这个窗口应该是顶级窗口 并且它工作得很好 但是每次按下按钮时它都会打开另一个相同的窗口 如据我所知 窗口 问题 如何测
  • 更改 Inkscape 的 Python 解释器

    在使用 Inkscape 时 我不断收到错误 这似乎意味着未满足 python 2 vs 3 的期望 尽管我已经安装了它们 例如 当我尝试从模板生成新文档时 我得到 Traceback most recent call last File
  • 如何将经度和纬度转换为国家或城市?

    我需要将经度和纬度坐标转换为国家或城市 python中有这样的例子吗 提前致谢 我使用谷歌的API from urllib2 import urlopen import json def getplace lat lon url http
  • Python中#和"""注释的区别

    开始用 Python 编程 我看到一些带有注释的脚本 and comments 这两种评论方式有什么区别 最好的事情就是阅读PEP 8 Python 代码风格指南 https www python org dev peps pep 0008
  • 同情因子简单关系

    我在 sympy 中有一个简单的因式分解问题 无法解决 我在 sympy 处理相当复杂的积分方面取得了巨大成功 但我对一些简单的事情感到困惑 如何得到 phi 2 2 phi phi 0 phi 0 2 8 因式分解 phi phi 0 2
  • Keras,如何获取每一层的输出?

    我已经用 CNN 训练了一个二元分类模型 这是我的代码 model Sequential model add Convolution2D nb filters kernel size 0 kernel size 1 border mode
  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • Python - 为什么这段代码被视为生成器?

    我有一个名为 mb 的列表 其格式为 Company Name Rep Mth 1 Calls Mth 1 Inv Totals Mth 1 Inv Vol Mth 2 等等 在下面的代码中 我只是添加了一个包含 38 个 0 的新列表 这
  • Python3模拟用另一个函数替换函数

    如何使用 python 中的另一个函数来模拟一个函数 该函数也将提供一个模拟对象 我有类似以下操作的代码 def foo arg1 arg2 r bar arg1 does interesting things 我想替换的实现bar函数 让
  • 如何通过facebook-sdk python api获取用户帖子?

    我使用 facebook jssdk 授权我的应用程序读取用户个人资料和用户帖子 FB login function response scope user status user likes user photos user videos
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 将带有两层分隔符的字符串转换为字典 - python

    给定一个字符串 s x t1 ny t2 nz t3 我想转换成字典 sdic x 1 y 2 z 3 我通过这样做让它工作 sdic dict tuple j split t for j in i for i in s split n F
  • 散景中的时间序列流

    我想在散景中绘制实时时间序列 我只想在每次更新时绘制新的数据点 我怎样才能做到这一点 散景网站上有一个动画情节的示例 但它每次都需要重新绘制整个图片 另外 我正在寻找一个简单的示例 我可以在其中逐点绘制时间序列的实时绘图 散景效果0 11
  • 将 ASCII 字符转换为“”unicode 表示法的脚本

    我正在对 Linux 区域设置文件进行一些更改 usr share i18n locales like pt BR 并且需要格式化字符串 例如 d m Y H M 必须以 Unicode 指定 其中每个 在本例中为 ASCII 字符表示为
  • Scrapy - 不会爬行

    我正在尝试运行递归爬行 由于我编写的爬行不能正常工作 因此我从网络上提取了一个示例并进行了尝试 我真的不知道问题出在哪里 但是爬行没有显示任何错误 谁能帮我这个 另外 是否有任何逐步调试工具可以帮助理解蜘蛛的爬行流程 非常感谢任何与此相关的
  • tweepy 流到 sqlite 数据库 - 语法错误[重复]

    这个问题在这里已经有答案了 可能的重复 tweepy 流到 sqlite 数据库 语法无效 https stackoverflow com questions 9434205 tweepy stream to sqlite database
  • 在没有numpy的情况下在python中分配变量NaN

    大多数语言都有一个 NaN 常量 您可以使用它为变量分配值 NaN python 可以在不使用 numpy 的情况下做到这一点吗 是的 使用math nan https docs python org 3 library math html
  • Python 中的 C 指针算术

    我正在尝试将一个简单的 C 程序转换为 Python 但由于我对 C 和 Python 都一无所知 这对我来说很困难 我被 C 指针困住了 有一个函数采用 unsigned long int 指针并将其值添加到 while 循环中的某些变量
  • 获取长度为 n 的所有(n-选择-k)组合

    我怎样才能获得长度的所有组合 按顺序 n从数字列表中 例如 给定列表 1 2 3 4 并设置n 3 我怎样才能得到这些结果 1 2 3 1 2 4 1 3 4 2 3 4 For combinations of all possible l

随机推荐

  • 如何在 C# 中计算整数的除法和模数?

    如何在 C 中计算整数的除法和模数 这是来自MSDN 文档 当您将两个整数相除时 结果始终是一个整数 例如 7 3 的结果是 2 要确定 7 3 的余数 请使用余数运算符 int a 5 int b 3 int div a b quotie
  • 递归函数中的 Catch 块重复执行

    我有一个递归函数 用于从 AWS 上的 CodeCommit 存储库获取 SQL 文件并按顺序运行它们 我们需要等待上一个文件完成才能运行下一个文件 如果其中一个 SQL 文件失败 我需要 catch 块来返回有关失败文件的信息 目前我在代
  • 如何使用正则表达式删除方括号及其之间的任何内容?

    如何删除方括号之间和方括号本身的文本 例如 我需要 hello quote im sneaky world 成为 hello world 这是我尝试使用的 但它没有达到目的 preg replace str 我刚刚结束 hello quot
  • 处理外部文件的 getResourceAsStream

    我的 getResourceAsStream 方法有问题 由于目录错误 它返回 null 问题是我不知道如何定义目录 我的项目结构看起来像这样 Project src com package ExampleClass java dll My
  • 如何查询数据库中用户的排名,但只考虑每个用户的最新条目?

    假设我有一个名为 Scrape 的数据库表 可能设置如下 UserID int UserName varchar Wins int Losses int ScrapeDate datetime 我试图根据用户的赢 输比对他们进行排名 但是
  • 按钮点击计数器 [PHP]

    我尝试创建一个变量来存储单击按钮的计数 不幸的是我收到这个错误 Undefined variable counter 这是我的代码 if SERVER REQUEST METHOD POST counter isset POST count
  • MySQL处于“正在发送数据”状态是什么意思?

    如果 Mysql 查询 SHOW PROCESSLIST 在 状态 列中返回 正在发送数据 我想这意味着查询已经执行并且MySQL正在向客户端发送 结果 数据 但我想知道为什么它花费了这么多时间 最多一个小时 谢谢 这是一个相当具有误导性的
  • 下面的代码中实习生是如何工作的?

    String a abc String b a substring 1 b intern String c bc System out println b c 这个问题可能很愚蠢 因为实习生在这里没有主要用途 但我仍然对这个事实感到困惑 为
  • 在android中通过Loaders插入记录

    这个问题将是被问者的后续问题内容解析器与游标加载器答案清楚地说明了如何使用 Content Resolver 将记录插入到 sqlite Db 中 我的问题如下 我可以使用加载器 普通加载器 来实现此功能吗 eg public Loader
  • 使用java将HTML转换为图像

    我在使用 java 将 html 转换为图像时遇到一些问题 我正在使用 html2image java 它创建一个图像 但问题是它只在 html 的一小部分上创建图像 我怎样才能制作整个 html 的图像 谢谢 这是我的代码 import
  • 如何使用 Nokogiri 用

    标签包装 HTML 无标签文本?

    我必须将 HTML 文档解析为不同的新文件 问题是有一些文本节点没有被包裹起来 p 标签 而不是他们有 br 每个段落末尾的标签 我想用以下文字换行 p p 使用 Nokogiri 的标签 p div b Footnote 15 b Cat
  • 在Python中复制多个文件

    如何使用 Python 将一个目录中存在的所有文件复制到另一个目录 我有源路径和目标路径作为字符串 您可以使用os listdir 获取源目录中的文件 os path isfile 查看它们是否是常规文件 包括 nix 系统上的符号链接 以
  • 如何递归替换对象中的键名称?

    我试图弄清楚如何使用递归将对象的键名称替换为新的键名称 这也包括嵌套对象内部的键名称 我觉得这与我在第一个 if 条件语句中重新分配给 newObj 的方式有关 有什么建议么 到目前为止 这是我的代码 24 Find all keys in
  • azure 搜索按分数排序和过滤

    我想知道如何使用 azure 搜索按分数过滤和排序结果 我试过 https domaine net indexes indexName email protected 20desc count true Return object stdC
  • 如何在网页中的特定 div 中垂直向下滚动

    我搜索了所有论坛 但没有得到我的问题的正确答案 我要测试的网页下面隐藏了一个链接 我尝试通过使用 xpath 或元素的 ID 属性搜索它来手动找到它 但在运行 Web 驱动程序脚本时找不到它 即使它没有在该元素上给出任何错误 我也会在下一个
  • 如何“git show”合并提交的差异?

    当我进行合并提交并运行时git show
  • FFmpeg:从 RTSP 读取时如何控制控制台输出?

    所以我创建了简单的Consol应用程序 FFmpeg RTSP视频流阅读器 仅使用通用FFmpeg C API 但是当ffmpeg从RTSP读取时它会显示大量信息 我没有询问是否 至少不是全部 那么我如何过滤 ffmpeg 输出的内容 我的
  • 如何在 Windows PE 32 位可执行文件中为我的代码洞腾出空间

    所以我想在minesweeper exe 典型的Windows XP扫雷游戏 链接 扫雷舰 所以我通过CFF Explorer修改了文件的PE头以增加文件的大小 text部分 我尝试增加原始大小 text分段1000h 新大小为3B58 但
  • 如何将此 SQL 查询转换为 EF Core 中的 LINQ 查询?

    我有下表 Indicators A INT B INT C INT D INT TimeInsertedLocal DateTime 我有映射到该表的 EF Core 映射实体 我需要将此 SQL 查询转换为 ef core Linq 等效
  • Matplotlib 图/图/画布/布局隐藏按钮

    Matplotlib 图 图 画布 布局隐藏按钮 图片应该可以解释问题 我希望绘图的容器为右侧的按钮留出空间 这是一个最小的工作代码示例 其中包含我尝试过的一些注释 import sys from PyQt5 QtWidgets impor