我认为我想做的事情很简单,但显然不是。
我想要做的是使用tkinter比例来控制用户可以输入的范围和值。
在我的情况下,我想以秒为单位输入时间值,并以分钟:秒格式显示,以便任何人都可以理解,比如330秒== 5:30。
因为这不是缩放小部件的标准格式,我想要做的是以缩放小部件旁边的mm:ss格式显示时间。
在我的示例代码中,我可以看到比例值发生变化,但到目前为止,我无法让mm:ss显示随着比例移动而改变(我必须单击一个按钮才能使其更新)。 因为我希望最终结果尽可能地白痴,我需要使用mm:ss显示来动态更改滑块。
在这个阶段,我似乎已经耗尽了我能找到的所有在线示例,并且没有一个看起来像我想要的那样(转换需要额外的按钮按下)。
我很确定当我发现如何做到这一点时我会感到愚蠢,但是现在我的脑袋因为试图解决这个问题而感到痛苦。
有没有人有他们可以分享的这种行为的例子?
答案 0 :(得分:2)
scale小部件有一个command
属性,只要值发生变化,您就可以使用该属性调用函数。然后,此函数可以将值重新格式化为您想要的任何值。
import Tkinter as tk
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.scale = tk.Scale(self, orient="horizontal",
from_=0, to=600,
showvalue=False,
command=self._on_scale)
self.scale_label = tk.Label(self, text="")
self.scale.pack(side="top", fill="x")
self.scale_label.pack(side="top")
def _on_scale(self, value):
value = int(value)
minutes = value/60
seconds = value%60
self.scale_label.configure(text="%2.2d:%2.2d" % (minutes, seconds))
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True);
root.mainloop()