gpt4 book ai didi

python - 如何设置 tkinter 比例 slider 的颜色?

转载 作者:行者123 更新时间:2023-12-04 10:47:20 26 4
gpt4 key购买 nike

我想设置 slider 颜色(箭头部分),我只尝试了很多参数-background可以改变 slider 的颜色。

enter image description here

但是当我使用 -background 时, slider 和背景会一起改变颜色, 像这样:

enter image description here

如果我将颜色设置为与背景颜色相同,则会导致很难找到 slider 。

如何设置 slider 的颜色?

我的比例代码:

s2 = Scale(control_frame, from_=0, to=100, tickinterval=100, sliderrelief='flat', orient="horizontal", highlightthickness=0, background='black', fg='grey', troughcolor='#73B5FA', activebackground='#1065BF')
s2.place(x=70, y=600, anchor='nw', width = 280, height = 50)

最佳答案

要实现你想要的,我们必须使用 ttk 样式,所以我们需要使用 ttk.Scale ,但是,它不接受 tk.Scale 的所有选项。您正在使用。因此,我建议您使用 TickScale来自 ttkwidgets模块(参见文档 here)。这样您就可以组合 tk.Scale带有 ttk 样式的选项。

这个想法是:

  • 为 slider 创建所需颜色的图像,例如和tk.PhotoImage :
    img_slider = tk.PhotoImage(width=30, height=15)
    img_slider.put("{<pixel_color> ... <pixel_color>} {<second line>} ...")

    我使用了一个基本的矩形,但如果你愿意,你也可以加载一个更精细的图像。
  • 创建彩色 slider 主题元素:
    style.element_create('custom.Horizontal.Scale.slider', 'image', img_slider,
    ('active', img_slider_active))

    我还使用了不同的图像 img_slider_active , 以在光标位于 slider 上时突出显示 slider 。
  • 以自定义样式使用新元素
    style.layout('custom.Horizontal.TScale',
    [('Horizontal.Scale.trough',
    {'sticky': 'nswe',
    'children': [('custom.Horizontal.Scale.slider',
    {'side': 'left', 'sticky': ''})]})])
  • 将自定义样式应用到您的 TickScale小部件。由于TickScale基于 ttk.Scale ,您需要使用样式来设置背景、前景和槽色选项,完整代码见下文。
  • import tkinter as tk
    from tkinter import ttk
    from ttkwidgets import TickScale

    def set_img_color(img, color):
    """Change color of PhotoImage img."""
    pixel_line = "{" + " ".join(color for i in range(img.width())) + "}"
    pixels = " ".join(pixel_line for i in range(img.height()))
    img.put(pixels)

    root = tk.Tk()
    # create images used for the theme
    slider_width = 30
    slider_height = 15
    # normal slider
    img_slider = tk.PhotoImage('img_slider', width=slider_width, height=slider_height, master=root)
    set_img_color(img_slider, "red")
    # active slider
    img_slider_active = tk.PhotoImage('img_slider_active', width=slider_width, height=slider_height, master=root)
    set_img_color(img_slider_active, '#1065BF')

    style = ttk.Style(root)
    style.theme_use('clam')
    # create scale element
    style.element_create('custom.Horizontal.Scale.slider', 'image', img_slider,
    ('active', img_slider_active))
    # create custom layout
    style.layout('custom.Horizontal.TScale',
    [('Horizontal.Scale.trough',
    {'sticky': 'nswe',
    'children': [('custom.Horizontal.Scale.slider',
    {'side': 'left', 'sticky': ''})]})])
    style.configure('custom.Horizontal.TScale', background='black', foreground='grey',
    troughcolor='#73B5FA')
    scale = TickScale(root, from_=0, to=100, tickinterval=100, orient="horizontal",
    style='custom.Horizontal.TScale')
    scale.pack(fill='x')
    root.mainloop()

    关于python - 如何设置 tkinter 比例 slider 的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642558/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com