0
我想用tkinter來創建一個GUI,包含比例按鈕等。 現在,我有這個比例的集合。而且我知道可以使用scale.set()
來更新比例尺。現在,我有一個例如[[1,2,3,4,5],[5,4,3,2,1],[3,3,3,3,3]]
的列表。TKinter比例和GUI更新
我想通過列表中的每個元素(如[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執行時凍結ng,並且只有最後一個「動作」反映在比例值中。
我在python初學者,特別是做圖形用戶界面,我會是你使用的是「for」循環,其阻斷TK事件循環欣賞這裏的建議
謝謝。我會閱讀你的解決方案來理解它。只有一個問題:runMotion是否被遞歸調用? – KansaiRobot
我問這是因爲在我編寫的程序中,在下一個版本中,我將無限期地運行它,並且我不想凍結GUI或耗盡資源 – KansaiRobot
從技術上講,runMotion正在計劃在事件堆棧中。事件循環(mainloop)頻繁檢查事件堆棧,如果事件計劃運行,它將運行它。這就是root.after(5000 ...)命令正在做的事情 - 每次runMotion完成時放置一個事件。這具有在不阻止GUI內的用戶輸入的情況下執行GUI更新的效果,並且允許GUI在下一個runMotion事件之前可視地更新。 –