2017-07-27 6 views
0

Ich studiere Python GUI von Python GUI Programmierung Kochbuch. Eine bestimmte Aufgabe erfordert mich das Fenster Symbol zu ändern, indem Sie folgenden Code meines Rezept:Python 3.6 tkinter Fenster Symbol auf Linux Fehler

# Change the main windows icon 
win.iconbitmap(r'C:\Python34\DLLs\pyc.ico') 

Da ich Linux verwende, ich habe meinen Weg zu /home/user/test.ico ändern. Nachdem ich ähnliche Fragen gelesen hatte, erfuhr ich, dass .ico nur Windows ist. Ich versuchte .gif, aber das funktioniert auch nicht. Bestehende SO Artikel Ich habe versucht: tkinter TclError: error reading bitmap file Setting Application icon in my python Tk base application (On Ubuntu) tkinter.TclError: image "pyimage3" doesn't exist

Alle drei dieser nicht hilfreich waren. Ich habe die folgenden Fehler mit jeweils:

In [3]: runfile('/home/bhedia/untitled1.py', wdir='/home/bhedia') 
Traceback (most recent call last): 

    File "<ipython-input-3-17a671578909>", line 1, in <module> 
    runfile('/home/bhedia/untitled1.py', wdir='/home/bhedia') 

    File "/home/bhedia/anaconda3/envs/mitx/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 880, in runfile 
    execfile(filename, namespace) 

    File "/home/bhedia/anaconda3/envs/mitx/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "/home/bhedia/untitled1.py", line 58, in <module> 
    img = tk.PhotoImage(file='test.ico') 

    File "/home/bhedia/anaconda3/envs/mitx/lib/python3.5/tkinter/__init__.py", line 3403, in __init__ 
    Image.__init__(self, 'photo', name, cnf, master, **kw) 

    File "/home/bhedia/anaconda3/envs/mitx/lib/python3.5/tkinter/__init__.py", line 3359, in __init__ 
    self.tk.call(('image', 'create', imgtype, name,) + options) 

TclError: couldn't recognize data in image file "test.ico" 

In [4]: runfile('/home/bhedia/untitled1.py', wdir='/home/bhedia') 
Traceback (most recent call last): 

    File "<ipython-input-4-17a671578909>", line 1, in <module> 
    runfile('/home/bhedia/untitled1.py', wdir='/home/bhedia') 

    File "/home/bhedia/anaconda3/envs/mitx/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 880, in runfile 
    execfile(filename, namespace) 

    File "/home/bhedia/anaconda3/envs/mitx/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "/home/bhedia/untitled1.py", line 59, in <module> 
    root.tk.call('wm','iconphoto',root._w,img) 

TclError: can't use "pyimage2" as iconphoto: not a photo image 

Also, ich bin nicht sicher, wie mein Fensters des Symbol zu ändern, wenn die Tkinter-Bibliothek unter Linux verwenden.

+1

Der Fehler auf In [3] sagt, Sie verwenden Ico-Datei, die Sie nicht sollten. Sie sollten .xbm fil wie gesagt in [first link] (https://stackoverflow.com/questions/11176638/tkinter-tclerror-error-reading-bitmap-file) verwenden, das Sie geschrieben haben. – Lafexlos

Antwort

0

Mit diesem Code:

10 icon = PhotoImage(file='yourfile.ico') 
20 root.tk.call('wm', 'iconphoto', root._w, icon) 

und stellen Sie sicher, yourfile.ico im selben Ordner wie yourfilename.py ist.

Peaceout aus Pakistan