Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何控制单个matplotlib子批次';使用tkinter实时缩放x轴?_Python_Matplotlib_Tkinter - Fatal编程技术网

Python 如何控制单个matplotlib子批次';使用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

第一次向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轴比例,有什么建议吗

更新

也许问题出在我的实时绘图仪上

注:数据集[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()