Я пишу приложение, которое будет использоваться как в Linux, так и в Windows.Tkinter progressbar не работает под Windows
Для графического интерфейса Я использую Tkinter, но у меня проблема при попытке запустить мою программу в Windows. В Linux, где я его разрабатывал, он работает отлично.
Я использовал toplevel с индикатором выполнения ttk, чтобы показать ход загрузки данных, прежде чем появится программа/GUI. Этот индикатор выполнения отсутствует в Windows. Это не порождает ошибку, похоже, ее там нет. Место, где он ДОЛЖЕН быть прозрачным, так что вы можете видеть окна/рабочий стол и т. Д. За верхним уровнем.
Любые идеи, почему это происходит? У кого-нибудь еще была эта проблема?
Вот код, который вызывает TopLevel:
import Tkinter as tk
import ttk
import platform
import time
class Window(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.init_progbar()
self.prog_data()
self.top.destroy()
#initializing progress bar, may be used with self.top
def init_progbar(self):
self.top = tk.Toplevel(self)
self.top.frame = tk.Frame(self.top)
self.top.frame.grid()
self.top.frame.progbar = ttk.Progressbar(self.top.frame, \
orient='horizontal', mode = 'determinate', length = '500')
self.top.frame.progbar.grid()
Window.center(self.top)
#static method to center a toplevel window
@staticmethod
def center(toplevel, size=None):
toplevel.update_idletasks()
w = toplevel.winfo_screenwidth()
h = toplevel.winfo_screenheight()
if not size:
size = tuple(int(_) for _ in toplevel.geometry().split('+')[0].split('x'))
x = w/2 - size[0]/2
y = h/2 - size[1]/2
toplevel.geometry("%dx%d+%d+%d" % (size + (x, y)))
#dummy method - somethings done, then the value of the progress bar
#is raised by 10
def prog_data(self):
for i in range(10):
time.sleep(1)
self.top.frame.progbar.step(10)
self.top.update_idletasks()
def main():
window = Window()
window.mainloop()
if __name__=='__main__':
main()
Как я уже говорил ранее, это работает под Linux без каких-либо проблем, он просто не работает на Windows.
Я пробовал его на двух разных системах Linux (openSUSE и Ubuntu) и на двух разных компьютерах под управлением Windows, одной Windows 7 и одной Windows 10. Каждый раз, когда возникает одна и та же проблема, в Windows не отображается индикатор выполнения.
Первым шагом должно быть создание [MCVE] (http://stackoverflow.com/help/mcve). Это будет а) дать вам более глубокое понимание проблемы (и, возможно, осветить решение), и б) помочь нам воспроизвести проблему. –
без фактического рабочего кода мы не можем дублировать проблему, что затрудняет диагностику. –
Ну код есть. Я не думаю, что код, где я собираю данные, необходим, есть только некоторые строки, которые обрабатывают данные, затем следует строка «self.top.frame.step (10)». Любой другой код относительно проблемы находится в этом вопросе. – TobiasTomski