You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

tkinter中ttk.Scale滑块上方数值不显示,请问代码存在什么问题?

问题原因

你使用的ttk.Scale组件本身没有内置滑块数值跟随显示功能,你预期的拖动时显示数值是原生tkinter.Scale的默认特性,当前代码的问题是选择了ttk版本的Scale组件但未额外实现数值显示逻辑。

修复方案

方案1:替换为原生tk.Scale(最简单,开箱即用)

直接将代码中的ttk.Scale替换为tk.Scale即可,原生tk.Scale的showvalue参数默认为True,拖动滑块时会自动在上方显示当前数值,修改后核心代码如下:

import tkinter as tk

root = tk.Tk()
root.geometry('150x75')
root.resizable(width=False, height=False)
root.eval('tk::PlaceWindow . center')

v1 = tk.IntVar()

# 仅修改这里的组件类即可
tk.Scale(root, from_=0, to=100, orient='horizontal', variable=v1).pack(pady=20)

root.mainloop()

方案2:保留ttk.Scale,手动添加数值显示逻辑

如果必须使用ttk风格的Scale组件,可以额外添加一个Label控件,绑定Scale的拖动事件实时更新数值,完整示例如下:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.geometry('150x100')
root.resizable(width=False, height=False)
root.eval('tk::PlaceWindow . center')

v1 = tk.IntVar()
# 新增显示数值的标签
value_label = tk.Label(root, text='当前值:0')
value_label.pack(pady=(10, 0))

def update_scale_value(val):
    # val是拖动时Scale返回的当前值字符串,转成int后更新标签
    value_label.config(text=f'当前值:{int(float(val))}')

ttk.Scale(
    root, from_=0, to=100, 
    orient='horizontal', variable=v1,
    command=update_scale_value
).pack(pady=10)

root.mainloop()

内容的提问来源于stack exchange,提问作者Shidharth Routh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:27:04