cześć.
Mam problem przy próbie odpalenia z biblioteką tkinterdnd2. Próbowałem już wszelkich rzeczy z internetu aczkolwiek żadna mi nie jest w stanie pomóc. Czy jest ktoś w stanie określić czy sam kod jest poprawny i czy mu się kompiluje do formatu .exe? Miałem gdzieś wcześniejszą wersje która była w stanie mi się odpalić raz.. Potem już nie chciało to działać. Mimo wszystko gdy zmieniałem rozszerzenie na .exe to poprzedni plik nie chciał się odpalić a pod .py działał..... Nie mam już na to żadnego pomysłu
import os
import time
import datetime
from pathlib import Path
from tkinter import Tk, Label, Entry, Button, StringVar, OptionMenu, filedialog
from tkinterdnd2 import TkinterDnD, DND_FILES
def get_latest_file(folder):
path = Path(folder)
files = list(path.glob('*'))
if not files:
return None
latest_file = max(files, key=os.path.getctime)
return latest_file.name
def update_fields(*args):
for widget in specific_fields:
widget.grid_remove()
if job_type_var.get() == 'Content Digital':
maszyna_label.grid(row=3, column=0, padx=10, pady=5)
maszyna_menu.grid(row=3, column=1, padx=10, pady=5)
wykonczenie_label.grid(row=4, column=0, padx=10, pady=5)
wykonczenie_menu.grid(row=4, column=1, padx=10, pady=5)
elif job_type_var.get() == 'Content Inkjet':
tytul_label.grid(row=3, column=0, padx=10, pady=5)
tytul_entry.grid(row=3, column=1, padx=10, pady=5)
rozmiar_label.grid(row=4, column=0, padx=10, pady=5)
rozmiar_entry.grid(row=4, column=1, padx=10, pady=5)
data_label.grid(row=5, column=0, padx=10, pady=5)
data_entry.grid(row=5, column=1, padx=10, pady=5)
elif job_type_var.get() == 'Cover':
okladka_label.grid(row=3, column=0, padx=10, pady=5)
okladka_menu.grid(row=3, column=1, padx=10, pady=5)
laminat_label.grid(row=4, column=0, padx=10, pady=5)
laminat_menu.grid(row=4, column=1, padx=10, pady=5)
data_label.grid(row=5, column=0, padx=10, pady=5)
data_entry.grid(row=5, column=1, padx=10, pady=5)
def on_drop(event):
file_path = event.data
latest_file = os.path.basename(file_path)
try:
if job_type_var.get() == 'Content Digital':
numer = numer_entry.get()
express = express_var.get()
express = '' if express == 'Nie' else 'EXPRESS'
maszyna = maszyna_var.get()
maszyna = 'CONTENT' if maszyna == 'HP' else 'KM-1-CONTENT' if maszyna == 'KM' else 'IX3200-CONTENT'
wykonczenie = wykonczenie_var.get()
wykonczenie = 'SWB' if wykonczenie == 'Szycie' else 'PB' if wykonczenie == 'Klejenie' else 'WIO'
papier = papier_entry.get().upper()
kolor = kolor_var.get()
ilosc = ilosc_entry.get()
new_filename = f"{numer}_{express}_{maszyna}_{wykonczenie}_{papier}_{kolor}_{ilosc}.pdf"
elif job_type_var.get() == 'Content Inkjet':
numer = numer_entry.get()
express = express_var.get()
express = '' if express == 'Nie' else 'EXPRESS '
tytul = tytul_entry.get()
ilosc = ilosc_entry.get()
papier = papier_entry.get().upper()
kolor = kolor_var.get()
rozmiar = rozmiar_entry.get()
data = data_entry.get()
new_filename = f"{express}{numer}_{tytul}_{ilosc}qty_{papier}_{kolor}_{rozmiar}mm_{data}.pdf"
elif job_type_var.get() == 'Cover':
numer = numer_entry.get()
express = express_var.get()
express = '' if express == 'Nie' else 'EXPRESS '
okladka = okladka_var.get()
ilosc = ilosc_entry.get()
papier = papier_entry.get().upper()
kolor = kolor_var.get()
laminat = laminat_var.get()
data = data_entry.get()
new_filename = f"{express}{numer} {okladka} {ilosc}qty {papier} {kolor} {laminat} {data}.pdf"
czas = datetime.datetime.now().strftime("%Y.%m.%d %H:%M")
with open('Wszystkie zlecenia.txt', 'a') as myFile:
print(f"{new_filename} {czas}", file=myFile)
os.rename(file_path, f"{output_folder}/{new_filename}")
print('\n')
except Exception as e:
print(f"An error occurred: {e}")
# Inicjalizacja głównego okna
root = TkinterDnD.Tk()
root.title('Zmiana Nazwy Plików')
root.geometry('250x300')
root.minsize(250, 300)
# Foldery
input_folder = 'input'
output_folder = 'output'
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# Interfejs użytkownika
job_type_var = StringVar()
job_type_var.trace('w', update_fields)
numer_label = Label(root, text="Numer zlecenia")
numer_entry = Entry(root)
express_label = Label(root, text="Express")
express_var = StringVar()
express_menu = OptionMenu(root, express_var, "Tak", "Nie")
job_type_label = Label(root, text="Typ zlecenia")
job_type_menu = OptionMenu(root, job_type_var, "Content Digital", "Content Inkjet", "Cover")
maszyna_label = Label(root, text="Maszyna")
maszyna_var = StringVar()
maszyna_menu = OptionMenu(root, maszyna_var, "HP", "KM", "CANNON")
wykonczenie_label = Label(root, text="Wykończenie")
wykonczenie_var = StringVar()
wykonczenie_menu = OptionMenu(root, wykonczenie_var, "Szycie", "Klejenie", "WIO")
tytul_label = Label(root, text="Tytuł")
tytul_entry = Entry(root)
rozmiar_label = Label(root, text="Rozmiar")
rozmiar_entry = Entry(root)
data_label = Label(root, text="Data")
data_entry = Entry(root)
okladka_label = Label(root, text="Okładka")
okladka_var = StringVar()
okladka_menu = OptionMenu(root, okladka_var, "SOFTCOVER", "SOFTCOVERWF", "HARDCOVER", "HARDCOVERS", "COVERWIO", "DUSTCOVER")
laminat_label = Label(root, text="Laminat")
laminat_var = StringVar()
laminat_menu = OptionMenu(root, laminat_var, "MATT", "GLOSS", "SOFT-TOUCH", "NON-SCRATCH", "NONE")
papier_label = Label(root, text="Papier")
papier_entry = Entry(root)
kolor_label = Label(root, text="Kolor")
kolor_var = StringVar()
kolor_menu = OptionMenu(root, kolor_var, "4+4", "4+0", "1+1", "1+0")
ilosc_label = Label(root, text="Ilość")
ilosc_entry = Entry(root)
# Layout
job_type_label.grid(row=0, column=0, padx=10, pady=5)
job_type_menu.grid(row=0, column=1, padx=10, pady=5)
numer_label.grid(row=1, column=0, padx=10, pady=5)
numer_entry.grid(row=1, column=1, padx=10, pady=5)
express_label.grid(row=2, column=0, padx=10, pady=5)
express_menu.grid(row=2, column=1, padx=10, pady=5)
papier_label.grid(row=6, column=0, padx=10, pady=5)
papier_entry.grid(row=6, column=1, padx=10, pady=5)
kolor_label.grid(row=7, column=0, padx=10, pady=5)
kolor_menu.grid(row=7, column=1, padx=10, pady=5)
ilosc_label.grid(row=8, column=0, padx=10, pady=5)
ilosc_entry.grid(row=8, column=1, padx=10, pady=5)
specific_fields = [
maszyna_label, maszyna_menu, wykonczenie_label, wykonczenie_menu,
tytul_label, tytul_entry, rozmiar_label, rozmiar_entry,
data_label, data_entry, okladka_label, okladka_menu,
laminat_label, laminat_menu, papier_label, papier_entry,
kolor_label, kolor_menu, ilosc_label, ilosc_entry
]
update_fields()
# Obsługa przeciągania plików
root.drop_target_register(DND_FILES)
root.dnd_bind('<<Drop>>', on_drop)
root.mainloop()