有没有办法可以使用 Tkinter 中的按钮切换绘图方法?

问题描述 投票:0回答:1

我知道这是一个不可能实现的目标,但我有一个应用程序可以绘制 n 光谱(每个能量的计数),并且我希望可以选择将它们可视化为正常光谱或直方图。

有没有一种方法可以检测当前正在使用的方法并使用切换按钮切换到其他绘图方法?我使用 plt.plot 作为第一个,使用 plt.step 作为另一个。

我可以使用类似这样的方法对 x 和 y 尺度做同样的事情:

    def toggle_xscale(self):
        """Toggle the x-axis scale between linear and logarithmic."""
        current_scale = self.plot_axes.get_xscale()
        new_scale = 'log' if current_scale == 'linear' else 'linear'
        self.plot_axes.set_xscale(new_scale)
        self.canvas.draw_idle()  # Redraw the canvas

    def toggle_yscale(self):
        """Toggle the y-axis scale between linear and logarithmic."""
        current_scale = self.plot_axes.get_yscale()
        new_scale = 'log' if current_scale == 'linear' else 'linear'
        self.plot_axes.set_yscale(new_scale)
        self.canvas.draw_idle()  # Redraw the canvas

在我的自定义工具栏类中,来自 NavigationToolbar2Tk。任何人都可以帮忙吗?

我想我期待一些与我展示的提取绘图方法并更改它的功能类似的功能。

matplotlib tkinter plot histogram
1个回答
0
投票

您的函数已经在检测当前正在使用哪种方法。您现在可以简单地添加两个按钮 - 及其命令属性 - 来调用这些方法。

class YourClass(tk.Tk):
    def __init__(self):
        super().__init__()
        self.toggle_xscale_btn = tk.Button(self, text='Toggle XSCALE', command=self.toggle_xscale)
        self.toggle_xscale_btn.pack()
        self.toggle_yscale_btn = tk.Button(self, text='Toggle YSCALE', command=self.toggle_yscale)
        self.toggle_yscale_btn.pack()
        # Other self attributes and packed widgets.

    def toggle_xscale(self):
        """Toggle the x-axis scale between linear and logarithmic."""
        pass

    def toggle_yscale(self):
        """Toggle the y-axis scale between linear and logarithmic."""
        pass
© www.soinside.com 2019 - 2024. All rights reserved.