Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Allgemein] -  C# vs Python
#11
Bitte auch dieses Beispiel zeigen, denn Perl Tk ist mir neu.

Zitat:Perfekt! Dann bauen wir jetzt eine erweiterte Windows-Version deines Perl-Projekts mit GUI, basierend auf Perl Tk. Damit hast du ein Mini-Task-Manager-Tool, das deine
Code:
tasks.json
direkt visualisiert, Aufgaben abhaken und neue Aufgaben hinzufügen kann.

1️⃣ Voraussetzungen
  1. Strawberry Perl installiert
  2. CPAN-Module installieren:
Code:
cpan Tk
cpan JSON
  • Code:
    Tk
    → für GUI
  • Code:
    JSON
    → für Aufgaben-Daten

2️⃣ Projektstruktur
Code:
TaskManagerGUI/

├─ tasks_gui.pl           ← Perl Tk GUI Skript
├─ tasks.json             ← Aufgaben-Daten
├─ run_tasks_gui.bat      ← Batch-Datei zum Starten
└─ README.md

3️⃣
Code:
tasks_gui.pl
– Perl Tk GUI
Code:
#!/usr/bin/perl
use strict;
use warnings;
use Tk;
use JSON;
use File::Spec;
# JSON-Datei
my $json_file = File::Spec->catfile(".", "tasks.json");
# Standardaufgaben erstellen, falls Datei fehlt
unless (-e $json_file) {
    my @tasks = (
        { task => "Einkaufen", done => 0 },
        { task => "Perl lernen", done => 0 },
    );
    open my $fh, ">", $json_file or die "Kann Datei nicht erstellen: $!";
    print $fh encode_json(\@tasks);
    close $fh;
}
# JSON laden
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 erstellen
my $mw = MainWindow->new;
$mw->title("Mini 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 {
    $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();
# Eingabe für neue Aufgabe
my $entry = $mw->Entry()->pack(-side => 'top', -fill => 'x', -padx => 5, -pady => 5);
# Button: 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);
# Button: Aufgabe erledigen (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);
MainLoop;

4️⃣
Code:
run_tasks_gui.bat
– Batch-Datei
Code:
@echo off
perl "%~dp0tasks_gui.pl"
pause
  • Doppelklick → GUI öffnet sich
  • Fenster zeigt Aufgaben an
  • Aufgaben abhaken oder neue hinzufügen
  • Änderungen werden direkt in
    Code:
    tasks.json
    gespeichert

5️⃣ Vorteile dieser Version
  • Vollständige GUI unter Windows
  • JSON bleibt Datenquelle → kompatibel mit Python oder Skripten
  • Batch-Datei für einfachen Start
  • Perl Tk → einfache plattformübergreifende GUI ohne Visual Studio
  • Erweiterbar: Filter, Aufgaben löschen, farbige Markierungen

6️⃣ Erweiterungsmöglichkeiten
  • Aufgaben löschen: Button + Auswahl
  • Sortierung / Filter: erledigt vs. offen
  • Speichern beim Schließen: automatisch
  • Integration mit Python: Python-Skripte aktualisieren
    Code:
    tasks.json
    → GUI zeigt Änderungen sofort an
  • Drag & Drop: Aufgaben sortieren

Wenn du willst, kann ich als Nächstes noch eine Version bauen, in der Python und die Perl Tk GUI direkt zusammenarbeiten – also Python erzeugt automatisch Aufgaben, GUI aktualisiert live die Anzeige.
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