[英]How to remove scale value from tkinter Scale widget display?
我正在嘗試在應用程序中使用 tkinter Scale 小部件,每當我設置 tickinterval 屬性時,slider 下方都會顯示一個值。
有沒有辦法抑制顯示低於 slider 的比例值並仍然指定刻度間隔?
我的用例是創建一個非線性 slider ,其中縮放值 0-6 map 到值列表,如 1、4、10、40、100、400、1000。在這種情況下,顯示小部件的值沒有意義給用戶。
我的另一種選擇是使用 combobox 或一系列單選按鈕。
歡迎提出建議。
這是一個示例程序:
import tkinter as tk
def scaleChanged():
scaleValue = "Value = " + str(var.get())
label.config(text = scaleValue)
root = tk.Tk()
root.geometry('300x150+100+100')
var = tk.DoubleVar()
scale = tk.Scale( root, orient=tk.HORIZONTAL, from_=0, to=6, showvalue=0,
variable = var, length=180, tickinterval=30)
scale.pack(anchor = tk.CENTER, pady=(20,10))
button = tk.Button(root, text = "Fetch Scale Value", command = scaleChanged)
button.pack(anchor = tk.CENTER, pady=10)
label = tk.Label(root)
label.pack()
root.mainloop()
您可以設置 tickinterval=0(或將其刪除),使其不會顯示低於 slider 的值。 然后,當您在按鈕中獲取 slider 的值時,使用 0:1... 6:1000 的映射並將其顯示在比例 window 中。
下面是完整的腳本:
import tkinter as tk
def scaleChanged():
mapping={0:1, 1:4, 2:10, 3:40, 4:100, 5:400, 6:1000}
scaleValue = "Value = " + str(mapping.get(var.get()))
label.config(text = scaleValue)
root = tk.Tk()
root.geometry('300x150+100+100')
var = tk.DoubleVar()
scale = tk.Scale( root, orient=tk.HORIZONTAL, from_=0, to=6, showvalue=0,
variable = var, length=180, tickinterval=0)
scale.pack(anchor = tk.CENTER, pady=(20,10))
button = tk.Button(root, text = "Fetch Scale Value", command = scaleChanged)
button.pack(anchor = tk.CENTER, pady=10)
label = tk.Label(root)
label.pack()
root.mainloop()
樣品 output:
有沒有辦法抑制顯示低於 slider 的比例值並仍然指定刻度間隔?
不,那里沒有。 關閉刻度值的記錄方法是將刻度tickinterval
設置為零。 來自官方文檔:
tickinterval :必須是真實值。 確定顯示在 slider 下方或左側的數字刻度線之間的間距。 這些值都將以相同的小數位數顯示,這足以確保它們都精確到刻度間隔的 20% 以內。 如果為 0,則不顯示刻度線。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.