Untitled
unknown
plain_text
10 months ago
12 kB
19
No Index
Never
import os import tkinter as tk from tkinter import filedialog import zipfile import xml.etree.ElementTree as ET #nepotřebný objekt, do kterého jsem chtěl lepit výsledky class FireSResult: def __init__(self, overall, graphics, gt1p, gt2p): self.overall = overall self.graphics = graphics self.gt1p = gt1p self.gt2p = gt2p #zavírá program po zavření okna def on_destroy(event): quit() #procedura na nalistování složky a vložení její cesty od infoboxu def open_folder(): root = tk.Tk() root.withdraw() folder = filedialog.askdirectory() path_box.delete("1.0", tk.END) path_box.insert(tk.END, f'{folder}') # for filename in os.listdir(folder): # if filename.startswith('firestrike') and filename.endswith('loop1.3dmark-result'): # with open(os.path.join(folder, filename), 'r') as file: # data = file.read() # print(data) # break #kopíruje obsah text editu do schránky def copy_text(): text = text_box.get("1.0", tk.END) root.clipboard_clear() root.clipboard_append(text) #prochází pakovaný soubor s výsledky ze 3Dmarku def process_3dm(Selfolder, filename_start, filename_end, keyvalue1, keyvalue2=None, keyvalue3=None, keyvalue4=None, keyvalue5=None): file_found = 'not found' value1_text = 'N/A' value2_text = 'N/A' value3_text = 'N/A' value4_text = 'N/A' value5_text = 'N/A' for filename in os.listdir(Selfolder): if filename.startswith(filename_start) and filename.endswith(filename_end): file_path = os.path.join(Selfolder, filename) file_found = file_path with zipfile.ZipFile(file_path, 'r') as myzip: with myzip.open('Result.xml') as myfile: tree = ET.parse(myfile) root = tree.getroot() value1_text = 'N/A' value2_text = 'N/A' value3_text = 'N/A' value4_text = 'N/A' value5_text = 'N/A' for result in root.findall('./results/result'): if keyvalue1 is not None: value1 = result.find(keyvalue1) if value1 is not None: value1_text = value1.text if keyvalue2 is not None: value2 = result.find(keyvalue2) if value2 is not None: value2_text = value2.text if keyvalue3 is not None: value3 = result.find(keyvalue3) if value3 is not None: value3_text = value3.text if keyvalue4 is not None: value4 = result.find(keyvalue4) if value4 is not None: value4_text = value4.text if keyvalue5 is not None: value5 = result.find(keyvalue5) if value5 is not None: value5_text = value5.text result = [file_found] if keyvalue1 is not None: result.append(value1_text) if keyvalue2 is not None: result.append(value2_text) if keyvalue3 is not None: result.append(value3_text) if keyvalue4 is not None: result.append(value4_text) if keyvalue5 is not None: result.append(value5_text) return tuple(result) #hlavní procedura, prochází jednotlivé výsledky voláním funkce def open_file(): text_box.delete("1.0", tk.END) Selfolder = path_box.get("1.0", "end-1c").strip() # print(f"Selected folder: {Selfolder}") # for filename in os.listdir(Selfolder): # print(f"Found file: {filename}") # print(f"Processing file: {filename}") # file_path = os.path.join(Selfolder, filename) file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'firestrike- ', '-loop-1.3dmark-result', 'firestrikeoverallscorep', 'firestrikegraphicsscorep', 'firestrikegt1p', 'firestrikegt2p') text_box.insert(tk.END, f"{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'firestrike- ', '-loop-2.3dmark-result', 'firestrikeoverallscorep', 'firestrikegraphicsscorep', 'firestrikegt1p', 'firestrikegt2p') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'firestrike-extreme- ', '-loop-1.3dmark-result', 'FireStrikeExtreme3DMarkScore', 'FireStrikeExtremeGraphicsScore', 'FireStrikeExtremeGraphicsTest1', 'FireStrikeExtremeGraphicsTest2') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'firestrike-extreme- ', '-loop-2.3dmark-result', 'FireStrikeExtreme3DMarkScore', 'FireStrikeExtremeGraphicsScore', 'FireStrikeExtremeGraphicsTest1', 'FireStrikeExtremeGraphicsTest2') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'timespy- ', '-loop-1.3dmark-result', 'TimeSpyPerformance3DMarkScore', 'TimeSpyPerformanceGraphicsScore', 'TimeSpyPerformanceGraphicsTest1', 'TimeSpyPerformanceGraphicsTest2') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'timespy- ', '-loop-2.3dmark-result', 'TimeSpyPerformance3DMarkScore', 'TimeSpyPerformanceGraphicsScore', 'TimeSpyPerformanceGraphicsTest1', 'TimeSpyPerformanceGraphicsTest2') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'timespy-extreme- ', '-loop-1.3dmark-result', 'TimeSpyExtreme3DMarkScore', 'TimeSpyExtremeGraphicsScore', 'TimeSpyExtremeGraphicsTest1', 'TimeSpyExtremeGraphicsTest2') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text, value4_text = process_3dm(Selfolder, 'timespy-extreme- ', '-loop-2.3dmark-result', 'TimeSpyExtreme3DMarkScore', 'TimeSpyExtremeGraphicsScore', 'TimeSpyExtremeGraphicsTest1', 'TimeSpyExtremeGraphicsTest2') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}\n{value4_text}") file_found, value1_text, value2_text, value3_text = process_3dm(Selfolder, 'speedway- ', '-loop-1.3dmark-result', 'SpeedWayPerformance3DMarkScore', 'SpeedWayPerformanceGraphicsScore', 'SpeedWayPerformanceGraphicsTest') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}") file_found, value1_text, value2_text, value3_text = process_3dm(Selfolder, 'speedway- ', '-loop-2.3dmark-result', 'SpeedWayPerformance3DMarkScore', 'SpeedWayPerformanceGraphicsScore', 'SpeedWayPerformanceGraphicsTest') text_box.insert(tk.END, f"\n{file_found}\n{value1_text}\n{value2_text}\n{value3_text}") text = text_box.get("1.0", "end-1c") text = text.replace('.', ',') text_box.delete("1.0", "end") text_box.insert("end", text) root = tk.Tk() root.bind("<Destroy>", on_destroy) root.title("3DMark extraktátor") # Set window size window_width = 300 window_height = 300 root.geometry(f"{window_width}x{window_height}") # Set the minimum window size root.minsize(width=350, height=250) # Set text box size and position # path_box = tk.Text(root, height=2) # path_box.pack(fill=tk.X, padx=5, pady=5) # Create a frame to contain the text box and scrollbar text_frame = tk.Frame(root) text_frame.pack(side=tk.TOP, expand=True, fill=tk.BOTH, padx=5, pady=5) # Set text box size and position text_box = tk.Text(text_frame, height=10) text_box.grid(row=0, column=0, sticky="nsew") text_box.configure(takefocus=False) # Create a scrollbar scrollbar = tk.Scrollbar(text_frame) # Pack the scrollbar to the right side of the frame scrollbar.grid(row=0, column=1, sticky="ns") # Set the text box to use the scrollbar text_box.config(yscrollcommand=scrollbar.set) # Set the scrollbar to use the text box scrollbar.config(command=text_box.yview) # Configure the grid to resize properly text_frame.columnconfigure(0, weight=1) text_frame.rowconfigure(0, weight=1) # Define placeholder functions for handling the <Tab> and <Shift-Tab> events def on_tab(event): pass def on_shift_tab(event): pass # Create a frame to contain the buttons button_frame = tk.Frame(root) button_frame.pack(side=tk.BOTTOM, fill=tk.X) # Set button sizes and positions button_width = 10 button_height = 1 # Create the copy button and pack it inside the button frame copy_button = tk.Button(button_frame, text="Copy", command=copy_text, width=button_width, height=button_height) copy_button.pack(side=tk.RIGHT, padx=(2, 5), pady=5) copy_button.bind("<Tab>", on_tab) copy_button.bind("<Shift-Tab>", on_shift_tab) # Create the open file button and pack it inside the button frame open_file_button = tk.Button(button_frame, text="Open File", command=open_file, width=button_width, height=button_height) open_file_button.pack(side=tk.RIGHT, padx=2, pady=5) open_file_button.bind("<Tab>", on_tab) open_file_button.bind("<Shift-Tab>", on_shift_tab) # Create the open folder button and pack it inside the button frame open_folder_button = tk.Button(button_frame, text="Open Folder", command=open_folder, width=button_width, height=button_height) open_folder_button.pack(side=tk.RIGHT, padx=2, pady=5) open_folder_button.bind("<Tab>", on_tab) open_folder_button.bind("<Shift-Tab>", on_shift_tab) open_folder_button.focus() # Create a function to handle the <Tab> event for each button def on_tab(event): if event.widget == copy_button: open_folder_button.focus() elif event.widget == open_file_button: copy_button.focus() elif event.widget == open_folder_button: open_file_button.focus() return "break" # Create a function to handle the <Shift-Tab> event for each button def on_shift_tab(event): if event.widget == copy_button: open_file_button.focus() elif event.widget == open_file_button: open_folder_button.focus() elif event.widget == open_folder_button: copy_button.focus() return "break" # Update the function bindings for each button copy_button.bind("<Tab>", on_tab) copy_button.bind("<Shift-Tab>", on_shift_tab) open_file_button.bind("<Tab>", on_tab) open_file_button.bind("<Shift-Tab>", on_shift_tab) open_folder_button.bind("<Tab>", on_tab) open_folder_button.bind("<Shift-Tab>", on_shift_tab) # Create a frame to contain the path box path_frame = tk.Frame(root) path_frame.pack(side=tk.BOTTOM, fill=tk.X) # Set text box size and position path_box = tk.Text(path_frame, height=2) path_box.pack(fill=tk.X, padx=5, pady=(0, 0)) path_box.configure(takefocus=False) root.mainloop()