Как связать Progressbar между программой на Python и окном tkinter? - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть два .py файла в папке (Main_program.py и HMI.py).Первый - это код, который содержит большой цикл (который увеличивается) с печатью в начале, которая отображает эволюцию выполнения кода (10%, 20% и т. Д.).И второй файл - это интерфейс, который содержит кнопку, которая выполняет Main_program.py.Я хотел бы создать Progressbar в моем интерфейсе, который был бы связан с развитием печати в первом коде.Но как нам это сделать?Большое спасибо.

HMI.py:

import tkinter
from tkinter import *
from tkinter import ttk
from Main_program import run_progessbar
...
root = Tk()
...
jj=0
progessBar = ttk.Progressbar(root, orient="horizontal",length=170,
                             style='black.Horizontal.TProgressbar',
                             mode='determinate', variable=jj)
progessBar.place(x=1060,y=180
...

Main_program.py:

def run_progessbar():
    import numpy as np
    import matplotlib
    ...
    global jj  #without function here jj=0
    while ii > 0 and ii <= np.floor(count / Nbtot):
        if np.remainder(ii,Ni / (10*Nbtot)) == 0:
            jj=jj + 10
            print(str(jj)+'%')
        ...
        ii=ii+1

   #in the shell
    global jj
    SyntaxError: name 'jj' is used prior to global declaration

1 Ответ

0 голосов
/ 26 ноября 2018

Моаб,

Вы уже пробовали что-то подобное?

jj = 0
self.progessBar = ttk.Progressbar(self.frame, orient="horizontal", 
                                  length=286, mode="determinate", 
                                  value=jj).pack(pady=10)

def run_progessbar(self):

    global jj
    while ii > 0 and ii <= np.floor(count / Nbtot):
    ...
        jj=jj + 10
        print(str(jj)+'%')
    ...
        ii=ii + 1

Я нашел две полезные ссылки:

Обновление индикатора прогресса Tkinter

Обновление индикатора выполнения

...