我正在嘗試在應用程式中使用 tkinter Scale 小部件,每當我設定 tickinterval 屬性時,滑塊下方都會顯示一個值。
有沒有辦法抑制在滑塊下方顯示比例值并仍然指定刻度間隔?
我的用例是創建一個非線性滑塊,其中比例值 0-6 映射到值串列,如 1、4、10、40、100、400、1000。在這種情況下,顯示小部件的值是沒有意義的給用戶。
我的另一種選擇是使用組合框或一系列單選按鈕。
歡迎提出建議。
這是一個示例程式:
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()

uj5u.com熱心網友回復:
您可以設定 tickinterval=0(或將其洗掉),以便它不會在滑塊下方顯示值。然后,當您在按鈕中獲取滑塊的值時,使用 0:1... 6:1000 的映射并將其顯示在比例視窗中。
下面是完整的腳本:
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()
樣本輸出:

uj5u.com熱心網友回復:
有沒有辦法抑制在滑塊下方顯示比例值并仍然指定刻度間隔?
不,那里沒有。關閉刻度值的記錄方法是設定tickinterval為零。來自官方檔案:
tickinterval:必須是真實值。確定顯示在滑塊下方或左側的數字刻度線之間的間距。這些值都將以相同的小數位數顯示,這足以確保它們都精確到刻度間隔的 20% 以內。如果為 0,則不顯示刻度線。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504275.html
上一篇:滾動條無法在畫布上正常作業
