如何使用tkinter实时控制单个matplotlib子批次的X轴比例?

2024-09-30 03:24:41 发布

您现在位置:Python中文网/ 问答频道 /正文

第一次张贴到stackoverflow,所以我会努力把这个正确。。。在

我用python运行一个数据采集模块,它的输入数据流是另一个python模块的输出。Tkinter滑块用于控制:绘图的x轴比例(绘制输入数据)和“生成速度”:

for axisnum in range( len( subplots ) ):
    wScale  = Tkinter.Scale( master = roots[root],
                             label  = "View Width on Plot %s:" % ( axisnum ),
                             from_  = 3, to = 1000,
                             orient = Tkinter.HORIZONTAL,
                             sliderlength   = 30,
                             length = subplots[axisnum].get_frame().get_window_extent().width,
                             )
    wScale2 = Tkinter.Scale( master = roots[root],
                             label  = "Generation Speed for Plot %s:" % ( axisnum ),
                             from_  = 1, to = 200,
                             orient = Tkinter.HORIZONTAL,
                             sliderlength   = 30,
                             length = subplots[axisnum].get_frame().get_window_extent().width
                             )
    wScale2.pack( side = Tkinter.BOTTOM )
    wScale.pack(  side = Tkinter.BOTTOM )
    wScale.set(   100 )
    wScale2.set(  wScale2['to'] - 3 )

问题是,尽管这会在画布上创建所有的“n”对滑块窗口小部件,但只有第一个实际处于活动状态,而且充当“主滑块”同时控制所有“n”个子窗口。在

轻微的修改导致了“x和y数据的长度必须相同”。在

有什么建议,我可以创建tkinter滑块来控制单个图形上各个子图的x轴的比例?在

更新

可能是我的绘图机出了问题?在

注意dsets[Figure][subs][data]将为您获取特定子时隙的数据点;sub通常应保留为“0”。

^{pr2}$

Tags: 模块to数据masterforgettkinter比例
1条回答
网友
1楼 · 发布于 2024-09-30 03:24:41

下面的例子没有问题,所以你的代码中一定有我无法复制的东西。当你说“canvas”是画布对象上的滑块,还是仅仅是一种比喻。另外,哪种类型的对象是根[root]。在

“实际上只有第一个是活动的,而且充当“主滑块”同时控制所有的“n”个子批次” 我认为唯一可能的方法是它们都指向同一个物体。在

import Tkinter
root=Tkinter.Tk()
root.geometry("225x150")

for slide_length in (200, 150):
    wScale  = Tkinter.Scale( master = root,
                         label  = "View Width on Plot ",
                         from_  = 3, to = 1000,
                         orient = Tkinter.HORIZONTAL,
                         sliderlength   = 30,
                         length = slide_length)
    wScale.pack(side = Tkinter.BOTTOM)
root.mainloop()

相关问题 更多 >

    热门问题