tkinter 比例小部件的未知选项



我正在编写一个GUI,你必须输入一个数字。我想要一个秤,但它非常符合我的目的。问题是刻度达到 1e-9 精度。这对我来说非常精确。我正在使用ttk扩展名进行tkinter.我已经尝试了几件事,但我看到秤有一个数字选项,当有StringVar()时,会留下位数,但它不起作用,它无法识别该选项。我试图在图书馆里寻找,但我找不到任何东西,它太复杂了。

以下是我的代码是如何形成的:

scaleValue = StringVar()
scale = ttk.Scale(content, orient=HORIZONTAL, from_=1, to=5, variable=scaleValue, length=150, digits=1)  # here digits ins't recongnised
scale.grid(column=x, row=y)
scaleValueLabel = ttk.Label(content, textvariable=scaleValue)
scaleValueLabel.grid(column=x', row=y')

以下是文档:

一个整数,指定在将小数位数转换为字符串时应保留多少位有效数字。 官方文档 : http://www.tcl.tk/man/tcl8.6/TkCmd/scale.htm

digits是一个

仅适用于tk.Scale的参数。如果您切换到使用它,那么您的代码将起作用:

scale = tk.Scale(root, orient=tk.HORIZONTAL, from_=1, to=5, variable=scaleValue, length=150, digits=5)

但是如果你真的想使用ttk.Scale,你可以使用不同的方法。您可以在变量上跟踪更改,先处理值,然后传递回Label,而不是在Label中使用textvariable

import tkinter as tk
from tkinter import ttk
root = tk.Tk()
scaleValue = tk.DoubleVar()
scale = ttk.Scale(root, orient=tk.HORIZONTAL, from_=1, to=5, variable=scaleValue, length=150)  # here digits ins't recongnised
scale.grid(column=0, row=0)
scaleValueLabel = tk.Label(root, text="0")
scaleValueLabel.grid(column=0, row=1)
def set_digit(*args):
    scaleValueLabel.config(text="{0:.2f}".format(scaleValue.get()))
scaleValue.trace("w", set_digit)
root.mainloop()

最新更新