Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Allgemein] -  C# vs Python
#12
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️⃣
Code:
tasks_update.py
– Python Skript
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️⃣
Code:
tasks_gui.pl
– Perl Tk GUI
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️⃣
Code:
run_tasks_gui.bat
– Batch-Datei
Code:
@echo off
perl "%~dp0tasks_gui.pl"
pause
  • Doppelklick → GUI öffnet sich
  • Python wird über GUI gestartet → Live-Datenaktualisierung

5️⃣ Funktionsweise
  1. GUI lädt alle Aufgaben aus JSON
  2. Python-Skript fügt automatisch neue Aufgaben hinzu
  3. GUI zeigt diese sofort nach
    Code:
    refresh_list()

  4. GUI kann Aufgaben abhaken oder neue Aufgaben direkt eingeben
  5. 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?
Zitieren Return to top


Nachrichten in diesem Thema
C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 3 Stunden
RE: C# vs Python - von Joopi - Vor 2 Stunden

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste