canvas-diagramm speichern

Fragen zu Tkinter.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Funktioniert das folgende zweite Skript auch ohne Fehlermeldungen? Was siehst du jetzt auf deinem Monitor?

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tkinter as tk
from PIL import Image, ImageDraw, ImageFont, ImageTk

APP_TITLE = "Save Canvas Image"
APP_XPOS = 100
APP_YPOS = 100
APP_WIDTH = 500
APP_HEIGHT = 400

WHITE = (255, 255, 255)

class MyGraph(tk.Frame):

    def __init__(self, app_win, **kwargs):
        self.app_win = app_win
        
        tk.Frame.__init__(self, app_win, **kwargs)

        self.graph_plane = Image.new("RGB", (200, 200), WHITE)
        self.drawing = ImageDraw.Draw(self.graph_plane)
        self.label_image = ImageTk.PhotoImage(self.graph_plane)

        self.draw_frame = tk.Label(self, image=self.label_image)
        self.draw_frame.pack(expand=True)
                
def main():
    app_win = tk.Tk()
    app_win.title(APP_TITLE)
    app_win.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))
    app_win.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))
    
    app = MyGraph(app_win, bg='steelblue').pack(fill='both', expand=True)
    
    app_win.mainloop()
 
 
if __name__ == '__main__':
    main()      
Grss wuf :wink:
Take it easy Mates!
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@wuf: Pakete, die man als lokaler Nutzer installiert, werden unter ~/.local/lib/python... abgelegt. Das ist also ganz normal.

@pyzip: Du hast irgendwann ImageTk lokal installiert. DA Du keine Fehlermeldungen gepostet hast, kann man nicht sagen, warum das bei Dir nicht funktioniert. Erster Schritt wäre immer, bei Python-Modulen mit vielen Abhängigkeiten, diese über den Paketmanager Deiner Linuxdistribution zu installieren.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi Sirius3

Danke für deine Unterstützen.
@wuf: Pakete, die man als lokaler Nutzer installiert, werden unter ~/.local/lib/python... abgelegt. Das ist also ganz normal.
Wusste ich noch nicht. Python habe ich bis jetzt noch nie lokal installiert da ich der einzige Benutzer des Systems bin. Bei einer Neuinstallation von Ubuntu wird Python ohnehin automatisch Systemweit angelegt. Zusätzliche Pakete installierte ich dann meistens über einer Paketverwaltung, welche immer Legitimation als Administrator verlangte. Spezielle Pakete die nicht mit Hilfe einer Paketverwaltung installierbar waren habe ich dann aus einem Terminal mit sudo pythonx setup.py PAKET nachinstalliert. Ich vermute, dass bei unserem Kollegen pyzip etwas mit den Umgebungsvariablen nicht stimmt.

Gruss wuf :wink:
Take it easy Mates!
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

Hallo, danke. @Wuf: ich habe deinen Code in Spider gestartet und bekomme natürlich diese Fehlermeldung:

runfile('/home/zip/py/nn/diagramm_pil_2.py', wdir='/home/zip/py/nn')
Traceback (most recent call last):

File "<ipython-input-1-4c6bb4b0f268>", line 1, in <module>
runfile('/home/zip/py/nn/diagramm_pil_2.py', wdir='/home/zip/py/nn')

File "/home/zip/.local/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)

File "/home/zip/.local/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "/home/zip/py/nn/diagramm_pil_2.py", line 9, in <module>
from PIL import Image, ImageDraw, ImageFont, ImageTk

ImportError: cannot import name 'ImageTk'

Und @Sirius3: Ich habe immer einen User unter Ubuntu laufen und ich habe bisher immer mit pip bzw. mit pip3 installiert. Das sollte doch keine Probleme bereiten oder bringt sudo etwa die Vermischung von "Systemweit" und User? Bin aber echt überfordert!
Gruß Rainer
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@pyzip: Du hast ja auch ImageTk für Python 3.5 installiert und startest das Programm mit Python 3.6.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@sirius3: na ja, ich lasse das alles mit Spider3 laufen. Dachte, dass die sich "untereinander absprechen"...Ich verstehe nur Bahnhof...sorry...
Gruß Rainer
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Pip lässt du doch bestimmt nicht mit Spider laufen. Und du hast nun mal Python 3.5 UND 3.6 im Einsatz & musst da auf achten, welches du wann benutzt. Installier die Pakete halt auch für 3.6. ”python.6 -mpip install ...” sollte helfen.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@sirius3: Du meinst also, dass ich die Upgrades von Py nur für meinen User installiert habe?? Und das deshalb jetzt alles durcheinander geht? Bin echt überfordert! Hatte vor einiger Zeit auch massive Probleme mit Eric, hat irgendwann mein ganzes System zerschossen. Ich will es ja nur verstehen :-)
Danke und Gruß, Rainer
Hi, hat sich überschnitten...und nur für mein Verständnis...wenn ich eine Nachricht bekomme, dass Py ein Upgrade hat, dann installier ich das doch mit pip. Und wieso habe ich dann jetzt plötzlich Py5 und 6 im System?? Und womit Spider dann arbeitet, ist mir natürlich auch nicht klar! Ich dachte immer, wenn ich upgrade, dann wird immer die neuste Version benutzt. Man oh man...
Rainer
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du würfelst hier munter Begrifflichkeiten durcheinander. Mit pip installierst du PAKETE. PYHTON installierst du damit nicht, das muss schon existieren. Und wird zb über dein OS und dessen Paketmanagement installiert.

Und verschiedene Versionen von Python haben ihre eigenen Pakete, weil die Versionen untereinander nicht kompatibel sein können.

Und du hast nun mal Python 3.5 und 3.6. NICHT 5 und 6! Die gibt es nicht, und sie so zu bezeichnen ist irreführend und steigert nur die Verwirrung aller Beteiligten.

Ich habe dir gezeigt, wie du das richtige pip für 3.6 benutzt. Damit musst du nun die gewünschten Pakete installieren.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@ __deets__
sicher verzweifelst du gerade, aber du hast py.6 eingebracht. Im Terminal ausgeführt, gibt es folgende Fehlermeldung:

python.6 -mpip install
No command 'python.6' found, did you mean:
Command 'python3.6' from package 'python3.6-minimal' (main)
python.6: command not found

und mit "python3.6' from package 'python3.6-minimal' gibts die gleiche Fehlermeldung!

Bin weiterhin ratlos...
Rainer
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das war ein verschreiber. Es muss natürlich python3.6 heissen. Und ich möchte bitte bitte die genaue Fehlermeldung sehen für python3.6. Und wenn sie wirklich gleich ist, dann musst du mal ein Skript in deinem Spider ausführen mit

import sys;print(sys.prefix)

darin um rauszufinden wo das Python 3.6 lebt.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

Sorry, ist jetzt zu spät...aber ich versteh immer weniger! Bitte sag' mal genau, was ich wo, wie machen soll.
Danke, Rainer
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@__deets__: Also import sys;print(sys.prefix) bringt "/usr" und nun bin ich gespannt.
Gruß Rainer
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Aus Spider heraus ausgeführt? Mach mal

Code: Alles auswählen

import sys; print(sys.prefix, sys.version)
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

@__deets__: ja, habe ich aus Spider heraus ausgeführt. Bringt folgende Meldung:

/usr 3.6.3 (default, Oct 3 2017, 21:45:48)
[GCC 7.2.0]

Gruß Rainer
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann ist das python unter /usr/bin/python3.6 zu finden. Garantiert.
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

Ja, stimmt. Und gleich darunter ist ein File /usr/bin/python3 mit der Beschreibung "link zu python3.6" Aber das erklärt mir immer noch nicht, warum zwar im Ordner PIL "Image, ImageDraw, ect" drin ist, "ImageTk" aber nicht. Muß ich eventuell die Suchpfade in Spider ergänzen oder liegt das Problem ganz woanders? Ich habe keine Idee!
Gruß Rainer
pyzip
User
Beiträge: 89
Registriert: Freitag 16. Juni 2017, 19:36

und ich habe noch mal nach ImageTk gesucht. Es liegt in /home/zip/.local/lib/python3.5/site-packages/PIL/ImageTk.py und in /home/zip/.local/lib/python3.5/site-packages/PIL/__pycache__/ImageTk.cpython-35.pyc. Also scheint bei dem Upgrade von Py3.5 auf Py3.6 doch etwas schief gelaufen zu sein?!
Gruß Rainer
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@pyzip: nochmal zusammengefasst: Du hast imageTK irgendwann einmal für eine Python-Version installiert, die Du jetzt nicht mehr nutzt. Was passiert also, wenn Du imageTK für die aktuelle Python-Version installierst?
__deets__
User
Beiträge: 14536
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es gibt kein upgrade von 3.5 auf 3.6. Die Leben komplett nebeneinander. Wenn du Pakete für 3.6 haben willst, die du ursprünglich mit pip installiert hast, musst du die nochmal installieren. Das haben wir aber auch schon diverse Male erwähnt. Ich sag’s nochmal ‚python3.6 -mpip install PAKETNAME‘ sollte das erledigen.
Antworten