Vor 3 Stunden
Ja, bitte die Live-Version bauen.
Zitat:Perfekt! Dann bauen wir nun eine Live-Version, in der Python periodisch Aufgaben aktualisiert, und die Perl Tk GUI automatisch die Änderungen anzeigt, ohne dass du manuell den Button drücken musst. So entsteht eine echte Echtzeit-Integration zwischen Python und Perl unter Windows.
1️⃣ Projektstruktur
Code:TaskManagerLive/
│
├─ tasks_gui_live.pl ← Perl Tk GUI mit Live-Refresh
├─ tasks_update_live.py ← Python-Skript zum periodischen Hinzufügen
├─ tasks.json ← Aufgaben-Datei
├─ run_tasks_gui.bat ← Batch-Datei zum Starten
└─ README.md
2️⃣
– Python-SkriptCode:tasks_update_live.py
Code:import json
import os
import datetime
import time
json_file = "tasks.json"
# Standardaufgaben erzeugen, falls Datei fehlt
if not os.path.exists(json_file):
tasks = [
{"task": "Einkaufen", "done": False},
{"task": "Python lernen", "done": False}
]
with open(json_file, "w") as f:
json.dump(tasks, f, indent=4)
# Endlosschleife, die alle 10 Sekunden eine neue Aufgabe hinzufügt
while True:
tasks = json.load(open(json_file))
timestamp = datetime.datetime.now().strftime("%H:%M:%S")
tasks.append({"task": f"Automatische Aufgabe {timestamp}", "done": False})
with open(json_file, "w") as f:
json.dump(tasks, f, indent=4)
print(f"[Python] Aufgabe hinzugefügt: Automatische Aufgabe {timestamp}")
time.sleep(10)
- Fügt alle 10 Sekunden eine neue Aufgabe hinzu
- JSON-Datei wird regelmäßig aktualisiert
Zitat:Tipp: Für Windows Task Scheduler oder Hintergrund-Task kann man
verwenden, um kein Konsolenfenster anzuzeigen.Code:pythonw
3️⃣
– Perl Tk GUI mit Live-RefreshCode:tasks_gui_live.pl
Code:#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use JSON;
use File::Spec;
my $json_file = File::Spec->catfile(".", "tasks.json");
# JSON laden / speichern
sub load_tasks {
open my $fh, "<", $json_file or die "Kann Datei nicht öffnen: $!";
local $/;
my $json_text = <$fh>;
close $fh;
return decode_json($json_text);
}
sub save_tasks {
my ($tasks_ref) = @_;
open my $fh, ">", $json_file or die "Kann Datei nicht schreiben: $!";
print $fh encode_json($tasks_ref);
close $fh;
}
# GUI
my $mw = MainWindow->new;
$mw->title("Hybrid Task Manager Live");
my $frame = $mw->Frame()->pack(-side => 'top', -fill => 'both', -expand => 1);
my $listbox = $frame->Scrolled("Listbox", -scrollbars => 'e')->pack(-side => 'left', -fill => 'both', -expand => 1);
my $tasks = load_tasks();
sub refresh_list {
$tasks = load_tasks();
$listbox->delete(0, 'end');
for my $i (0..$#$tasks) {
my $t = $tasks->[$i];
my $status = $t->{done} ? "✓" : "✗";
$listbox->insert('end', "$status $t->{task}");
}
}
refresh_list();
my $entry = $mw->Entry()->pack(-side => 'top', -fill => 'x', -padx => 5, -pady => 5);
# Aufgabe hinzufügen
$mw->Button(-text => "Aufgabe hinzufügen",
-command => sub {
my $text = $entry->get;
return unless $text;
push @$tasks, { task => $text, done => 0 };
save_tasks($tasks);
$entry->delete(0, 'end');
refresh_list();
})->pack(-side => 'top', -fill => 'x', -padx => 5, -pady => 5);
# Aufgabe abhaken
$mw->Button(-text => "Ausgewählte Aufgabe erledigen",
-command => sub {
my $idx = $listbox->curselection;
return unless defined $idx->[0];
$tasks->[$idx->[0]]->{done} = 1;
save_tasks($tasks);
refresh_list();
})->pack(-side => 'top', -fill => 'x', -padx => 5, -pady => 5);
# Live-Refresh alle 2 Sekunden
$mw->repeat(2000 => \&refresh_list);
MainLoop;
- Alle 2 Sekunden wird
neu eingelesenCode:tasks.json
- Neue Aufgaben vom Python-Skript erscheinen automatisch
- GUI bleibt interaktiv → Benutzer kann Aufgaben abhaken oder neue hinzufügen
4️⃣
– Batch-DateiCode:run_tasks_gui.bat
Code:@echo off
REM Starte Python im Hintergrund
start python "%~dp0tasks_update_live.py"
REM Starte Perl Tk GUI
perl "%~dp0tasks_gui_live.pl"
pause
- Python läuft im Hintergrund
- GUI startet sofort
- Live-Aktualisierung funktioniert automatisch
Zitat:Hinweis:
öffnet ein neues Konsolenfenster für Python.Code:start python
Alternativ kann
genutzt werden, damit kein Fenster angezeigt wird.Code:pythonw
5️⃣ Vorteile der Live-Version
- Automatische Aufgabenaktualisierung durch Python
- Echtzeit-Anzeige in Perl Tk GUI
- Interaktivität: Aufgaben abhaken, neue Aufgaben hinzufügen
- Plattformübergreifendes Datenformat: JSON bleibt zentral
- Erweiterbar: z. B. mehrere Python-Skripte gleichzeitig laufen lassen
6️⃣ Optionaler Ausbau
- Filter: offene vs erledigte Aufgaben
- Sortierung nach Zeit / Priorität
- Python kann Web-Daten einlesen → Aufgaben automatisch generieren
- GUI Buttons für „Alle Aufgaben erledigen“ oder „Aufgabe löschen“
- Logging in eine separate Datei für Historie
Wenn du willst, kann ich als Nächstes noch eine komplette Version bauen, in der mehrere Python-Skripte parallel laufen und GUI automatisch alle Updates sofort zeigt – quasi ein kleines Task-Management-Framework für Windows in Perl + Python.
Willst du, dass ich das erstelle?

