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)) 

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

  • Пример секундомера Python - запуск всех экземпляров класса одновременно?
  • как передать значения во всплывающую команду правой кнопкой мыши в python tkinter
  • Отчеты о сбоях в Python
  • Python: преобразование CLI в GUI
  • Есть ли способ создать прозрачные окна с Tkinter?
  • Как я могу запрограммировать два одновременных события нажатия клавиш в tkinter, чтобы перемещать элемент холста по диагонали с помощью словаря событий нажатия клавиш?
  • Масштабирование GUI Tkinter в разрешении 4k (3840 * 2160)?
  • TKinter в Virtualenv
  • Python ForLoop с вложенными функциями after (), которые происходят после цикла
  • как очистить / удалить текстовое поле в tkinter python на Ubuntu
  • Установить tkinter и python локально
  • Python - лучший язык программирования в мире.