Hallo...
ich hab mich mal gefragt, ob man diesen schicken bunten Rahmen nicht komplett als Fenster darstellen und direkt "bemalen" bzw "beschreiben" koennte...
M$-Programme wie der WMP nutzen dieses transparente-schicke Zeugs ja auch fuer ihre Toolleisten usw.
Kann man sowas in wxPython oä vielleicht auch realisieren?
Vista Rahmen
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
habmich auch n bissl bloed ausgedrueckt...
Die Frage bezieht sich ja eher auf die Moeglichkeit, direkt die WindowsAPIs zum Fensteraufbau zu nutzen, damit man eben diesen "Glas-Rahmen" auch direkt bemalen kann...
Die Frage bezieht sich ja eher auf die Moeglichkeit, direkt die WindowsAPIs zum Fensteraufbau zu nutzen, damit man eben diesen "Glas-Rahmen" auch direkt bemalen kann...
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also in WMP 7 war die Transparenz ein Usability-Horror. Aber Transparenz insgesammt bekommst du wenn nicht mit wxPython alleine, dann sicher mit dem Modul ``win32gui`` und/oder ctypes hin.nkoehring hat geschrieben:M$-Programme wie der WMP nutzen dieses transparente-schicke Zeugs ja auch fuer ihre Toolleisten usw.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ach echt? Ja tolle Bockwurst, gut zu wissen, dann brauch ich ja erst gar net anfangen mit wxPython ne GUI zu erstellen.Leonidas hat geschrieben:Also in WMP 7 war die Transparenz ein Usability-Horror. Aber Transparenz insgesammt bekommst du wenn nicht mit wxPython alleine, dann sicher mit dem Modul ``win32gui`` und/oder ctypes hin.nkoehring hat geschrieben:M$-Programme wie der WMP nutzen dieses transparente-schicke Zeugs ja auch fuer ihre Toolleisten usw.
Kann mir jemand sagen ob ich mit PyQt sowohl unter Xp, Vista + Linux
solch ähnlichen transparent GUIs erstellen kann?
Möchte halt GUIs erstellen mit Style, und nich den Standard 0815 Kram benutzen.
MfG
Das solltest Du nicht von Toolkits erwarten, die plattformübergreifend benutzbare GUIs anbieten wollen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Aufgezwungene Transparenz hat keinen Stil, das hat höchstens Nerv-Faktor. Ich als User will nicht, dass mein Desktop durch das Fenster zu sehen ist - wenn ich das wollte dann würde ich Compiz und Murrine nutzen.skypa hat geschrieben:Möchte halt GUIs erstellen mit Style, und nich den Standard 0815 Kram benutzen.
Was Stil hat: dem User die Wahl lassen, wie er die Widgets angezeigt haben will.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hm das geht in Richtung dynamisches Design, das versuch ich im augenblick mit nem Kollegen als Webdesign Toolkit, bzw ist es eins der kommenden Projekte. Wird aber vermutlich in Javascript von uns geschrieben.
Naja, und son dynamisches Design hat ich später dann mal vor, wo man eben auch auf Transparenz umstellen kann und zu dem die Transparenz prozentual eben einstellen kann.
Kann mir denn mal einer sagen jetzt was ich am besten nehme?
wxPython oder PyQt?! oder was anders?!
Naja, und son dynamisches Design hat ich später dann mal vor, wo man eben auch auf Transparenz umstellen kann und zu dem die Transparenz prozentual eben einstellen kann.
Kann mir denn mal einer sagen jetzt was ich am besten nehme?
wxPython oder PyQt?! oder was anders?!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!skypa hat geschrieben:Transparenz
http://wxwidgets.org/manuals/stable/wx_ ... ransparent
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nkoehring!nkoehring hat geschrieben:Kann man sowas in wxPython oä vielleicht auch realisieren?
Ich habe kein Vista und kann dir nicht sagen, ob sich diese Threads wirklich um das drehen was du haben möchtest:
- http://thread.gmane.org/gmane.comp.pyth ... thon/48076
- http://thread.gmane.org/gmane.comp.pyth ... thon/48367
- http://thread.gmane.org/gmane.comp.pyth ... thon/46582
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
@skypa: Ich glaube das meinte Leonidas nicht damit. Der Benutzer soll nicht in jedem Programm irgendwas umstellen können/müssen, sondern zentral für alle. Wenn ich z.B. transparente Rahmen haben möchte, ist das eine Einstellung beim Fenstermanager und nicht bei einzelnen Applikationen. Und selbst wenn man das bei bestimmten Programmen ausschalten möchte ist das immer noch Aufgabe des Fenstermanagers. Anwendungsprogrammierer sollten sich nur um eine benutzbare GUI kümmern, sprich sinnvoll aufgeteilt, benutzbare Tab-Reihenfolge und Tastaturkürzel, und nicht um grafische Spielereien.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Versuchs mal mit KI-Programmierung. Ist sicherlich eine persönlich mehr bereichernde Erfahrung als transparente Fenster
Insgesamt findet man in der Theoretischen Informatik viele interessante Sachen, in die man sich einlesen könnte. Es wird nur leider oft schnell kompliziert.
Insgesamt findet man in der Theoretischen Informatik viele interessante Sachen, in die man sich einlesen könnte. Es wird nur leider oft schnell kompliziert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- nkoehring
- User
- Beiträge: 543
- Registriert: Mittwoch 7. Februar 2007, 17:37
- Wohnort: naehe Halle/Saale
- Kontaktdaten:
Hallo,
hab ganz vergessen zu posten, dass ich es geschafft habe per direktem DLL-Aufruf transparente Fenster zu erstellen.
Hier ein bissl Code. Urspruenglich wurde hier einfach per Win32-Extensions ein Fenster erstellt. Ich habe das Beispiel um Transparenz per DWMAPI erweitert.
hab ganz vergessen zu posten, dass ich es geschafft habe per direktem DLL-Aufruf transparente Fenster zu erstellen.
Hier ein bissl Code. Urspruenglich wurde hier einfach per Win32-Extensions ein Fenster erstellt. Ich habe das Beispiel um Transparenz per DWMAPI erweitert.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import win32gui
import win32con
import win32api
import ctypes
import struct
class win32Window(object):
def __init__(self):
self.g_registeredClass = 0
win32gui.InitCommonControls()
self.message_map = {}
self.hinst = win32api.GetModuleHandle(None)
def _RegisterWndClass(self):
className = "testApp"
if not self.g_registeredClass:
wc = win32gui.WNDCLASS()
wc.SetDialogProc() # Make it a dialog class.
self.hinst = wc.hInstance = win32api.GetModuleHandle(None)
wc.lpszClassName = className
wc.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW
wc.hCursor = win32gui.LoadCursor( 0, win32con.IDC_ARROW )
wc.hbrBackground = win32con.COLOR_WINDOW + 1
wc.lpfnWndProc = self.message_map # could also specify a wndproc.
wc.cbWndExtra = win32con.DLGWINDOWEXTRA + struct.calcsize("Pi")
icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE
try:
wc.hIcon = win32gui.LoadImage(self.hinst,
g_iconPathName,
win32con.IMAGE_ICON,
0,
0,
icon_flags
)
except:
print "cannot find icon... using standard icon"
wc.hIcon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION)
classAtom = win32gui.RegisterClass(wc)
self.g_registeredClass = 1
return className
def _GetDialogTemplate(self, dlgClassName):
style = win32con.WS_THICKFRAME | \
win32con.WS_POPUP | \
win32con.WS_VISIBLE | \
win32con.WS_CAPTION | \
win32con.WS_SYSMENU | \
win32con.DS_SETFONT | \
win32con.WS_MINIMIZEBOX
cs = win32con.WS_CHILD | win32con.WS_VISIBLE
title = "TestWindow"
dlg = [
[
title,
(20, 20, 210, 250),
style,
None,
(8, "MS Sans Serif"),
None,
dlgClassName
],
]
#self.hinst = win32api.GetModuleHandle(None)
#win32gui.CreateDialogIndirect(hinst, dlg, 0, self.message_map)
return dlg
def DoModal(self):
message_map = {
win32con.WM_SIZE: self.OnSize,
#win32con.WM_COMMAND: self.OnCommand,
#win32con.WM_NOTIFY: self.OnNotify,
win32con.WM_INITDIALOG: self.OnInitDialog,
win32con.WM_CLOSE: self.OnClose,
win32con.WM_DESTROY: self.OnDestroy,
win32con.WM_ERASEBKGND: self.OnEraseBackground,
}
dlgClassName = self._RegisterWndClass()
template = self._GetDialogTemplate(dlgClassName)
return win32gui.DialogBoxIndirect(self.hinst, template, 0, message_map)
def OnInitDialog(self, hwnd, msg, wparam, lparam):
self.hwnd = hwnd
self.rect = win32gui.GetClientRect(hwnd)
print self.rect
# trying to usw dwmapi.dll to draw a glass client area
margins = struct.pack("@iiii", 0, 0, 0, 1500)
dwmapi = ctypes.windll.LoadLibrary("dwmapi")
dwmapi.DwmExtendFrameIntoClientArea(hwnd, margins)
def OnEraseBackground(self, *args):
# funny... we dont need to do anything here except ``return 1``
return 1
def OnClose(self, hwnd, msg, wparam, lparam):
win32gui.EndDialog(hwnd, 0)
def OnDestroy(self, hwnd, msg, wparam, lparam):
print "Window destroyed..."
win32gui.PostQuitMessage(0) # Terminate the app.
def OnSize(self, hwnd, msg, wparam, lparam):
x = win32api.LOWORD(lparam)
y = win32api.HIWORD(lparam)
return 1
def OnNotify(self, hwnd, msg, wparam, lparam):
format = "iiiiiiiiiii"
buf = win32gui.PyMakeBuffer(struct.calcsize(format), lparam)
hwndFrom, idFrom, code, iItem, iSubItem, uNewState, uOldState,\
uChanged, actionx, actiony, lParam = struct.unpack(format, buf)
code += 0x4f0000 # hrm - wtf - commctrl uses this, and it works with mfc. *sigh*
if code == commctrl.NM_DBLCLK:
print "Double click on item", iItem+1
return 1
if __name__ == '__main__':
win = win32Window()
win.DoModal()
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo nkoehring!
Zeile 33: Dieser Name existiert nicht.
lg
Gerold
PS: So einfach erstellt man ein Programm, das nur mehr mit Vista läuft.
Zeile 33: Dieser Name existiert nicht.
lg
Gerold
PS: So einfach erstellt man ein Programm, das nur mehr mit Vista läuft.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.