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
) 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!
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?
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.