0

How do I put a filesystem link and/or selectable text in the output Tkinter label?

Basically, I would like the user to be able to click on the folder that comes with the message "NO TRANSMITTAL", or at least copy and paste from the Tkinter window.

Also, I know this code can be much better looking, so please do not save any advices :):) Thanks in advance.

Code below.

import os
from tkinter import *
from tkinter import ttk
from tkinter import filedialog
gui = Tk()
gui.title("MY SCRIPT")

list_of_folders=[]
out_folders=[]
substring_transmittal="Transmittal"
current_folder=('')
substring_drawings_0='.pdf'

def getFolderPath():
    folder_selected = filedialog.askdirectory()
    folderPath.set(folder_selected)

def doStuff():
    folder = folderPath.get()
    final_print=("Checking for Transmittal in %s" %(folder))    
    
    for path, dirs, files in os.walk(folder):
        list_of_folders.append(path)
    for i in list_of_folders:
        if '6_Out' in i:
            out_folders.append(i)
        else:
            pass
    
    for o in out_folders:
        os.chdir(o)
        current_folder=os.getcwd()
        a=os.listdir(current_folder)
        string_check_transmittal = list(filter(lambda x: substring_transmittal in x, a))
        string_check_drawings_0 = list(filter(lambda x: substring_drawings_0 in x, a))
        string_check_drawings_1 = list(filter(lambda x: substring_drawings_1 in x, a))
            
        if string_check_transmittal:
            out=str(current_folder[len(folder):])
            final_print += "\n%s  --->  Transmittal OK" %(out)
        else:
            if string_check_drawings_0:
                if string_check_drawings_1:
                    out=str(current_folder[len(folder):])
                    final_print += "\n%s  ------ NO TRANSMITTAL ------" %(out)
                    for i in a:
                        print('    ',i)
                        out=i
                        final_print += "\n        %s" %(out)
                else:
                    pass
            else:
                pass
        string_check_drawings_0 = ''
        string_check_drawings_1 = ''
    display_text.config(text=(final_print))
        
folderPath = StringVar()
a = Label(gui ,text="Enter name")
a.grid(row=0,column = 0)

E = Entry(gui,textvariable=folderPath)
E.grid(row=0,column=1)

btnFind = ttk.Button(gui, text="Browse Folder",command=getFolderPath)
btnFind.grid(row=0,column=4)

c = ttk.Button(gui ,text="Check", command=doStuff)
c.grid(row=4,column=0)

d = ttk.Button(gui ,text="Exit", command=gui.destroy)
d.grid(row=4,column=4)

display_text=Label(gui, borderwidth=3, justify=LEFT)

display_text.grid(row=5,column=0,padx=5)

gui.mainloop()

0 Answers0