tkinter 比例小部件的未知选项
Unknow option for tkinter scale widget
我正在编写一个 GUI,您必须在其中输入数字。我想要一个秤,但它非常适合我的目的。问题是比例达到 1e-9 精度。这对我来说太精确了。我正在为 tkinter
使用 ttk
扩展名。我已经尝试了几件事,但我看到比例尺有一个数字选项,当有 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')
这是文档:
An integer specifying how many significant digits should be retained when converting the value of the scale to a string.
Official Documentation : 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
中使用 textvariable
,您还可以跟踪变量的变化,首先处理值,然后返回给 Label
.
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()
我正在编写一个 GUI,您必须在其中输入数字。我想要一个秤,但它非常适合我的目的。问题是比例达到 1e-9 精度。这对我来说太精确了。我正在为 tkinter
使用 ttk
扩展名。我已经尝试了几件事,但我看到比例尺有一个数字选项,当有 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')
这是文档:
An integer specifying how many significant digits should be retained when converting the value of the scale to a string. Official Documentation : 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
中使用 textvariable
,您还可以跟踪变量的变化,首先处理值,然后返回给 Label
.
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()