Untitled
unknown
plain_text
2 years ago
12 kB
23
No Index
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()
Editor is loading...