Я использовал свойство digits
для tk.Scale
, чтобы убедиться, что числа в Label
или Spinbox
показывают фиксированное количество десятичных цифр при перемещении ползунка. Как 3.456, 4444.567, 5555555.678, ...
Однако, с ttk.Scale
digits
и resolution
ушли. У меня остается длинное десятичное число, если в качестве переменной масштаба используется tk.DoubleVar
. Итак, согласно этому сообщению:
Как заставить ttk.Scale вести себя больше как tk.Scale?
Я должен был бы написать свою собственную схему отображения чисел для метки, что кажется сумасшедшим, когда я уже работаю с классом виджетов. Я еще не видел, как сохранить DoubleVar для этого, потому что мне нужно будет изменить его строковое представление.
Есть ли более простой способ добиться того, чего я хочу?
UPDATE:
Вот код:
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
mainframe = tk.Frame(root)
# Model
input = tk.DoubleVar(value=0.)
spin = tk.Spinbox(mainframe, textvariable=input, wrap=True, width=10)
slide = ttk.Scale(mainframe, variable=input, orient='horizontal', length=200)
spin['to'] = 1.0
spin['from'] = 0.0
spin['increment'] = 0.01
slide['to'] = 1.0
slide['from'] = 0.0
# slide['digits'] = 4
# slide['resolution'] = 0.01
# Layout
weights = {'spin': 1, 'slide': 100}
mainframe.grid_rowconfigure(0, weight=1)
mainframe.grid_columnconfigure(0, weight=weights['spin'])
mainframe.grid_columnconfigure(1, weight=weights['slide'])
spin.grid(row=0, column=0, sticky='news')
slide.grid(row=0, column=1, sticky='news')
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
mainframe.grid(row=0, column=0)
root.mainloop()
Когда я перетаскиваю Шкалу, десятичное число внезапно выходит из-под контроля.
