【问题标题】:clear_fig not working on one tab after another tab is used使用另一个选项卡后,clear_fig 无法在一个选项卡上工作
【发布时间】:2020-09-17 08:57:41
【问题描述】:

我有一个带有多个选项卡的 GUI,我使用选项卡 2 和 3。首先我对选项卡 2 进行了编码 - 一个在按下绘图数据按钮时绘制绘图的图形,并在按下清除按钮时清除,这很好用. 但是,当我编写具有类似功能的第二个选项卡时 - 但具有完全不同的情节 - 清晰的情节/清晰的无花果适用于第二个选项卡而不是第一个。 清除绘图按钮链接到具有不同名称的不同 clear_fig 函数。

我可以发布完整的代码,但它很大,我不想在这里开始添加它,我也不知道如何将它最小化为最低的可重现错误。

代码

Tab2 函数

def clearPlot():
    fig.clear()
    my_canvas.draw_idle()

button3 = tk.Button(my_frame_2, text = "Clear \nPlot", command = clearPlot, relief = tk.GROOVE, bg = "red", padx =20, pady =20 )
button3.pack(side="top", fill="x")

Tab3 函数

def clearPlotOPW():
    fig2.clear()
    my_canvas.draw_idle()

button2_opw = tk.Button(my_frame_4, text = "Clear \nPlot", command = clearPlotOPW, relief = tk.GROOVE, bg = "red", padx =20, pady =20 )
button2_opw.pack(side="top", fill="x")

【问题讨论】:

  • 为什么不直接将 fig 对象传递给函数并拥有 1 个函数而不是 2 个函数?
  • @GhandiFloss - 你是怎么做到的? GUI 结尾可能有 8 个选项卡,我不确定如何将 fig 作为参数传递给 clearPlot 函数。

标签: python matplotlib button tkinter plot


【解决方案1】:

正如我在 cmets 中所述,您可以更改函数以获取无花果。也许也可以使用partial

from functools import partial

def clearPlot(fig):
    fig.clear()

# pass in the fig you want clearing here
funcArgs = partial(clearPlot, figureX)
button = Tk.Button(master=frame, text='Clear', command=funcArgs)

【讨论】:

  • 我刚刚尝试过,但它对我不起作用,更新了按钮中的命令以调用功能主义者清除并将 fig 传递给它。如果我完全删除第三个选项卡的代码,我之前的代码清除按钮&tab2 的功能可以正常工作。
猜你喜欢
  • 2017-05-06
  • 1970-01-01
  • 2018-10-24
  • 2014-02-05
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多