-
Notifications
You must be signed in to change notification settings - Fork 0
/
toaster.py
84 lines (60 loc) · 2.9 KB
/
toaster.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from PyQt5.QtWidgets import (QMessageBox,QApplication, QWidget, QToolTip, QPushButton,
QDesktopWidget, QMainWindow, QAction, qApp, QToolBar, QVBoxLayout,
QComboBox,QLabel,QLineEdit,QGridLayout,QMenuBar,QMenu,QStatusBar,
QTextEdit,QDialog,QFrame,QProgressBar
)
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtGui import QIcon,QFont,QPixmap,QPalette
from PyQt5.QtCore import QCoreApplication, Qt,QBasicTimer
import sys, threading, configparser, time
import ctypes
class RefreshScheduler(QtCore.QThread):
refresh_signal = QtCore.pyqtSignal()
def __init__(self, delay):
QtCore.QThread.__init__(self)
self.delay = delay
def run(self):
while 1:
self.refresh_signal.emit()
time.sleep(self.delay)
class Toaster(QMainWindow):
def __init__(self):
super().__init__()
self.mwidget = QMainWindow(self)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Tool | QtCore.Qt.WindowStaysOnBottomHint)
self.loadConfig()
self.lbl = QLabel(self)
self.lbl.setFont(QFont(self.text_font, 15, QFont.StyleItalic))
self.lbl.setStyleSheet("background-color: " + self.color_background + ";"
"border: 1px solid gray;"
"color: " + self.color_text)
scheduler = RefreshScheduler(self.refresh_delay)
scheduler.refresh_signal.connect(self.loadText)
scheduler.start()
self.show()
def loadConfig(self):
config = configparser.ConfigParser()
config.read('wallpaper.ini')
self.description_path = config.get("Files", "description_path", fallback="wallpaper.txt");
self.refresh_delay = config.getint("Toaster", "refresh_delay", fallback=1800);
self.color_background = config.get("Toaster", "color_background", fallback="#FFFFFF");
self.color_text = config.get("Toaster", "color_text", fallback="#000000");
self.text_font = config.get("Toaster", "font", fallback="Consolas");
def loadText(self):
with open(self.description_path) as f:
description = f.read()
if (len(description) == 0):
description = "No description"
screen_width=ctypes.windll.user32.GetSystemMetrics(0)
# screen_height=ctypes.windll.user32.GetSystemMetrics(1)
self.lbl.setText(description)
width = self.lbl.fontMetrics().boundingRect(self.lbl.text()).width()+20
height = self.lbl.fontMetrics().boundingRect(self.lbl.text()).height()+2
self.lbl.setGeometry(0, 0,width,height)
#size
self.resize(width, height)
self.move(screen_width - width, 0)
app = QApplication(sys.argv)
app.setStyleSheet("QMainWindow{background-color: transparent;border: 1px solid black}")
ex = Toaster()
sys.exit(app.exec_())