Seite 1 von 1

minimize to tray

Verfasst: Freitag 19. Dezember 2003, 11:31
von Pythonaya
Hi @ all!
Ich hab mal eine Frage zum Thema Tkinter:
Wie kann ich ein Fenster zu einem kleinen Icon
neben meiner Windowsuhr (JA, ich bekenne mich schuldig: WINDOWS :roll: ) verschwinden lassen?

Hat jemand da einen Befehl?
Ich weiss, das es gehen muss...

Danke,
Florian

Re: minimize to tray

Verfasst: Freitag 19. Dezember 2003, 12:22
von Voges
Hallo!
Pythonaya hat geschrieben:Ich weiss, das es gehen muss...
Woher? Ich bin sicher, dass das Tkinter nicht leistet.
Vorstellen könnte ich mir einen Weg über die Python Win32 Extensions, mit der MFC vielleicht. Aber der Aufwand für so'n winziges Icon ... ;-)
Jan

Verfasst: Samstag 20. Dezember 2003, 11:13
von Pythonaya
Hi Voges,
ich habe es in einem anderen Pythonprogramm zum torrent-downloading gesehen...

Kann sein, dass datt nich mit Python alleine geht...
aber irgendwie muss es gehen!

Hier ist die Seite von dem oben genannten Prog (ABC):
http://pingpong-abc.sourceforge.net/download.html

Ich hoffe ihr könnt mir helfen,
Florian

Verfasst: Samstag 20. Dezember 2003, 11:21
von Voges
Hallo!
Pythonaya hat geschrieben:Hier ist die Seite von dem oben genannten Prog (ABC):
http://pingpong-abc.sourceforge.net/download.html
Ich seh' da gar nichts von Tkinter. Auf der Homepage steht "Powered by : Python, wxPython, ...".

Jan

Verfasst: Samstag 20. Dezember 2003, 11:27
von Pythonaya
lad dir einfach mal den Quellcode runter!!!
Es gibt da insgesamt 4 Prozeduren für minimize to tray...

Verfasst: Samstag 20. Dezember 2003, 11:49
von Voges
Hallo!
Pythonaya hat geschrieben:Es gibt da insgesamt 4 Prozeduren für minimize to tray...
Und hast Du sie Dir angeguckt? Da kommt kein Tkinter zum Einsatz. wxPython-Funktionen sind da für das Tray-Handling verantwortlich.
Jan

Verfasst: Sonntag 21. Dezember 2003, 13:39
von Pythonaya
Naja,
hab bisher nur Erfahrungen mit Python...
Daher hab ich den Rest nich wirklich verstanden...

Hmpf, muss mal wxpython runterladen und datt dann probieren.

Danke für die "Aufklährung" *ggg*

Florian

Verfasst: Dienstag 27. Juli 2004, 14:20
von Patrick
Gehts denn jetzt wirklich nicht so ohne weiteres?

Verfasst: Dienstag 27. Juli 2004, 22:40
von DER Olf
hm...

du brauchst die WinAPI dazu ;)

ich hab das zwar noch nie gemacht, aber du könntest eine DLL schreiben, die das kapselt, und diese DLL von deinem python programm importieren lassen.

mfg Olf

Verfasst: Mittwoch 28. Juli 2004, 08:42
von Patrick
Wie kann ich denn eine DLL-Datei importieren in python?
Es gibt ja schon genug fertige DLL-Bibliotheken.

Verfasst: Mittwoch 28. Juli 2004, 12:01
von DER Olf
na wie wohl?

Code: Alles auswählen

import MyDll
unter linux geht das übrigens auch mit .so dateien ;)

mfg Olf

Verfasst: Mittwoch 28. Juli 2004, 12:14
von Patrick
So kann ich leider nicht auf die DLL-Bibliothek zugreifen.

Wie ich bereits gelesen habe, gibts dafuer auch ein DLLInterface, was ich mir bereits runtergeladen habe, aber beim Ausfuehren vermisst er das Modul calldll, was ich nirgends im Netz runterladen kann.

Verfasst: Mittwoch 28. Juli 2004, 14:11
von DER Olf
afaik muss die .dll einen gewissen aufbau haben, mit einer init funktion.

mfg Olf

Verfasst: Mittwoch 28. Juli 2004, 15:23
von Christopy
Auf dlls kannst Du mit ctypes zugreifen.
Ein Tray-Icon kann man afaik mit Shell_NotifyIcon() aus shell32.dll erstellen.
Ganz so einfach wirds aber vermutlich nicht sein, der Teufel wird im Detail stecken. Wenn ich Zeit finde versuche ich mich auch mal daran...

Verfasst: Donnerstag 29. Juli 2004, 08:51
von Patrick
Folgendermaßen habe ichs jetzt gemacht:

Code: Alles auswählen

import sys
import os
import win32con
from win32api import *
from win32gui import *
from ctypes import *

hinst =  GetModuleHandle(None)
iconPathName = "C:\Programme\Python23\Lib\img\plone.ico"
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
hicon = LoadImage(hinst, iconPathName, win32con.IMAGE_ICON, 0, 0, icon_flags)
flags = NIF_ICON | NIF_MESSAGE | NIF_TIP
nid = (tk, 0, flags, win32con.WM_USER+20, hicon, "Plone")
print windll.shell32.Shell_NotifyIcon(NIM_ADD,nid)
Folgende Fehlermeldung bekomme ich allerdings:
print windll.shell32.Shell_NotifyIcon(NIM_ADD,nid)
TypeError: while constructing argument 2:
Don't know how to convert parameter 2
Weiss einer, was er von mir will?
Ist doch alles schick. :?:

Verfasst: Donnerstag 29. Juli 2004, 11:22
von Christopy
Die Struktur NOTIFYICONDATA kannst Du nicht einfach als Liste übergeben. Wie man Strukturen mit ctypes korrekt anlegt wird im Tutorial beschrieben. Ein imo wirklich hilfreiches Beispiel findet man hier. Dort wird mittels ctypes und der Windows API ein einfaches Fenster erzeugt.

Wenn wxPython zum Einsatz kommen soll (imo empfehlenswert ;) ) kann man hier ein Beispiel finden.