Gesucht wird ein Programm das im Systray läuft und periodisch nach neuen E-Mails schaut und bei neuen E-Mails das Icon im Systray ändert.
Dieses Programm lässt das Icon im Sekundentakt blinken.
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import sys
from PyQt5 import QtCore
from PyQt5 import QtWidgets
from PyQt5.QtGui import QIcon
# das sind Standard-Icon-Bezeichnungen
ICON_MAIL_NEW = 'face-cool'
ICON_MAIL_EMTPY = 'mail-mark-read'
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.canExit = False
self.initUI()
app.setWindowIcon(QIcon.fromTheme(ICON_MAIL_EMTPY))
self.isNewMail = True
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.checkNewMail)
self.timer.start(1000)
def initUI(self):
self.bbCheckMail = QtWidgets.QAction(QIcon.fromTheme(ICON_MAIL_NEW), 'Check for Mail')
self.bbCheckMail.setCheckable(True)
self.bbCheckMail.triggered[bool].connect(self.displayNewMail)
self.toolbar = self.addToolBar('tb')
self.toolbar.addAction(self.bbCheckMail)
layout = QtWidgets.QGridLayout()
plain = QtWidgets.QPlainTextEdit()
layout.addWidget(plain, 0, 0)
centralWidget = QtWidgets.QWidget()
centralWidget.setLayout(layout)
self.setCentralWidget(centralWidget)
# SystemTrayIcon ersstellen
self.icon = QtWidgets.QSystemTrayIcon(QIcon.fromTheme(ICON_MAIL_NEW))
self.icon.show()
menu = QtWidgets.QMenu(parent=None)
menu.aboutToShow.connect(self.sysTrayAction)
self.icon.setContextMenu(menu)
self.setGeometry(300, 300, 300, 300)
# kein Show(), da dass Programm im Hintergrund laufen soll.
# self.show()
def closeEvent(self, event):
# do stuff
if self.canExit:
event.accept() # let the window close
else:
# Das Programm wird erst beim zweiten closeEvent geschlossen.
self.canExit = True
self.hide()
event.ignore()
def displayNewMail(self, active):
if active:
aIcon = QIcon.fromTheme(ICON_MAIL_NEW)
else:
aIcon = QIcon.fromTheme(ICON_MAIL_EMTPY)
self.bbCheckMail.setIcon(aIcon)
app.setWindowIcon(aIcon)
self.icon.setIcon(aIcon)
def checkNewMail(self):
self.isNewMail = not self.isNewMail
self.displayNewMail(self.isNewMail)
def sysTrayAction(self):
self.show()
print('System tray icon clicked.')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MWindow = MainWindow()
sys.exit(app.exec_())
Das Schwierigste an der Entwicklung von KDE-Anwendungen ist bei der Recherche herauszubekommen, ob die in den Weiten des Internets gefundenen Beispiele auch noch für die aktuelle KDE-Version gültig sind.
Ich arbeite zur Zeit mit:
Literatur
1) Download 2019-07-10-raspbian-buster-lite.zip 2) Entpacken 2019-07-10-raspbian-buster-lite.img 3) Auf SD-Card mit usb-creator-gtk 4) Da später per ssh auf den raspi zugegriffen werden soll, in der root partition eine datei ssh anlegen, dann wird der ssh-server beim hochfahren mit gestartet. 5) SD-Card im Raspi einlegen und lange warten 6) Login über angesteckte Tastatur mit user pi password raspberry (Achtung die Tastatur spricht qwerty) deshalb rasberrz eingeben 7) Passwort ändern passwd pi Password is too simple Deshalb als root ausführen: sudo su passwd pi 7) ssh aktivieren sudo systemctl enable ssh sudo systemctl start ssh 8) 7"-Bildschirm um 180° drehen sudo nano /boot/config.txt lcd_rotate=2 9) Soundkarte aktivieren und On-Board-Sound deaktivieren sudo nano /boot/config.txt dtoverlay=hifiberry-dacplus
10) mocp für die Soundkarte hifiberry-dacplus einrichten nano .moc/config ALSAStutterDefeat=yes ALSAMixer1=Digital 11) mocp testen mocp -S mocp -a http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3 mocp --play mocp -i 12) Bildschirm dunkel schalten sudo nano /boot/config.txt
hdmi_blanking=1
oder
sudo sh -c "echo '255' >> /sys/class/backlight/rpi_backlight/brightness"
Bildschirm hell schalten
sudo sh -c "echo '0' >> /sys/class/backlight/rpi_backlight/brightness"
13) WLAN einrichten sudo iwlist wlan0 scan | egrep "(ESSID|IEEE)" ESSID:"FritzBoxFlur" IE: IEEE 802.11i/WPA2 Version 1 sudo nano /etc/wpa_supplicant/wpa_supplicant.conf network={ ssid="FritzBoxFlur" psk="DasWlanPasswort" }
Tags: RaspiEin Schreck in der Morgenstunde:
Wollen Sie die neue Programmversion für VMware Workstation 15.5 installieren? Ja. Ich will. Aber die Installation will nicht: bora/lib/string/str.c:284 Buffer too small
Hier im Heiseforum steht die Lösung.
$ sudo LC_ALL=C ./VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle
Tags:
Vorbereitung
Im Totalcommander FTP einrichten
Anmelden im CMS Drupal7
Neuer Artikel
Bilder bearbeiten
Bilder hochladen
Bilder im Artikel anzeigen
![](https://www.wlsoft.de/bilder/2014/saxionade_test_01.jpg)
zeigt das soeben hochgeladen Bild an
( Oder in diesem Fall nicht weil das Bild nicht hochgeladen wurde. ;-)
Texy!-Syntax
---- horizontale Linie
**Fettschrift**
[Bitte bei der Freien Presse weiterlesen](http;//www.freiepresse.de)
"Weitere Fotos":?q=node/1148
Tags: Drupal7
MEINserver Service - Logmeldungen werden über TEventLogger ausgegeben.
Damit die Ereignisanzeige nicht mit den Worten beginnt:
Die Beschreibung für die Ereignis-ID "0" aus der Quelle "MEINserver" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem lokalen Computer installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren. Falls das Ereignis auf einem anderen Computer aufgetreten ist, mussten die Anzeigeinformationen mit dem Ereignis gespeichert werden. Die folgenden Informationen wurden mit dem Ereignis gespeichert:
muss eine res-Datei erstellt und für die Ereignisanzeige zur Verfügung gestellt werden.
Die Datei meinServer_Message.mc erstellen. (Bitte den Punkt und die Leerzeile nach jedem beachten)
LanguageNames=(German=0x407:MSG00407)
MessageId=0x2
SymbolicName=Kategorie_1
Language=German
Kategorie 1
.
MessageId=0x10
SymbolicName=MSG_SERVER_MELDUNG
Language=German
MEINserver: %1
.
Mit Hilfe von mc.exe und brcc32.exe die Datei meinServer_Message.res erzeugen. (mc.exe stammt aus dem Microsoft Windows 10 SDK)
@"c:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\mc.exe" meinServer_Message.mc
@brcc32 meinServer_Message.rc -fo meinServer_Message.res
@pause
Die Resourcendatei im Projekt einbinden
program meinServer;
uses
SvcMgr,
...
tools_web in '..\tools\tools_web.pas';
{$R *.res}
{$R meinServer_Message.res}
begin
if not SvcMgr.Application.DelayInitialize or SvcMgr.Application.Installing then
SvcMgr.Application.Initialize;
SvcMgr.Application.CreateForm(TmeinServe, meinServer);
SvcMgr.Application.Run;
end.
Beim Setup des Services muss die Message-Datei in die Registry eingetragen werden:
const
cEventLogger_MEINserver = 'MEINserver';
cEventLogger_MEINserver_Category = $02;
cEventLogger_MEINserver_ID = $20;
procedure WriteRegistryFuerEventlog(reg: TRegistry);
const
REG_CategoryCount = 'CategoryCount';
REG_TypesSupported = 'TypesSupported';
REG_EventMessageFile = 'EventMessageFile';
REG_CategoryMessageFile = 'CategoryMessageFile';
cCategoryCount = 1;
cTypesSupported = 0;
var
aMessageFile: string
begin
aMessageFile := ExtractFilePath(Application.ExeName) + 'meinServer.exe';
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey('SYSTEM\CurrentControlSet\Services\Eventlog\Application\' + cEventLogger_MEINserver, True) then
begin
if reg.ValueExists(REG_CategoryCount) then
begin
if reg.ReadInteger(REG_CategoryCount) <> cCategoryCount then
reg.WriteInteger(REG_CategoryCount, cCategoryCount);
end
else
begin
reg.WriteInteger(REG_CategoryCount, cCategoryCount);
end;
if reg.ValueExists(REG_TypesSupported) then
begin
if reg.ReadInteger(REG_TypesSupported) <> cTypesSupported then
reg.WriteInteger(REG_TypesSupported, cTypesSupported);
end
else
begin
reg.WriteInteger(REG_TypesSupported, cTypesSupported);
end;
if reg.ValueExists(REG_EventMessageFile) then
begin
if reg.ReadString(REG_EventMessageFile) <> aMessageFile then
reg.WriteString(REG_EventMessageFile, aMessageFile);
end
else
begin
reg.WriteString(REG_EventMessageFile, aMessageFile);
end;
if reg.ValueExists(REG_CategoryMessageFile) then
begin
if reg.ReadString(REG_CategoryMessageFile) <> aMessageFile then
reg.WriteString(REG_CategoryMessageFile, aMessageFile);
end
else
begin
reg.WriteString(REG_CategoryMessageFile, aMessageFile);
end;
end
else
begin
abort;
end;
end;
Anzeige der Meldungen in der Power-Shell
Get-EventLog -LogName Application -Source HEIMserver | format-table -wrap
Literatur
Tags:Literatur
Tags: Fritzbox