1 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
不幸的是,您無(wú)法更改顯示值的格式。您必須創(chuàng)建自己的標(biāo)簽,而不是使用小部件內(nèi)置的標(biāo)簽。您可以通過(guò)將命令附加到小部件并讓該命令更新標(biāo)簽來(lái)做到這一點(diǎn)。
由于您嘗試表示時(shí)間,因此我建議將from
和to
選項(xiàng)設(shè)置為秒數(shù),可以輕松地將其重新格式化為分鐘和秒。
下面是一個(gè)自定義類的基本示例,它使用固定標(biāo)簽(即:它保持居中)并將值顯示為分鐘:秒。
import tkinter as tk
class CustomScale(tk.Frame):
def __init__(self, master, *args, **kwargs):
from_ = kwargs.pop("from_", 0)
to = kwargs.pop("to", 120)
orient = kwargs.pop("orient", "vertical")
super().__init__(*args, **kwargs)
self.value_label = tk.Label(self, text="00:00")
self.scale = tk.Scale(
self, from_=from_, to=to, tickinterval=0,
command=self.update_label, showvalue=False,
orient=orient
)
self.value_label.pack(side="top", fill="x")
self.scale.pack(side="bottom", fill="x")
def update_label(self, value):
value = int(value)
minutes = value//60
seconds = value%60
self.value_label.configure(text=f"{minutes:02}:{seconds:02}")
root = tk.Tk()
scale = CustomScale(root, from_=0, to=120, orient="horizontal")
scale.pack(side="top", padx=20, pady=20)
root.mainloop()
添加回答
舉報(bào)