[wxPython] Fenstertransparenz über GaugeCtrl regeln

Code-Stücke können hier veröffentlicht werden.
Antworten
ThinkPad
User
Beiträge: 8
Registriert: Freitag 28. November 2008, 21:59

Mir war etwas langweilig und ich habe hier mal etwas mit dem GaugeCtrl von wxPython rumgespielt.

Allerdings hat das ganze noch nen kleinen Bug, und zwar geht der Transparenzwert nur bis 255, das GaugeCtrl hat aber eine länge von 370. Keine Zeit gehabt, das jetzt zu lösen, wenn jemand Lust hat wäre schön wenn er den Code hier postet.

Vielleicht kann das ganze ja einer mal gebrauchen ;)

Getestet mit Windows XP, Python 2.5 und wxPython 2.8.

Code: Alles auswählen

# -*- coding: UTF-8 -*-

# Die Transparenz des Fensters lässt sich über das GaugeCtrl steuern
#
# Titel:    GaugeCtrl Transparenz
# Version:  0.8.5
# Lizenz:   GPL v3.0 <http://www.gnu.de/documents/gpl.de.html>
# Author:   F. Pollmann
# Email:    <fpollmann@cyclesoft.de>
# Datum:    28.11.2008 - 22:25 Uhr

import wx

class AppFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, wx.Size(400, 300),
                          style = wx.MINIMIZE_BOX | wx.CLOSE_BOX  | wx.SYSTEM_MENU | wx.CAPTION)
        
        self.panel = wx.Panel(self, -1)
        self.SetTransparent(255)
        
        # Gauge erstellen
        self.gauge = wx.Gauge(self.panel, -1, 50, (10, 50), (370, 25), style = wx.GA_SMOOTH )
        self.gauge.SetRange(370)
        self.gauge.SetValue(370)
        
        # Mausevents abfangen
        wx.EVT_LEFT_DOWN(self.gauge, self.OnLeftButtonDown)
        wx.EVT_LEFT_UP(self.gauge, self.OnLeftButtonUp)
        wx.EVT_MOTION(self.gauge, self.OnMotion)
        
        # Variablen mit vorgegebenen Werten deklarieren
        self.mouse_down = False
        self.mouse_position = 0
        
    ''' Linke Maustaste wird gedrückt '''
    def OnLeftButtonDown(self, event):
        self.mouse_down = True
        try:
            self.mouse_position = event.GetX()
            self.gauge.SetValue(self.mouse_position)
            self.SetTransparent(event.GetX())
            self.SetTitle(str(event.GetX()) + " %")
        except:
            pass

    ''' Linke Maustaste wird losgelassen '''
    def OnLeftButtonUp(self, event):
        self.mouse_down = False
     
    ''' Mauszeiger wird bewegt '''    
    def OnMotion(self, event):
        if self.mouse_down == True:
            try:
                self.mouse_position = event.GetX()
                self.gauge.SetValue(self.mouse_position)
                self.SetTransparent(event.GetX())
                self.SetTitle(str(event.GetX()) + " %")
            except:
                pass


class MyApp(wx.App):
    def OnInit(self):
        frame = AppFrame(None, -1, title)
        frame.Show(True)
        return True

# Hauptprogramm
if __name__ == '__main__':
    title = 'Transparenz Test'
    app = MyApp(False)
    app.MainLoop()
Antworten