Tkinter in Python 3.4 unter Windows schreibt beim Beenden keine Daten aus der Zwischenablage in die Windows-Zwischenablage

8

Ich verwende den folgenden Code, um das Ergebnis meiner kleinen Skripte in die Zwischenablage zu stellen.

%Vor%

Es funktioniert gut in Python Version 3.3.5 und früher. Aber wenn ich auf Python 3.4 upgrade, wurde es leere Zwischenablage erhalten. Ich habe versucht 3.4.0, 3.4.1 und 3.4.2 und alle erhielten ein Ergebnis (leere Zwischenablage). Wenn ich das Skript vom sofortigen Beenden verbiete, indem ich input() nach clipboard_append() hinzufüge, sehe ich, dass die Zwischenablage das korrekte "Ergebnis" enthält.

Update1:

Das geänderte Testskript zeigt, dass das Problem kein Zeitproblem ist:

%Vor%

Wenn ich dieses Skript ausführen, warten Sie ein paar Sekunden, drücken Sie die Eingabetaste, ich erhalte eine leere Zwischenablage.

Wenn ich Skript ausführen, wechseln Sie zu einem anderen Fenster und drücken Sie Strg + V, ich erhalte "Ergebnis" und "Ergebnis" bleibt in der Zwischenablage, nachdem Skript beendet wird.

Ich denke in tcl / tk 8.6 clipboard_clear() betrifft die System-Zwischenablage, aber clipboard_append betrifft nur die interne tcl / tk-Zwischenablage, die nur nach Betriebssystemanforderung in die Zwischenablage des Systems übertragen wurde. Sieht so aus, als wäre es in Linux gemacht worden, die keine System-Zwischenablage haben.

Update2:

Zuletzt erwähnt Zwischenablage in Tk changelog bezieht sich auf die 2004:

%Vor%

Es scheint, dass der 2004 korrigierte Fehler uns 10 Jahre später zurückgegeben wurde.

    
fedorch 12.10.2014, 02:43
quelle

1 Antwort

2

Ich vermute, dass 'Ergebnis' nie in die Zwischenablage gelangt, anstatt gelöscht zu werden. 3.4 unter Windows kommt mit tcl / tk 8.6 statt 8.5. Ich vermute, dass dies der Unterschied ist, und es ist möglicherweise ein Timing-Problem. Funktioniert r.destroy nach dem Anhängen? Es ist im Allgemeinen eine gute Idee, den tk-Root explizit zu zerstören, bevor Python beendet wird. Wir hatten Probleme mit der Testsuite, bis wir damit anfingen.

    
Terry Jan Reedy 13.10.2014 04:36
quelle