我有一个问题,每当我运行一个看似很大的功能时,tkinter Scale 小部件似乎就会卡住。
这是代码:
from tkinter import Tk, Button, Frame, Scale
root = Tk()
slider = Scale(root, orient='horizontal')
slider.pack()
frame = Frame(root)
frame.pack()
num = 0
def buttons():
for widget in frame.winfo_children():
widget.destroy()
for i in range(50):
Button(frame, text='Button' + str(i)).pack()
def basic():
global num
slider.set(num)
num += 1
print(num)
if num <= 100:
slider.after(100, basic)
if __name__ == '__main__':
buttons()
basic()
root.bind('<space>', lambda x: buttons())
root.mainloop()
我希望我的程序做的是正常更新滑块,即使我按下“空格”(意思是调用buttons()
函数)
如果你每次按下空格时都仔细观察,滑块会卡住一点。
由于我将滑块用于 Mp3 播放器以显示经过的时间,因此这种时间损失非常重要,例如对于 10 秒左右的音频文件,因为滑块落后很多,看起来好像工作错误\
我还想指出,销毁按钮然后重新包装它们对我来说是必要的。
我怀疑发生这种情况是因为程序必须检查buttons()
函数,因为它创建了 50 个按钮,因此需要一些时间。还是我弄错了?
我可以避免这种滞后吗?
PS:正如我在评论中提到的:
我通常有一个按钮来重命名一个(按钮),这是一首歌曲,为了让它们在重命名后按字母顺序排列,我需要调用绘制它们的函数。如果我只配置按钮的名称(而不重绘它们),它将保持原位并且不会根据其名称向下或向上移动,而在实际目录中,顺序将改变导致不适当的行为,例如播放相同歌曲
提前致谢!