CodeGym /Corso Java /Python SELF IT /Creare una finestra per avviare script

Creare una finestra per avviare script

Python SELF IT
Livello 50 , Lezione 3
Disponibile

1. L'idea del multitasking nelle applicazioni

Eccoci qua, futuri maghi dell'automazione! Torniamo al nostro corso su Python e brindiamo — stiamo già creando applicazioni con interfaccia grafica su Tkinter! In questa lezione scopriremo come rendere le nostre applicazioni ancora più potenti, aggiungendo loro la possibilità di lanciare altri script direttamente dall'interfaccia utente. Essendo onesti, questa opportunità di avviare processi automatizzati con un semplice clic potrebbe renderci un po' meno pigri… oppure incatenarci nella trappola del pigiama a casa. Ma vediamo come farlo!

Concetto di multitasking

Immagina questo Scenario: hai un'applicazione che può elaborare dati automaticamente, fare web scraping, raccogliere report. Ma ogni volta che vuoi avviare uno dei tuoi magnifici script, devi passare da una finestra all'altra. È come quei vecchi televisori dove bisognava alzarsi e premere il pulsante sul pannello per cambiare canale... l'evoluzione ci ha aiutati col telecomando, il tuo GUI Python gestirà il lancio degli script per te!

Capire come eseguire script esterni

Tkinter ci permette di collegare l'interfaccia con script esterni, il che è davvero utile. Questo può essere fatto usando il modulo standard subprocess. Il modulo consente di avviare nuovi processi, eseguire comandi in shell e persino interagirci. Facciamo il primo passo verso il nostro "centro di controllo per l'automazione".

import subprocess
# Semplice esempio per eseguire uno script Python
subprocess.run(["python", "il_tuo_script.py"])

2. Selezione dei file e creazione dell'interfaccia di avvio

Interfaccia per selezionare uno script

Per iniziare vogliamo che l'utente possa selezionare il file dello script che desidera avviare. È più comodo farlo usando il widget FileDialog dal modulo tkinter.filedialog. Questo widget aprirà una finestra standard per la selezione del file, che, come un buon cameriere, ti offrirà il file che scegli.

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()
root.withdraw()  # Non vogliamo mostrare la finestra principale

file_path = filedialog.askopenfilename(title="Seleziona uno script da eseguire")
print(f"File selezionato: {file_path}")

2.2 Creazione del pulsante di avvio

Ora aggiungiamo un pulsante che, dopo la selezione del file, ti permetterà di avviarlo.

def launch_script():
    file_path = filedialog.askopenfilename(title="Seleziona uno script da eseguire")
    if file_path:
        subprocess.run(["python", file_path])

root = tk.Tk()
launch_button = tk.Button(root, text="Esegui script", command=launch_script)
launch_button.pack(pady=20)

root.mainloop()

Ora abbiamo un pulsante che richiama la finestra di selezione del file e, dopo aver scelto un file, lo avvia in un processo separato. Fantastico!

3. Applicazione pratica

Creazione di un'interfaccia di controllo

Abbiamo già visto come avviare uno script. Aggiungiamo funzioni di feedback e controllo per far sì che la nostra applicazione sembri più professionale.

import tkinter as tk
from tkinter import filedialog, messagebox
import subprocess

def launch_script():
    file_path = filedialog.askopenfilename(title="Seleziona uno script da eseguire")
    if file_path:
        try:
            result = subprocess.run(["python", file_path], capture_output=True, text=True)
            messagebox.showinfo("Risultato esecuzione", f"Script eseguito con successo!\n\n{result.stdout}")
        except subprocess.CalledProcessError as e:
            messagebox.showerror("Errore di esecuzione", f"Errore durante l'esecuzione dello script:\n\n{e.stderr}")

root = tk.Tk()
launch_button = tk.Button(root, text="Esegui script", command=launch_script)
launch_button.pack(pady=20)

root.mainloop()

Gestione degli errori

Non viviamo in un mondo perfetto dove non esistono errori. Ricordiamoci di questo e aggiungiamo la gestione degli errori affinché l'utente non perda la pazienza a causa di fallimenti "misteriosi". Utilizziamo try-except per mostrare un messaggio d'errore se l'esecuzione dello script fallisce.

Restituzione del risultato dell'esecuzione

Oltre ad avviare lo script, catturiamo il risultato dell'esecuzione e lo mostriamo all'utente, perché chi non ama quando il proprio codice viene lodato? In realtà, è utile per il debugging e per capire cosa è successo.

4. Come si può utilizzare tutto questo?

La cosa più sorprendente delle possibilità di automazione tramite GUI è la versatilità. L'organizzazione del tuo flusso di lavoro diventa più gestibile ed efficiente. Puoi avviare pulizie dati, creare report, persino inviare e-mail — tutto questo con un solo clic. In un ambiente business questo significa meno tempo per attività routinarie e più tempo per innovare. Durante i colloqui, potrebbe diventare il tuo asso nella manica, dimostrando produttività reale e competenze nell'integrazione.

Bonus: la nostra interfaccia può avviare non solo script Python, ma praticamente qualsiasi script, inclusi file bash e batch. L'importante è che il sistema sappia come eseguirli.

Ora usa questo esempio, aggiungi qualche commento magico, e il tuo collega penserà sicuramente che stai nascondendo qualcosa di importante. Nel frattempo, avanti, verso la creazione del tuo automatizzatore ideale!

Per uno studio più approfondito, puoi consultare la documentazione ufficiale di Tkinter e la documentazione del modulo subprocess, dove troverai sempre più dettagli interessanti ed esempi pratici.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION