progressbar в Tkinter с меткой внутри

Возможно ли улучшить мой прогресс в Tkinter-Python, добавив метку в середине (например: файл чтения)?

Я попытался найти элегантное кодирование, но без реального результата

from Tkinter import * import ttk import tkFileDialog import time class MainWindow(Frame): def __init__(self): Frame.__init__(self) self.master.title("ProgressBar example") self.master.minsize(200, 100) self.grid(sticky=E+W+N+S) top = self.winfo_toplevel() top.rowconfigure(0, weight=1) top.columnconfigure(0, weight=1) self.start_ind = Button(self, text='Start indeterminate', command=self.start_ind, activeforeground="red") self.start_ind.grid(row=0, column=0, pady=2, padx=2, sticky=E+W+N+S) self.pbar_ind = ttk.Progressbar(self, orient="horizontal", length=300, mode="indeterminate") self.pbar_ind.grid(row=1, column=0, pady=2, padx=2, sticky=E+W+N+S) def start_ind(self): for i in xrange(50): self.pbar_ind.step(1) self.update() # Busy-wait time.sleep(0.1) if __name__=="__main__": d = MainWindow() d.mainloop() 

2 Solutions collect form web for “progressbar в Tkinter с меткой внутри”

Я добавил ярлык в панель прогресса, создав собственный стиль стиля ttk. Текст метки изменяется путем настройки стиля:

 from tkinter import Tk from tkinter.ttk import Progressbar, Style, Button from time import sleep root = Tk() s = Style(root) # add the label to the progressbar style s.layout("LabeledProgressbar", [('LabeledProgressbar.trough', {'children': [('LabeledProgressbar.pbar', {'side': 'left', 'sticky': 'ns'}), ("LabeledProgressbar.label", {"sticky": ""})], 'sticky': 'nswe'})]) p = Progressbar(root, orient="horizontal", length=300, style="LabeledProgressbar") p.pack() # change the text of the progressbar, # the trailing spaces are here to properly center the text s.configure("LabeledProgressbar", text="0 % ") def fct(): for i in range(1, 101): sleep(0.1) p.step() s.configure("LabeledProgressbar", text="{0} % ".format(i)) root.update() Button(root, command=fct, text="launch").pack() root.mainloop() 

Попробовали ли вы создать текстовую метку и поместить ее в ту же строку / столбец и установить ее таким же образом:

 self.Lab = Label(self,length=200) self.Lab.grid(row=1,column=0,pady=2,padx=2,sticky=E+W+N+S)) 

Но вы хотите поместить его после виджета индикатора выполнения.

  • Запись голоса в цикле while с использованием Tkinter
  • Почему я получаю уродливые фигурные скобки вокруг моего текста в виджетах ярлыков? - Tkinter
  • Вертикальный текст в холсте Tkinter
  • Как создать представление дерева с флажками в Python
  • Обновите текстовый виджет Tkinter, поскольку он написан, а не после завершения класса.
  • python tkinter с простой веб-оберткой
  • Выравнивание вкладок справа налево с помощью виджета ttk.Notebook
  • Диалоговое окно опроса Tkinter
  • Python - лучший язык программирования в мире.