пересечь индикатор выполнения в Tkinter - PullRequest
0 голосов
/ 06 июля 2018

Как видно из заголовка, я хочу пересечь индикатор выполнения в Tkinter в некоторой переменной позиции. Смотрите на изображение то, чего я хочу достичь, те красные вертикальные линии, которые я отредактировал на изображении.


enter image description here

Идея состоит в том, чтобы поместить текст как "||" внутри панели и покрасьте ее по-другому, чтобы она выглядела так, как я хочу достичь. Я видел несколько примеров с текстом, помещаемым в индикатор выполнения, но он всегда был прямо в середине столбца, который не работает для меня.


Вот код, который генерирует индикаторы выполнения.

import ttk
from Tkinter import *
import random
master = Tk()

stl = ttk.Style()
stl.theme_use("winnative")
stl.configure("colour.Horizontal.TProgressbar", background="lime green")

for i in range(0,4):
    prgb = ttk.Progressbar(master, orient = "horizontal", length = 150, mode = "determinate", style = "colour.Horizontal.TProgressbar")
    prgb.grid(row=i, column=0, pady=10) 
    prgb["maximum"] = 1.0
    x = random.random()
    prgb["value"] = x


master.mainloop()

1 Ответ

0 голосов
/ 06 июля 2018

Виджет ProgressBar не поддерживает это. Однако вы можете создать маленький цветной Frame и использовать place, чтобы поместить его поверх индикатора выполнения.

Пример:

for i in range(0,4):
    prgb = ttk.Progressbar(...)
    ...
    x = random.random()
    ...
    marker = Frame(prgb, width=4, background="red")
    position = random.uniform(0,x)
    marker.place(relx=position, rely=.5, anchor="w", relheight=.5)

У меня нет доступа к машине с Windows, но на моем Mac это выглядит так:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...