57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
from multiprocessing import Process, Value, Lock
|
|
from tkinter import Tk
|
|
from tkinter import Tk, ttk, Label, Button, LabelFrame
|
|
from tkinter import Grid, StringVar, DoubleVar
|
|
from tkinter import N, E, S, W
|
|
from tkinter import DISABLED, NORMAL
|
|
import os
|
|
import sys
|
|
|
|
dirname = 'C:\\Users\\dksojlg\\Documents'
|
|
|
|
platform = sys.platform
|
|
print(platform)
|
|
|
|
class testGUI:
|
|
def __init__(self, master, initval=0):
|
|
self.progress = Value('i', initval)
|
|
self.dircount = Value('i', initval)
|
|
self.foldercnt = 'Folders: {}'.format(self.dircount.value)
|
|
self.lock = Lock()
|
|
|
|
self.master = master
|
|
self.master.title('Multiprocess progressbar test!')
|
|
self.master.grid_columnconfigure(1, weight=1)
|
|
|
|
self.frame = LabelFrame(master, text='Folder count')
|
|
self.frame.grid(row=0, column=0, columnspan=3, sticky=N+S+E+W, padx=5, pady=5)
|
|
self.frame.grid_columnconfigure(1, weight=1)
|
|
|
|
self.sourcelabel = Label(self.frame, text=self.foldercnt)
|
|
self.sourcelabel.grid(row=0, column=0, sticky=E, padx=(5, 1), pady=5)
|
|
|
|
self.sourcedir_button = Button(self.frame, text="Count folders...", command= lambda: get_directories(self))
|
|
self.sourcedir_button.grid(row=0, column=2, sticky=W, padx=(3, 5), pady=5)
|
|
|
|
def increment_dir(self):
|
|
with self.lock:
|
|
self.dircount.value += 1
|
|
self.sourcelabel.config(text=self.foldercnt)
|
|
|
|
def read_dir(testgui, dirname):
|
|
for folderName, subfolders, files in os.walk(dirname):
|
|
if subfolders:
|
|
for subfolder in subfolders:
|
|
read_dir(testgui, subfolder)
|
|
#testgui.increment_dir()
|
|
|
|
def get_directories(testgui):
|
|
p = Process(target=read_dir, args=(testgui, dirname,))
|
|
p.start()
|
|
|
|
if __name__ == "__main__":
|
|
root = Tk()
|
|
root.update()
|
|
root.resizable(False, False)
|
|
testgui = testGUI(root)
|
|
root.mainloop() |