Python 如何控制单个matplotlib子批次';使用tkinter实时缩放x轴?
第一次向stackoverflow发帖,所以我会努力做到这一点 我在python中运行一个数据采集模块,它的输入数据流是另一个python模块的输出。Tkinter滑块用于控制:绘图的x轴比例(用于绘制输入数据)和“生成速度”:Python 如何控制单个matplotlib子批次';使用tkinter实时缩放x轴?,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,第一次向stackoverflow发帖,所以我会努力做到这一点 我在python中运行一个数据采集模块,它的输入数据流是另一个python模块的输出。Tkinter滑块用于控制:绘图的x轴比例(用于绘制输入数据)和“生成速度”: for axisnum in range( len( subplots ) ): wScale = Tkinter.Scale( master = roots[root], label = "View
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轴比例,有什么建议吗
更新
也许问题出在我的实时绘图仪上
注:数据集[Figure][subs][data]将为您获取特定子批次的数据点;SUB通常应保留在“0”处
下面的示例没有问题,因此您的代码中一定有我无法复制的内容。当你说“canvas”时,它是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()
另外,不用说,我是pythonWelcome的新手,Luke,你可能会对>>>感兴趣,还有一个程序化的例子不幸的是,因为我被告知要基于其他人的代码基础架构进行构建,我仅限于修改我面前已经存在的内容,这是非常严格的限制我不是Tkinter专家,但是您的行为表明,问题源于没有保持Scale实例的不同(您正在“覆盖”循环中的wScale和wScale2)。也许可以试着形成并填充几个小部件列表?澄清一下,滑块实际上位于画布对象上。根是根的列表,即Tkinter.Tk()Tkinter.Toplevel(),这样我可以一次打开多个数据采集图形。
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()