Vor 3 Stunden
Das würde ich auch gerne sehen, wie Perl und Python zusammen arbeiten.
Zitat:Perfekt! Dann bauen wir jetzt eine integrierte Lösung, in der Python und Perl Tk GUI zusammenarbeiten.
Ziel:
- Python erzeugt oder aktualisiert Aufgaben (
)Code:tasks.json
- Perl Tk GUI liest diese Datei und zeigt die Aufgaben an
- GUI kann Aufgaben abhaken oder neue hinzufügen → JSON wird aktualisiert
- So hast du Live-Zusammenarbeit zwischen Python und Perl unter Windows
1️⃣ Projektstruktur
Code:TaskManagerHybrid/
│
├─ tasks_gui.pl ← Perl Tk GUI
├─ tasks_update.py ← Python-Skript zum Erzeugen/Aktualisieren
├─ tasks.json ← Aufgaben-Datei (gemeinsam)
├─ run_tasks_gui.bat ← Batch-Datei zum Starten der GUI
└─ README.md
2️⃣
– Python SkriptCode:tasks_update.py
Code:import json
import os
import datetime
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)
# Neue Aufgabe automatisch hinzufügen
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 hat Aufgaben aktualisiert. Gesamt: {len(tasks)}")
- Führt jede Ausführung eine automatische Aufgabe hinzu
- JSON-Datei bleibt das gemeinsame Datenformat
3️⃣
– Perl Tk GUICode:tasks_gui.pl
Code:#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use JSON;
use File::Spec;
my $json_file = File::Spec->catfile(".", "tasks.json");
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;
}
my $mw = MainWindow->new;
$mw->title("Hybrid Task Manager");
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);
$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);
$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);
$mw->Button(-text => "Python Update ausführen",
-command => sub {
system("python tasks_update.py");
refresh_list();
})->pack(-side => 'top', -fill => 'x', -padx => 5, -pady => 5);
MainLoop;
- GUI zeigt alle Aufgaben aus
Code:tasks.json
- Button „Python Update ausführen“ → ruft Python-Skript auf, fügt neue Aufgaben hinzu
- ListBox wird danach automatisch aktualisiert
4️⃣
– Batch-DateiCode:run_tasks_gui.bat
Code:@echo off
perl "%~dp0tasks_gui.pl"
pause
- Doppelklick → GUI öffnet sich
- Python wird über GUI gestartet → Live-Datenaktualisierung
5️⃣ Funktionsweise
- GUI lädt alle Aufgaben aus JSON
- Python-Skript fügt automatisch neue Aufgaben hinzu
- GUI zeigt diese sofort nach
Code:refresh_list()
- GUI kann Aufgaben abhaken oder neue Aufgaben direkt eingeben
- JSON ist gemeinsame Datenquelle → sowohl Python als auch Perl arbeiten auf dieselben Daten
6️⃣ Vorteile
- Plattformübergreifend: Python und Perl können weiterhin auf Linux oder Windows genutzt werden
- Daten-Austausch: JSON als universelles Format
- GUI + Automation: Perl Tk für Fenster, Python für Logik/Automatisierung
- Einfach erweiterbar: weitere Python-Skripte können z. B. Termine, Webabfragen oder Logs hinzufügen
Wenn du willst, kann ich als nächsten Schritt noch eine Live-Version bauen, die Python periodisch automatisch Aufgaben hinzufügt, sodass GUI die Änderungen sofort aktualisiert, ohne dass du den Button drücken musst.
Willst du, dass ich das erstelle?

