我正在尝试使用tkinter创建一个包含缩放按钮等的GUI。
现在,我有这个量表的集合。我知道可以使用scale.set()
更新比例
现在,我有一个[[1,2,3,4,5],[5,4,3,2,1],[3,3,3,3,3]]
形式的列表。
我想浏览列表中的每个元素(例如[1,2,3,4,5])并使用此元素的值(也是列表)更新比例
所以我做了
def runMotion():
#r=3
for n in range(len(list)):
print(list[n])
for count in range(5):
print(list[n][count])
motorList[count].scale.set(list[n][count])
#motorList[count].moveTo(list[n][count])
time.sleep(5)
这里motorList是一个类数组,每个类都有一个比例,因此motorList[count].scale
问题是GUI(比例尺)没有更新,除了最后一个(在我们的例子中[3,3,3,3,3]) GUI在执行时被冻结,并且只有最后的“运动”反映在比例值中。
我是python的初学者,特别是做GUI,我很感激这里的建议
答案 0 :(得分:0)
问题是你正在使用阻止TK事件循环的“for”循环。这意味着事情是由您的程序计算的,但GUI不会更新。请尝试以下方法:
list = [[1,2,3,4,5],[5,4,3,2,1],[3,3,3,3,3]]
def runMotion(count):
if len(list) == count:
return
print(list[count])
for index,n in enumerate(list[count]):
print(index,n)
motorList[index].set(n)
#motorList[count].moveTo(list[n][count])
root.after(5000, lambda c=count+1: runMotion(c))
root = Tk()
motorList = []
for i in range(1,6):
s = Scale(root, from_=1, to=5)
s.grid(row=i-1)
motorList.append(s)
runMotion(0)
root.mainloop()