【问题标题】:Can't apply style to Tkinter slider无法将样式应用于 Tkinter 滑块
【发布时间】:2021-05-18 20:10:10
【问题描述】:

我正在尝试将样式应用于tkinter 中的滑块小部件。但是,下面代码中对slider_style 参数的更改不会影响my_slider。具体来说,我正在尝试将槽宽度更改为更小。我在不同的教程中看到widthsliderthickness 参数可能会起作用,但我对任何一个都没有运气(或任何其他样式参数,就此而言)。以下是相关代码:

from tkinter import *
import tkinter.ttk as ttk

window_width = 1000
window_height = 100
root = Tk()
root.title('Measure Marker')
root.geometry(f'{window_width}x{window_height}')

slider_style = ttk.Style()
slider_style.configure('SliderStyle.Horizontal.TScale', width=5, sliderthickness =5)
my_slider = ttk.Scale(root, from_=0, to=100, length=900, style='SliderStyle.Horizontal.TScale')
my_slider.pack(pady=30)

root.mainloop()

我是否正确应用SliderStyle?这是改变槽宽的方法吗?

【问题讨论】:

    标签: python tkinter tkinter-scale tkinter.style


    【解决方案1】:

    我不久前尝试过这样做,这确实有效,我只是测试过它,

    from tkinter import *
    
    def sel():
       selection = "Value = " + str(var.get())
       label.config(text = selection)
    
    window_width = 1000
    window_height = 100
    root = Tk()
    root.geometry(f'{window_width}x{window_height}')
    
    var = DoubleVar()
    scale = Scale(root, width=5, orient=HORIZONTAL, variable = var )
    scale.pack(anchor=CENTER)
    
    button = Button(root, text="Get Scale Value", command=sel)
    button.pack(anchor=CENTER)
    
    label = Label(root)
    label.pack()
    
    root.mainloop()
    
    
    

    【讨论】:

    • 你知道你的代码可以简化为import tkinter as tk; root = tk.Tk(); scale = tk.Scale(root, width=5, orient="horizontal"); scale.pack(); root.mainloop()
    • 是的,我知道,只是从我不久前试图做的其他事情中抓住了它。添加滑块的值并没有什么坏处
    • 在我的 Windows 10 上,它会自动在滑块顶部显示值。所以我删除了标签、按钮和双变量
    • 我的坏笑,不使用 Windows,干得好
    • 感谢@WirelessTaco。然而,更改width 参数会影响波谷高度,这不是我想要的。如果orient=VERTICAL,它会改变实际宽度,但在我的情况下使用垂直滑块不是一个选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多