Tkinter规模小部件的未知选项

时间:2019-06-19 09:27:52

标签: python tkinter scale ttk

我正在编码一个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')

这里是文档:

  

一个整数,指定将标度的值转换为字符串时应保留多少位有效数字。    Official Documentation : http://www.tcl.tk/man/tcl8.6/TkCmd/scale.htm

1 个答案:

答案 0 :(得分:1)

digits是仅tk.Scale可用的参数。如果您选择使用它,那么您的代码将起作用:

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

但是,如果您确实要使用ttk.Scale,则可以使用其他方法。可以在变量{{1}中使用textvariable,而不是使用Label,而是可以跟踪变量的变化,先处理该值,然后再传递回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()